Sending a Dispensation

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

A full example can be found here.

The dispensation Bundle

The labo's 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..1EPLabDispense
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..1EPLabDispenseLine
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..1EPPatient
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
  • The patient

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..1uriPattern
versionΣ0..0string
codeΣ1..1codePattern
displayΣ0..0string
userSelectedΣ0..0boolean
id0..0string
extensionC0..*Extension
id0..1string
extensionC0..*Extension
systemΣ1..1uriPattern
versionΣ0..0string
codeΣ1..1codePattern
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)
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 Task 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
instantiatesCanonicalΣ0..0canonical(ActivityDefinition)
instantiatesUriΣ0..0uri
id0..0string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..0uriBinding
identifierΣ0..0Identifier
displayΣ0..0string
groupIdentifierΣ0..0Identifier
partOfΣ C0..0Reference(Task)
statusΣ ?!1..1codeBindingFixed Value
statusReasonΣ0..0CodeableConcept
businessStatusΣ0..0CodeableConcept
intentΣ1..1codeBindingFixed Value
priority0..0codeBinding
id0..0string
extensionC0..*Extension
id0..0string
extensionC0..*Extension
systemΣ1..1uriPattern
versionΣ0..0string
codeΣ1..1codePattern
displayΣ0..0string
userSelectedΣ0..0boolean
textΣ0..0string
descriptionΣ0..0string
focusΣ C0..0Reference(Resource)
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
executionPeriodΣ C0..0Period
authoredOnC1..1dateTime
lastModifiedΣ C0..0dateTime
requesterΣ C0..0Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
performerType0..0CodeableConceptBinding
id0..0string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..0uriBinding
identifierΣ0..0Identifier
displayΣ0..0string
locationΣ C0..0Reference(Location)
reasonCode0..0CodeableConcept
reasonReferenceC0..0Reference(Resource)
insuranceC0..0Reference(ClaimResponse | Coverage)
note0..0Annotation
relevantHistoryC0..0Reference(Provenance)
id0..0string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
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
valueIntegerinteger

Task.basedOn SHALL reference the ServiceRequest (prescription line) and Task.encounter reference 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.

Blocking a prescription

The decision taken by the labs during the GT FLLAM of November 11th 2022, is to treat the dispensation as a whole. As such, when a lab intend to do the analysis from the prescription, it has to block the whole prescription, and if not realized, unblock it in the 24h. There is no automatic system on the server side. The functional details are under the responsibility of the lab.

From a FHIR perspective, it means sending a dispensation Bundle with a Task for each line having the same output.valueInteger as the quantity prescribed. The consequence is that the next lab that takes this prescription will calculate a rest to do of 0 for each line. Then, 2 possibilities :

  • Everything went fine, nothinf to do
  • You want to unblock the prescription, then send a output.valueInteger with a negative value for each line.

The patient

The patient is a resource of type Patient:

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
IdentityQualityC1..1Extension(code)
modifierExtension?! C0..*Extension
id0..0string
extensionC0..*Extension
useΣ ?!0..0codeBinding
typeΣ1..1CodeableConceptBindingPattern
systemΣ1..1uriFixed Value
valueΣ C1..1string
periodΣ C0..0Period
assignerΣ C0..0Reference(Organization)
id0..0string
extensionC0..*Extension
useΣ ?!0..0codeBinding
typeΣ1..1CodeableConceptBindingFixed Value
systemΣ1..1uri
valueΣ1..1string
periodΣ C0..0Period
assignerΣ C0..0Reference(Organization)
activeΣ ?!0..0boolean
id0..0string
extensionC0..*Extension
useΣ ?!0..0codeBinding
textΣ0..0string
familyΣ1..1string
givenΣ1..1string
prefixΣ0..0string
suffixΣ0..0string
periodΣ C0..0Period
telecomΣ C0..0ContactPoint
genderΣ1..1codeBinding
birthDateΣ1..1date
id0..0string
extensionC0..*Extension
useΣ ?!0..0codeBinding
typeΣ0..0codeBinding
textΣ0..0string
lineΣ0..2string
cityΣ0..1string
districtΣ0..0string
stateΣ0..0string
postalCodeΣ0..1string
countryΣ C0..1string
periodΣ C0..0Period
maritalStatus0..0CodeableConceptBinding
photoC0..0Attachment
generalPractitionerC0..0Reference(Organization | Practitioner | PractitionerRole)
managingOrganizationΣ C0..0Reference(Organization)
It contains the patient information as known by the lab.