Healthcare Integration-9 min read

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.

Ala Ben Aicha

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

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:

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. Map only when the contract says so.
  4. Read the handbook for access, headers and search prefixes (authoredon, whenhandedover). The HL7 FHIR R4 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

For mapping work against NLL, use HL7 FHIR integration or start a project.

FHIRSwedenNLLNational Medication ListE-hälsomyndighetenpersonnummerMedicationRequest

Related reading and services

Let's Continue the Conversation

Have questions about this topic? I'd love to hear from you.

Get in Touch

🍪 Do you like cookies?

Allow analytics cookies to help understand site visits and enquiries? Optional analytics stays off until you accept.

Learn More