# Swedish National Medication List: NLL FHIR is not a generic MedicationRequest

> The Swedish National Medication List is a live FHIR R4 API from E-hälsomyndigheten. Pin package 1.3.1 (release 21.18). Personnummer is the named identifier system. NLL profiles are not unconstrained MedicationRequest.

Author: Ala Ben Aicha

Canonical page: https://alabenaicha.me/insights/fhir-se-national-medication-list

Updated: 2026-09-19

## Direct answer

The Swedish National Medication List is a live FHIR R4 API. Pin se.electronichealth.fhir.nll.r4 1.3.1 (NLL 21.18). Personnummer uses <http://electronichealth.se/identifier/personnummer>. NLLMedicationRequest is not a generic MedicationRequest.

## Pin the live package, not “Swedish FHIR”

Nationella läkemedelslistan (NLL) is operated by E-hälsomyndigheten (the Swedish eHealth Agency). The external API is FHIR R4. The agency publishes versioned packages on Simplifier and a matching implementation guide. On write day (19 September 2026) the latest public package is:

* Package: `se.electronichealth.fhir.nll.r4` **1.3.1** (created 31 August 2026)
* IG: Swedish National Medication List **release 21.18**
* Canonical claim: `http://electronichealth.se/fhir/`
* Guide: [simplifier.net/guide/swedishnationalmedicationlist-current](https://simplifier.net/guide/swedishnationalmedicationlist-current)
* Handbook: [Handbok för vård- och apotekstjänster](https://samarbetsyta.ehalsomyndigheten.se/handboken/latest/utveckla-mot-e-haelsomyndighetens-tjaenster/information-stoed-och-krav-per-delsystem/nationella-laekemedelslistan-nll/stoed-vid-implementation-nll/generell-beskrivning-av-fhir)

Earlier package 1.0.3 is not current. Pin 1.3.1 (or whichever version the buyer’s environment names) in the package lock and re-validate when E-hälsomyndigheten publishes the next sequence.

| NLL profile (IG name)     | FHIR resource      | What the IG maps                                               | What it is not                                                            |
| ------------------------- | ------------------ | -------------------------------------------------------------- | ------------------------------------------------------------------------- |
| **NLLPatient**            | Patient            | Patient registered in NLL; personnummer slice `identifier:pnr` | Not a national EHR Patient, not an embedded-only identity when pnr exists |
| **NLLMedicationRequest**  | MedicationRequest  | A prescription (förskrivning) in NLL                           | Not a local hospital order, not EU MPD by default                         |
| **NLLMedicationDispense** | MedicationDispense | A dispense (uttag) in NLL                                      | Not a ward administration event                                           |
| **NLLMedication**         | Medication         | Medicinal product as NLL profiles it                           | Not an unconstrained Medication resource                                  |

NLL also profiles Provenance, named queries such as `latest-dispense`, and print/sort code systems. Those are NLL API behaviour, not generic R4 extras you can skip.

## The identifier: personnummer

Country-specific identifier on NLLPatient is the Swedish personal identity number (personnummer), slice `identifier:pnr`:

`http://electronichealth.se/identifier/personnummer`

Twelve digits, no hyphen (`swe-id-rule`). Skatteverket assigns it. NLL examples use **Skatteverket test identity numbers**, not production persons; those test persons are normally absent from NLL test environments. Do not publish a real personnummer. Keep the system URL and a dummy twelve-digit value in fixtures.

When a personnummer is missing, NLLPatient is a **contained** resource identified by name and birthDate. Do not invent a personnummer to avoid contained Patient.

## What to implement first

1. If the buyer is connecting to **NLL**: package `se.electronichealth.fhir.nll.r4#1.3.1` (or the version on the target environment), NLLPatient + NLLMedicationRequest + NLLMedicationDispense as the IG maps them, personnummer system as above.
2. If the buyer wants a **Swedish base Patient** outside NLL: that is HL7 Sweden Base (`SEBasePatient`), a different IG. Do not ship NLL profiles as a national core.
3. For EHDS ePrescription / eDispensation, NLL is a national medication-list API, not automatically [HL7 Europe MPD](https://alabenaicha.me/insights/fhir-eu-core-ehds-implementation). Map only when the contract says so.
4. Read the handbook for access, headers and search prefixes (`authoredon`, `whenhandedover`). The [HL7 FHIR R4 guide](https://alabenaicha.me/insights/hl7-fhir-integration-guide) does not document NLL search rules.

## What this is not

This article is not NLL connection approval, not an E-hälsomyndigheten certificate, not a pharmacy licence, and not legal advice. Implementing NLL profiles in a lab does not authorise production calls. I do not operate NLL test or production access. Personnummer is cited only as an identifier system. Nothing here is clinical or prescribing advice.

## Related reading

* [EU Core and EHDS](https://alabenaicha.me/insights/fhir-eu-core-ehds-implementation)
* [HL7 FHIR R4 integration](https://alabenaicha.me/insights/hl7-fhir-integration-guide)
* [FHIR implementation guides by country](https://alabenaicha.me/insights/fhir-implementation-guides-by-country)

For mapping work against NLL, use [HL7 FHIR integration](https://alabenaicha.me/services/hl7-fhir-integration) or [start a project](https://alabenaicha.me/contact?intent=project).
