Electronic prescription in FHIR

Electronic prescription is a priority category of the European Health Data Space (Article 14(1) point (b) of Regulation (EU) 2025/327). It applies from March 26, 2029. HL7 Europe covers it with mpd 1.0.0.

Regulation
Regulation (EU) 2025/327, Article 14(1)(b), Annex I
Applies from
March 26, 2029
HL7 Europe guides
hl7.fhir.eu.mpd 1.0.0, published
Xt-EHR logical models
EHDSMedicationPrescription
Validator
Open the EHDS profile validator

What the Regulation says

Annex I of the Regulation describes the main characteristics of this category. The text is the English original.

Electronic prescriptions

Electronic health data constituting a prescription for a medicinal product as defined in Article 3, point (k), of Directive 2011/24/EU.

FHIR profiles 3

Profiles defined by the guides above. The rules column counts the elements where the profile goes beyond base FHIR (required, forbidden or limited), which the validator checks; of the slices, only the required ones that a fixed value or the resource type identifies are checked.

ProfileResourceHL7 Europe guideRules checkedSlices checked / defined
Medication: MPDhttp://hl7.eu/fhir/mpd/StructureDefinition/Medication-eu-mpd
Medicationmpd00 / 12
MedicationDispense: MPDhttp://hl7.eu/fhir/mpd/StructureDefinition/MedicationDispense-eu-mpd
MedicationDispensempd20 / 3
MedicationRequest: MPDhttp://hl7.eu/fhir/mpd/StructureDefinition/MedicationRequest-eu-mpd
MedicationRequestmpd20 / 7

Terminology bindings 0

Value sets that the profiles of this category bind elements to with a required or extensible binding. A required binding only allows codes of the value set; an extensible one expects them unless none fits. Value sets that the HL7 Europe packages define are listed with their codes in the value set reference.

The profiles of this category state no required or extensible binding of their own. The profiles also state 0 preferred and 4 example bindings.

Extensions 1

HL7 Europe extensions that the profiles of this category carry, with the element that holds each one.

ExtensionContextValueUsed in
Medication: Package typehttp://hl7.eu/fhir/StructureDefinition/medication-package-type
Medication
CodeableConcept
MedicationEuMpd extension:packageType 0..1

Logical model EHDSMedicationPrescription 30

Elements of the Xt-EHR logical model with their cardinality and obligations. Obligations tell producers and consumers of the data what a system SHALL or SHOULD do with each element.

Obligations by actor

How many elements of EHDSMedicationPrescription carry each obligation for each actor.

ObligationActorElements
SHALL:able-to-populateproducer11
SHALL:processconsumer11
SHOULD:able-to-populateproducer5
SHOULD:displayconsumer2
SHOULD:processconsumer3

Elements 30

ElementCard.ObligationsDescription
header1..1
Prescription header
subject1..1
SHALL:able-to-populate producerSHALL:process consumer
System SHALL process the patient information for identification purposes.
The person for whom the medication is prescribed/ordered. [Used for searching]
identifier1..*
SHALL:able-to-populate producer
For a single-item prescription these identifiers SHALL match prescriptionItem.identifier.
SHALL:process consumer
System SHALL use this prescription identifier for reference in the dispense record.
Business identifier(s) for the prescription. [Used for searching]
author[x]1..*
SHALL:able-to-populate producer
System SHALL support at least EHDSHealthProfessional data type for the element.
SHALL:process consumer
The prescriber, the person who made the prescription, and who takes the responsibility for the treatment. [Used for searching]
date1..1
SHALL:able-to-populate producerSHALL:process consumer
Time of issuing (signing) the prescription by health care professional. [Used for searching]
status1..1
SHALL:able-to-populate producerSHALL:process consumer
System SHALL process the prescription status together with other information to determine dispensability.
Status of authorisation for dispensing the prescription items. This should not be the status of treatment. For a multiple-item prescription, this conveys the aggregate status of the entire prescription. In case of a single-item prescription, prescriptionItem.status shall be the same as EHDSMedicationPrescription.header.status. [Used for searching]
source0..0
Source of information (e.g. patient, patient's proxy). Used in case the patient has authored the information or the author has submitted patient-stated information.
language0..1
Language in which the resource is written. Language is expressed by the IETF language tag.
statusReason[x]0..1
Reason for the current status of prescription, for example the reason why the prescription was made invalid or changed from a previous state.
presentedForm0..*
SHOULD:able-to-populate producer
System SHOULD be able to provide a rendered, human-readable version of the prescription.
SHOULD:display consumer
Entire prescription as issued. Various formats could be provided, PDF format is recommended.
prescriptionItem1..*
SHALL:able-to-populate producerSHALL:process consumer
Prescription line for one medication. In many countries, only one item is allowed and there shall be no expectation to be able to manage multiple items. In case multiple medications are allowed, all items need to be authored together.
identifier1..*
SHALL:able-to-populate producer
For a single-item prescription these identifiers SHALL match .identifier.
SHALL:process consumer
System SHALL use this prescription identifier for reference in the dispense record.
Identifier for a single item on prescription, if exists. In case of single-item prescription, this identifier is typically the same as prescription identifier. [Used for searching]
status1..1
SHALL:able-to-populate producerSHALL:process consumer
System SHALL process the prescription status together with other information to determine dispensability.
Status of a single item of a multi-item prescription. In case of single-item prescriptions, the status of prescription has the same meaning as the status of the item. [Used for searching]
statusReason[x]0..1
Reason for the current status of prescription, for example the reason why the prescription was made invalid or why the prescription was changed from previous
medication1..1
SHALL:able-to-populate producerSHALL:process consumer
Prescribed product, branded, generic, virtual, extemporal, etc
indication[x]0..*
Reason for the prescription (typically diagnosis, or a procedure)
intendedUseType0..1
Intent of the prescription - prophylaxis, treatment, anesthesia, etc
periodOfUse0..1
Period over which the medication is to be taken (in case of multiple dosage schemes, this would be the overall period of all dosages.)
quantityPrescribed0..1
SHOULD:able-to-populate producerSHOULD:process consumer
Overall quantity of prescribed product (e.g number of packages or number of tablets).
dosageInstructions1..1
SHALL:able-to-populate producerSHALL:process consumer
Dosage and administration instructions
validityPeriod0..1
SHOULD:able-to-populate producerSHOULD:process consumer
The period over which the prescription is considered valid and dispensable. validityPeriod.start is, if missing, is assumed to be the date of issuing the prescription.
substitution0..1
SHOULD:able-to-populate producerSHOULD:process consumer
Whether and which type of substitution is allowed for this prescription. The legislation in the country of dispense applies, e.g. if this information is missing.
allowed[x]0..1
SHALL:able-to-populate producer
System SHALL support at least the boolean data type.
SHALL:process consumer
System SHALL support at least the boolean data type.
Whether and to what extent substitution is allowed.
reason[x]0..1
Reason for the substitution requirement (e.g. Biological product, Patient allergic to an excipient in alternative products, etc)
numberOfRepeats0..1
Number of refills authorised - how many times the prescription item can be dispensed in addition to the original dispense. The default value is 0 (no repeats).
minimumDispenseInterval0..1
Minimum dispense interval. If a prescription allows for repeated dispensations, the interval between dispensations shall be stated here.
offLabel0..1
Indicates that the prescriber has knowingly prescribed the medication for an indication, age group, dosage, or route of administration that is not approved by the regulatory agencies and is not mentioned in the prescribing information for the drug
isOffLabelUse1..1
Indicates off-label use. Must be 'true' when .reason is provided.
reason[x]0..*
Reason or related clarification for off-label use
note0..1
SHOULD:able-to-populate producerSHOULD:display consumer
Additional information or comments, e.g. message to the dispenser

Mapping of EHDSMedicationPrescription to FHIR 29

How each logical element lands in FHIR, as published in the HL7 Europe guide. Mapped to: MedicationRequestEuMpd.

ElementRelationFHIR resourceFHIR elementNotes
headerrelated toMedicationRequest.Backbone element
subjectequivalentMedicationRequestsubjectReference to Patient.
identifiernarrower than targetMedicationRequestidentifierPrescription identifier and prescription item identifier are usually the same in environments using single-item prescriptions.
identifiernarrower than targetMedicationRequestgroupIdentifierUse as the shared prescription identifier for MedicationRequest instances that belong to the same multi-item prescription.
author[x]equivalentMedicationRequestrequester
dateequivalentMedicationRequestauthoredOn
statusequivalentMedicationRequeststatus
statusReason[x]equivalentMedicationRequeststatusReasonThe model also allows string data type which maps to CodeableConcept.text , but note element may also be used for additional clarifications.
presentedFormno mappingMedicationRequestReference a DocumentReference containing the rendered prescription.
prescriptionItemequivalentMedicationRequest.Create one MedicationRequest per prescription item.
identifierequivalentMedicationRequestidentifier
statusequivalentMedicationRequeststatusFor single-item prescriptions, same meaning as header.status.
statusReason[x]equivalentMedicationRequeststatusReasonThe model also allows string data type which maps to CodeableConcept.text , but note element may also be used for additional clarifications.
medicationequivalentMedicationRequestmedication[x] 〔R4〕 medication 〔R5〕
indication[x]equivalentMedicationRequestreasonCode 〔R4〕 reason 〔R5〕The model also allows string data type which maps to CodeableConcept.text , but note element may also be used for additional clarifications.
intendedUseTypenarrower than targetMedicationRequestcategoryUse dedicated category code or custom extension if additional granularity is required.
periodOfUserelated toMedicationRequestextension:effectiveDosePeriod 〔R4〕 effectiveDosePeriod 〔R5〕
quantityPrescribedequivalentMedicationRequestdispenseRequest.extension:prescribedQuantity
dosageInstructionsequivalentMedicationRequestdosageInstructionMap each EHDSDosage entry to dosageInstruction .
validityPeriodequivalentMedicationRequestdispenseRequest.validityPeriod
substitutionequivalentMedicationRequestsubstitution
allowed[x]equivalentMedicationRequestsubstitution.allowed[x]The guide requires support for at least Boolean data type.
reason[x]equivalentMedicationRequestsubstitution.reasonThe model also allows string data type which maps to CodeableConcept.text , but note element may also be used for additional clarifications.
numberOfRepeatsequivalentMedicationRequestdispenseRequest.numberOfRepeatsAllowed
minimumDispenseIntervalequivalentMedicationRequestdispenseRequest.dispenseInterval
offLabelrelated toMedicationRequestextension:offLabelUse
isOffLabelUserelated toMedicationRequestextension:offLabelUse
reason[x]related toMedicationRequestextension:offLabelUse.reasonThe model also allows string data type which maps to CodeableConcept.text , but note element may also be used for additional clarifications.
noteequivalentMedicationRequestnote.textUse note.author / note.time if available.

CDA documents (eHDSI)

The same category is carried in CDA by these eHDSI document templates. Their structure, value sets and a validator for CDA documents are in the CDA guide.

Sources

Regulation (EU) 2025/327, Official Journal of the European Union; HL7 Europe FHIR implementation guides; Xt-EHR logical models (xtehr.eu.ehds.models). Ballot guides may still change. This guide is informational: it is not legal advice and not a certification of conformity.