Sending a dispensation

A dispensation is a resource of type Bundle containing an Encounter for the dispensation and several MedicationDispense as dispensation lines.

A full example can be found here.

The dispensation Bundle

The pharmacy software creates a transaction Bundle:

idΣ0..1id
id0..0string
extensionC0..*Extension
versionIdΣ0..0id
lastUpdatedΣ0..0instant
sourceΣ0..0uri
profileΣ1..1canonical(StructureDefinition)Fixed Value
securityΣ0..0CodingBinding
tagΣ0..0Coding
implicitRulesΣ ?!0..0uri
language0..0codeBinding
identifierΣ0..0Identifier
typeΣ1..1codeBindingFixed Value
timestampΣ0..0instant
totalΣ C0..0unsignedInt
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
fullUrlΣ0..1uri
resourceΣ0..1Resource
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
modeΣ0..1codeBinding
scoreΣ0..1decimal
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
methodΣ1..1codeBinding
urlΣ1..1uri
ifNoneMatchΣ0..1string
ifModifiedSinceΣ0..1instant
ifMatchΣ0..1string
ifNoneExistΣ0..1string
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
statusΣ1..1string
locationΣ0..1uri
etagΣ0..1string
lastModifiedΣ0..1instant
outcomeΣ0..1Resource
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
fullUrlΣ C1..1uri
resourceΣ C1..1EPMedDispense
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
methodΣ1..1codeBindingFixed Value
urlΣ1..1uriFixed Value
ifNoneMatchΣ0..0string
ifModifiedSinceΣ0..0instant
ifMatchΣ0..0string
ifNoneExistΣ0..0string
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
fullUrlΣ C1..1uri
resourceΣ C1..1EPMedDispenseLine
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
methodΣ1..1codeBindingFixed Value
urlΣ1..1uriFixed Value
ifNoneMatchΣ0..0string
ifModifiedSinceΣ0..0instant
ifMatchΣ0..0string
ifNoneExistΣ0..0string
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
fullUrlΣ C0..0uri
resourceΣ1..1EPMedLineUpdate
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
methodΣ1..1codeBindingFixed Value
urlΣ C1..1uri
ifNoneMatchΣ0..0string
ifModifiedSinceΣ0..0instant
ifMatchΣ0..0string
ifNoneExistΣ0..0string
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
fullUrlΣ1..1uri
resourceΣ C1..1EPMedicationNoRef
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
methodΣ1..1codeBindingFixed Value
urlΣ1..1uriFixed Value
ifNoneMatchΣ0..0string
ifModifiedSinceΣ0..0instant
ifMatchΣ0..0string
ifNoneExistΣ0..0string
signatureΣ0..0Signature

The Bundle is a conatainer to provide all resources (in Bundle.entry) that are part of the dispensation, i.e.:

  • The dispensation document
  • Each dispensation line
  • If needed, an update to close a prescription line

The dispensation document

A dispensation document is represented by an Encounter included in a Bundle :

idΣ0..1id
id0..0string
extensionC0..*Extension
versionIdΣ0..0id
lastUpdatedΣ0..0instant
sourceΣ0..0uri
profileΣ1..1canonical(StructureDefinition)Fixed Value
securityΣ0..0CodingBinding
tagΣ0..0Coding
implicitRulesΣ ?!0..0uri
language0..0codeBinding
text0..0Narrative
contained0..0Resource
triggerC1..1Extension(Reference(EPLabPrescription))
modifierExtension?! C0..*Extension
identifierΣ1..1EPSimpleIdentifier
statusΣ ?!1..1codeBindingFixed Value
id0..0string
extensionC0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..0string
codeΣ1..1codeFixed Value
displayΣ0..0string
userSelectedΣ0..0boolean
id0..0string
extensionC0..*Extension
id0..1string
extensionC0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..0string
codeΣ1..1codeFixed Value
displayΣ0..0string
userSelectedΣ0..0boolean
textΣ0..0string
serviceTypeΣ0..0CodeableConcept
priority0..0CodeableConcept
id0..0string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..0uriBinding
identifierΣ0..0Identifier
displayΣ0..0string
episodeOfCareΣ C0..0Reference(EpisodeOfCare)
basedOnC0..0Reference(ServiceRequest)
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
typeΣ0..0CodeableConceptBinding
periodC0..0Period
id0..0string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..0uriBinding
identifierΣ0..0Identifier
displayΣ0..0string
appointmentΣ C0..0Reference(Appointment)
id0..0string
extensionC0..*Extension
startΣ C1..1dateTime
endΣ C1..1dateTime
lengthC0..0Duration
reasonCodeΣ0..0CodeableConceptBinding
reasonReferenceΣ C0..0Reference(Condition | ImmunizationRecommendation | Observation | Procedure)
accountC0..0Reference(Account)
id0..0string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..0uriBinding
identifierΣ0..0Identifier
displayΣ0..0string
partOfC0..0Reference(Encounter)

The Encounter essentially serves as a container for each dispensation line. It is present to facilitate the identification of dispensation events. Encounter.trigger (an extension) SHALL reference the associated prescription document.

The dispensation lines

Each MedicationDispense represents a dispensation line:

idΣ0..1id
id0..0string
extensionC0..*Extension
versionIdΣ0..0id
lastUpdatedΣ0..0instant
sourceΣ0..0uri
profileΣ1..1canonical(StructureDefinition)Fixed Value
securityΣ0..0CodingBinding
tagΣ0..0Coding
implicitRulesΣ ?!0..0uri
language0..0codeBinding
text0..0Narrative
contained0..0Resource
extensionC0..*Extension
modifierExtension?! C0..*Extension
identifier1..1EPSimpleIdentifier
partOfC0..0Reference(Procedure)
statusΣ ?!1..1codeBindingFixed Value
id0..0string
extensionC0..*Extension
id0..0string
extensionC0..*Extension
systemΣ1..1uriFixed Value
versionΣ0..0string
codeΣ1..1codeFixed Value
displayΣ0..0string
userSelectedΣ0..0boolean
textΣ0..0string
id0..0string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..0uriBinding
identifierΣ0..0Identifier
displayΣ0..0string
id0..0string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..0uriBinding
identifierΣ0..0Identifier
displayΣ0..0string
id0..0string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..0uriBinding
identifierΣ0..0Identifier
displayΣ0..0string
supportingInformationC0..0Reference(Resource)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
function0..1CodeableConcept
actorC1..1Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
function0..0CodeableConcept
id0..0string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ1..1uriBindingFixed Value
identifierΣ0..0Identifier
displayΣ0..0string
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
function0..0CodeableConcept
id0..0string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ1..1uriBindingFixed Value
identifierΣ0..0Identifier
displayΣ0..0string
locationC0..0Reference(Location)
id0..0string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..0uriBinding
identifierΣ0..0Identifier
displayΣ0..0string
type0..0CodeableConcept
id0..0string
extensionC0..*Extension
valueΣ0..1decimal
comparatorΣ ?!0..0codeBinding
unitΣ0..1string
systemΣ C0..1uri
codeΣ0..1code
daysSupplyC0..0SimpleQuantity
whenPreparedΣ0..0dateTime
whenHandedOver1..1dateTime
destinationC0..0Reference(Location)
receiverC0..0Reference(Patient | Practitioner)
dosageInstruction0..0Dosage
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
wasSubstituted1..1booleanFixed Value
type0..0CodeableConcept
reason0..0CodeableConcept
responsiblePartyC0..0Reference(Practitioner | PractitionerRole)
detectedIssueC0..0Reference(DetectedIssue)
eventHistoryC0..0Reference(Provenance)

MedicationDispense.authorizingPrescription SHALL reference the ServiceRequest (prescription line) and MedicationDispense.context references the dispensation document.

1 output element indicates the amount dispensed. This information is under the responsibility of the fulfiller and is present to help understand the history of the dispensations, and to help the next fulfiller claculate what is has to do.

The medication[x] element can refer either to a medication known in the referential, or to a free-text one. In this case, don't forget to add it in the Bundle.

In case of substitution (in the legal sense in Luxembourg), simply describe in the dispensation line what was actually given, link as usual with the original prescription line, and finally put the element MedicationDispense.substitution.wasSubstituted to true (do not provide it if there was no substitution).

Sometimes, 1 prescription line may lead to 2 dispensation lines. Example: Spiro comp. forte-ratiopharm (Furosemide 20mg + Spironolactone 100mg) 1/day at the morning is prescribed, and you dispense Aldactone 100mg (1/day) + Lasix 40mg (0,5/day). In this case, simply create 2 dispensation lines linked to the same prescription line (through authorizingPrescription). This is not a legal substitution so do not provide MedicationDispense.substitution.wasSubstituted.

Closing a prescription line

If a dispensation event closes one or several prescription line, the fulfiller SHALL update each ServiceRequest accordingly by providing a Parameters resource :

idΣ0..1id
id0..0string
extensionC0..*Extension
versionIdΣ0..0id
lastUpdatedΣ0..0instant
sourceΣ0..0uri
profileΣ1..1canonical(StructureDefinition)Fixed Value
securityΣ0..0CodingBinding
tagΣ0..0Coding
implicitRulesΣ ?!0..0uri
language0..0codeBinding
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
nameΣ1..1stringFixed Value
resourceΣ C0..0Resource
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
nameΣ1..1stringFixed Value
id0..0string
extensionC0..*Extension
value0..1System.String
resourceΣ C0..0Resource
partΣ0..0see (parameter)
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
nameΣ1..1stringFixed Value
id0..0string
extensionC0..*Extension
value0..1System.String
resourceΣ C0..0Resource
partΣ0..0see (parameter)
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
nameΣ1..1stringFixed Value
id0..0string
extensionC0..*Extension
value0..1System.String
resourceΣ C0..0Resource
partΣ0..0see (parameter)

As showed in the example, the Parameters resource is provided in Bundle.update and uses the PATCH method.

Note that this is a decision of the fulfiller, and it's possible even if there is left to dispense. Only the fulfiller knows the business rules allowing to close or not a prescription line. The ePrescription server will not automatically close a line where the left to dispense comes to 0, neither will it block when a line is closed even if there is left to dispense.

In exceptional cases, you may want to reopen a line. In this case, use "active" instead of "completed" for the status. Be careful about the inpact on the billing with CNS if you reopen a line.