2nd DSTU Draft For Comment

This page is part of the FHIR Specification (v0.4.0: DSTU 2 Draft). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2

4.15 Resource MedicationAdministration - Content

This resource maintained by the Pharmacy Work Group

Describes the event of a patient consuming or otherwise being administered a medication. This may be as simple as swallowing a tablet or it may be a long running infusion. Related resources tie this event to the authorizing prescription, and the specific encounter between patient and health care practitioner.

4.15.1 Scope and Usage

This resource covers the administration of all medications with the exception of vaccines. It will principally be used within inpatient settings to record the capture of medication administrations including self-administrations of oral medications, injections, intra-venous adjustments, etc. It can also be used in out-patient settings to record allergy shots and other non-immunization administrations. In some cases it might be used for home-health reporting, such as recording self-administered or even device-administered insulin.

4.15.2 Boundaries and Relationships

The Medication domain includes a number of related resources

MedicationPrescription An order for both supply of the medication and the instructions for administration of the medicine to a patient.
MedicationDispense Provision of a supply of a medication with the intention that it is subsequently consumed by a patient (usually in response to a prescription).
MedicationAdministration When a patient actually consumes a medicine, or it is otherwise administered to them
MedicationStatement This is a record of medication being taken by a patient, or that the medication has been given to a patient where the record is the result of a report from the patient, or another clinician. A medication statement is not a part of the prescribe->dispense->administer sequence but is a report that such a sequence (or at least a part of it) did take place resulting in a belief that the patient has received a particular medication.

MedicationAdministration is intended for tracking the administration of non-vaccine medications. Administration of vaccines is intended to be handled using the Immunization resource. Some systems treat immunizations in the same way as any other medication administration. Such systems SHOULD use an immunization resource to represent these. If systems need to use a MedicationAdministration resource to capture vaccinations for workflow or other reasons, they SHOULD also expose an equivalent Immunization instance.

This resource is referenced by Condition and Procedure

4.15.3 Resource Content

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationAdministration DomainResourceAdministration of medication to a patient
... identifier 0..*IdentifierExternal identifier
... status 1..1codein-progress | on-hold | completed | entered-in-error | stopped
MedicationAdministrationStatus (Required)
... patient 1..1PatientWho received medication?
... practitioner 0..1PractitionerWho administered substance?
... encounter 0..1EncounterEncounter administered as part of
... prescription 0..1MedicationPrescriptionOrder administration performed against
... wasNotGiven M0..1booleanTrue if medication not administered
... reasonNotGiven I0..*CodeableConceptReason administration not performed
MedicationAdministrationNegationReason (Example)
Reason not given is only permitted if wasNotGiven is true
... reasonGiven I0..*CodeableConceptReason administration performed
MedicationAdministrationReason (Example)
Reason given is only permitted if wasNotGiven is false
... effectiveTime[x] Start and end time of administration
.... effectiveTimeDateTime1..1dateTime
.... effectiveTimePeriod1..1Period
... medication 0..1MedicationWhat was administered?
... device 0..*DeviceDevice used to administer
... note 0..1stringInformation about the administration
... dosage I0..1ElementDetails of how medication was taken
SHALL have at least one of dosage.quantity and dosage.rate
.... text 0..1stringDosage Instructions
.... site 0..1CodeableConceptBody site administered to
MedicationAdministrationSite (Example)
.... route 0..1CodeableConceptPath of substance into body
RouteOfAdministration (Example)
.... method 0..1CodeableConceptHow drug was administered
MedicationAdministrationMethod (Example)
.... quantity 0..1QuantityAmount administered in one dose
.... rate 0..1RatioDose quantity per unit of time

UML Diagram

MedicationAdministration (DomainResource)External identifier - FHIR will generate its own internal IDs (probably URLs) which do not need to be explicitly managed by the resource. The identifier here is one that would be used by another non-FHIR system - for example an automated medication pump would provide a record each time it operated; an administration while the patient was off the ward might be made with a different system and entered after the event. Particularly important if these records have to be updatedidentifier : Identifier 0..*Will generally be set to show that the administration has been completed. For some long running administrations such as infusions it is possible for an administration to be started but not completed or it may be paused while some other process is under waystatus : code 1..1 « A set of codes indicating the current status of a MedicationAdministrationMedicationAdministrationStatus »The person or animal to whom the medication was givenpatient : Reference(Patient) 1..1The individual who was responsible for giving the medication to the patientpractitioner : Reference(Practitioner) 0..1The visit or admission the or other contact between patient and health care provider the medication administration was performed as part ofencounter : Reference(Encounter) 0..1The original request, instruction or authority to perform the administrationprescription : Reference(MedicationPrescription) 0..1Set this to true if the record is saying that the medication was NOT administered (this element modifies the meaning of other elements)wasNotGiven : boolean 0..1A code indicating why the administration was not performedreasonNotGiven : CodeableConcept 0..* « (A set of codes indicating the reason why the MedicationAdministration is negated.MedicationAdministrationNegationReason) »A code indicating why the medication was givenreasonGiven : CodeableConcept 0..* « (A set of codes indicating the reason why the MedicationAdministration was made.MedicationAdministrationReason) »An interval of time during which the administration took place (or did not take place, when the 'notGiven' attribute is true). For many administrations, such as swallowing a tablet the use of dateTime is more appropriateeffectiveTime[x] : dateTime|Period 1..1Identifies the medication that was administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medicationsmedication : Reference(Medication) 0..1The device used in administering the medication to the patient. E.g. a particular infusion pumpdevice : Reference(Device) 0..*Extra information about the medication administration that is not conveyed by the other attributesnote : string 0..1DosageFree text dosage instructions can be used for cases where the instructions are too complex to code. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medicationtext : string 0..1A coded specification of the anatomic site where the medication first entered the body. E.g. "left arm"site : CodeableConcept 0..1 « (A coded concept describing the site location the medicine enters into or onto the bodyMedicationAdministrationSite) »A code specifying the route or physiological path of administration of a therapeutic agent into or onto the patient. E.g. topical, intravenous, etcroute : CodeableConcept 0..1 « (A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.RouteOfAdministration) »A coded value indicating the method by which the medication was introduced into or onto the body. Most commonly used for injections. Examples: Slow Push; Deep IV. Terminologies used often pre-coordinate this term with the route and or form of administrationmethod : CodeableConcept 0..1 « (A coded concept describing the technique by which the medicine is administeredMedicationAdministrationMethod) »The amount of the medication given at one administration event. Use this value when the administration is essentially an instantaneous event such as a swallowing a tablet or giving an injectionquantity : Quantity 0..1Identifies the speed with which the medication was introduced into the patient. Typically the rate for an infusion e.g. 200ml in 2 hours. May also expressed as a rate per unit of time such as 100ml per hour - the duration is then not specified, or is specified in the quantityrate : Ratio 0..1Indicates how the medication is/was used by the patientdosage0..1

XML Template

<MedicationAdministration xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <identifier><!-- 0..* Identifier External identifier --></identifier>
 <status value="[code]"/><!-- 1..1 in-progress | on-hold | completed | entered-in-error | stopped -->
 <patient><!-- 1..1 Reference(Patient) Who received medication? --></patient>
 <practitioner><!-- 0..1 Reference(Practitioner) Who administered substance? --></practitioner>
 <encounter><!-- 0..1 Reference(Encounter) Encounter administered as part of --></encounter>
 <prescription><!-- 0..1 Reference(MedicationPrescription) 
     Order administration performed against --></prescription>
 <wasNotGiven value="[boolean]"/><!-- 0..1 True if medication not administered -->
 <reasonNotGiven><!-- ?? 0..* CodeableConcept Reason administration not performed --></reasonNotGiven>
 <reasonGiven><!-- ?? 0..* CodeableConcept Reason administration performed --></reasonGiven>
 <effectiveTime[x]><!-- 1..1 dateTime|Period Start and end time of administration --></effectiveTime[x]>
 <medication><!-- 0..1 Reference(Medication) What was administered? --></medication>
 <device><!-- 0..* Reference(Device) Device used to administer --></device>
 <note value="[string]"/><!-- 0..1 Information about the administration -->
 <dosage>  <!-- 0..1 Details of how medication was taken -->
  <text value="[string]"/><!-- 0..1 Dosage Instructions -->
  <site><!-- 0..1 CodeableConcept Body site administered to --></site>
  <route><!-- 0..1 CodeableConcept Path of substance into body --></route>
  <method><!-- 0..1 CodeableConcept How drug was administered --></method>
  <quantity><!-- 0..1 Quantity Amount administered in one dose --></quantity>
  <rate><!-- 0..1 Ratio Dose quantity per unit of time --></rate>
 </dosage>
</MedicationAdministration>

JSON Template

{doco
  "resourceType" : "MedicationAdministration",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // External identifier
  "status" : "<code>", // R! in-progress | on-hold | completed | entered-in-error | stopped
  "patient" : { Reference(Patient) }, // R! Who received medication?
  "practitioner" : { Reference(Practitioner) }, // Who administered substance?
  "encounter" : { Reference(Encounter) }, // Encounter administered as part of
  "prescription" : { Reference(MedicationPrescription) }, // 
     Order administration performed against
  "wasNotGiven" : <boolean>, // True if medication not administered
  "reasonNotGiven" : [{ CodeableConcept }], // C? Reason administration not performed
  "reasonGiven" : [{ CodeableConcept }], // C? Reason administration performed
  // effectiveTime[x]: Start and end time of administration. One of these 2:
  "effectiveTimeDateTime" : "<dateTime>",
  "effectiveTimePeriod" : { Period },
  "medication" : { Reference(Medication) }, // What was administered?
  "device" : [{ Reference(Device) }], // Device used to administer
  "note" : "<string>", // Information about the administration
  "dosage" : { // Details of how medication was taken
    "text" : "<string>", // Dosage Instructions
    "site" : { CodeableConcept }, // Body site administered to
    "route" : { CodeableConcept }, // Path of substance into body
    "method" : { CodeableConcept }, // How drug was administered
    "quantity" : { Quantity }, // Amount administered in one dose
    "rate" : { Ratio } // Dose quantity per unit of time
  }
}

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationAdministration DomainResourceAdministration of medication to a patient
... identifier 0..*IdentifierExternal identifier
... status 1..1codein-progress | on-hold | completed | entered-in-error | stopped
MedicationAdministrationStatus (Required)
... patient 1..1PatientWho received medication?
... practitioner 0..1PractitionerWho administered substance?
... encounter 0..1EncounterEncounter administered as part of
... prescription 0..1MedicationPrescriptionOrder administration performed against
... wasNotGiven M0..1booleanTrue if medication not administered
... reasonNotGiven I0..*CodeableConceptReason administration not performed
MedicationAdministrationNegationReason (Example)
Reason not given is only permitted if wasNotGiven is true
... reasonGiven I0..*CodeableConceptReason administration performed
MedicationAdministrationReason (Example)
Reason given is only permitted if wasNotGiven is false
... effectiveTime[x] Start and end time of administration
.... effectiveTimeDateTime1..1dateTime
.... effectiveTimePeriod1..1Period
... medication 0..1MedicationWhat was administered?
... device 0..*DeviceDevice used to administer
... note 0..1stringInformation about the administration
... dosage I0..1ElementDetails of how medication was taken
SHALL have at least one of dosage.quantity and dosage.rate
.... text 0..1stringDosage Instructions
.... site 0..1CodeableConceptBody site administered to
MedicationAdministrationSite (Example)
.... route 0..1CodeableConceptPath of substance into body
RouteOfAdministration (Example)
.... method 0..1CodeableConceptHow drug was administered
MedicationAdministrationMethod (Example)
.... quantity 0..1QuantityAmount administered in one dose
.... rate 0..1RatioDose quantity per unit of time

UML Diagram

MedicationAdministration (DomainResource)External identifier - FHIR will generate its own internal IDs (probably URLs) which do not need to be explicitly managed by the resource. The identifier here is one that would be used by another non-FHIR system - for example an automated medication pump would provide a record each time it operated; an administration while the patient was off the ward might be made with a different system and entered after the event. Particularly important if these records have to be updatedidentifier : Identifier 0..*Will generally be set to show that the administration has been completed. For some long running administrations such as infusions it is possible for an administration to be started but not completed or it may be paused while some other process is under waystatus : code 1..1 « A set of codes indicating the current status of a MedicationAdministrationMedicationAdministrationStatus »The person or animal to whom the medication was givenpatient : Reference(Patient) 1..1The individual who was responsible for giving the medication to the patientpractitioner : Reference(Practitioner) 0..1The visit or admission the or other contact between patient and health care provider the medication administration was performed as part ofencounter : Reference(Encounter) 0..1The original request, instruction or authority to perform the administrationprescription : Reference(MedicationPrescription) 0..1Set this to true if the record is saying that the medication was NOT administered (this element modifies the meaning of other elements)wasNotGiven : boolean 0..1A code indicating why the administration was not performedreasonNotGiven : CodeableConcept 0..* « (A set of codes indicating the reason why the MedicationAdministration is negated.MedicationAdministrationNegationReason) »A code indicating why the medication was givenreasonGiven : CodeableConcept 0..* « (A set of codes indicating the reason why the MedicationAdministration was made.MedicationAdministrationReason) »An interval of time during which the administration took place (or did not take place, when the 'notGiven' attribute is true). For many administrations, such as swallowing a tablet the use of dateTime is more appropriateeffectiveTime[x] : dateTime|Period 1..1Identifies the medication that was administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medicationsmedication : Reference(Medication) 0..1The device used in administering the medication to the patient. E.g. a particular infusion pumpdevice : Reference(Device) 0..*Extra information about the medication administration that is not conveyed by the other attributesnote : string 0..1DosageFree text dosage instructions can be used for cases where the instructions are too complex to code. When coded instructions are present, the free text instructions may still be present for display to humans taking or administering the medicationtext : string 0..1A coded specification of the anatomic site where the medication first entered the body. E.g. "left arm"site : CodeableConcept 0..1 « (A coded concept describing the site location the medicine enters into or onto the bodyMedicationAdministrationSite) »A code specifying the route or physiological path of administration of a therapeutic agent into or onto the patient. E.g. topical, intravenous, etcroute : CodeableConcept 0..1 « (A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.RouteOfAdministration) »A coded value indicating the method by which the medication was introduced into or onto the body. Most commonly used for injections. Examples: Slow Push; Deep IV. Terminologies used often pre-coordinate this term with the route and or form of administrationmethod : CodeableConcept 0..1 « (A coded concept describing the technique by which the medicine is administeredMedicationAdministrationMethod) »The amount of the medication given at one administration event. Use this value when the administration is essentially an instantaneous event such as a swallowing a tablet or giving an injectionquantity : Quantity 0..1Identifies the speed with which the medication was introduced into the patient. Typically the rate for an infusion e.g. 200ml in 2 hours. May also expressed as a rate per unit of time such as 100ml per hour - the duration is then not specified, or is specified in the quantityrate : Ratio 0..1Indicates how the medication is/was used by the patientdosage0..1

XML Template

<MedicationAdministration xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <identifier><!-- 0..* Identifier External identifier --></identifier>
 <status value="[code]"/><!-- 1..1 in-progress | on-hold | completed | entered-in-error | stopped -->
 <patient><!-- 1..1 Reference(Patient) Who received medication? --></patient>
 <practitioner><!-- 0..1 Reference(Practitioner) Who administered substance? --></practitioner>
 <encounter><!-- 0..1 Reference(Encounter) Encounter administered as part of --></encounter>
 <prescription><!-- 0..1 Reference(MedicationPrescription) 
     Order administration performed against --></prescription>
 <wasNotGiven value="[boolean]"/><!-- 0..1 True if medication not administered -->
 <reasonNotGiven><!-- ?? 0..* CodeableConcept Reason administration not performed --></reasonNotGiven>
 <reasonGiven><!-- ?? 0..* CodeableConcept Reason administration performed --></reasonGiven>
 <effectiveTime[x]><!-- 1..1 dateTime|Period Start and end time of administration --></effectiveTime[x]>
 <medication><!-- 0..1 Reference(Medication) What was administered? --></medication>
 <device><!-- 0..* Reference(Device) Device used to administer --></device>
 <note value="[string]"/><!-- 0..1 Information about the administration -->
 <dosage>  <!-- 0..1 Details of how medication was taken -->
  <text value="[string]"/><!-- 0..1 Dosage Instructions -->
  <site><!-- 0..1 CodeableConcept Body site administered to --></site>
  <route><!-- 0..1 CodeableConcept Path of substance into body --></route>
  <method><!-- 0..1 CodeableConcept How drug was administered --></method>
  <quantity><!-- 0..1 Quantity Amount administered in one dose --></quantity>
  <rate><!-- 0..1 Ratio Dose quantity per unit of time --></rate>
 </dosage>
</MedicationAdministration>

JSON Template

{doco
  "resourceType" : "MedicationAdministration",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // External identifier
  "status" : "<code>", // R! in-progress | on-hold | completed | entered-in-error | stopped
  "patient" : { Reference(Patient) }, // R! Who received medication?
  "practitioner" : { Reference(Practitioner) }, // Who administered substance?
  "encounter" : { Reference(Encounter) }, // Encounter administered as part of
  "prescription" : { Reference(MedicationPrescription) }, // 
     Order administration performed against
  "wasNotGiven" : <boolean>, // True if medication not administered
  "reasonNotGiven" : [{ CodeableConcept }], // C? Reason administration not performed
  "reasonGiven" : [{ CodeableConcept }], // C? Reason administration performed
  // effectiveTime[x]: Start and end time of administration. One of these 2:
  "effectiveTimeDateTime" : "<dateTime>",
  "effectiveTimePeriod" : { Period },
  "medication" : { Reference(Medication) }, // What was administered?
  "device" : [{ Reference(Device) }], // Device used to administer
  "note" : "<string>", // Information about the administration
  "dosage" : { // Details of how medication was taken
    "text" : "<string>", // Dosage Instructions
    "site" : { CodeableConcept }, // Body site administered to
    "route" : { CodeableConcept }, // Path of substance into body
    "method" : { CodeableConcept }, // How drug was administered
    "quantity" : { Quantity }, // Amount administered in one dose
    "rate" : { Ratio } // Dose quantity per unit of time
  }
}

 

Alternate definitions: Schema/Schematron, Resource Profile (XML, JSON), Questionnaire

4.15.3.1 Terminology Bindings

PathDefinitionTypeReference
MedicationAdministration.status A set of codes indicating the current status of a MedicationAdministrationFixedhttp://hl7.org/fhir/medication-admin-status
MedicationAdministration.reasonNotGiven A set of codes indicating the reason why the MedicationAdministration is negated.Examplehttp://hl7.org/fhir/vs/reason-medication-not-given-codes
MedicationAdministration.reasonGiven A set of codes indicating the reason why the MedicationAdministration was made.Examplehttp://hl7.org/fhir/vs/reason-medication-given-codes
MedicationAdministration.dosage.site A coded concept describing the site location the medicine enters into or onto the bodyExamplehttp://hl7.org/fhir/vs/approach-site-codes
MedicationAdministration.dosage.route A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.Examplehttp://hl7.org/fhir/vs/route-codes
MedicationAdministration.dosage.method A coded concept describing the technique by which the medicine is administeredExamplehttp://hl7.org/fhir/vs/administration-method-codes

4.15.3.2 Constraints

  • mad-1: On MedicationAdministration.dosage: SHALL have at least one of dosage.quantity and dosage.rate (xpath on f:MedicationAdministration/f:dosage: exists(f:quantity) or exists(f:rate))
  • mad-2: On MedicationAdministration.reasonNotGiven: Reason not given is only permitted if wasNotGiven is true (xpath on f:MedicationAdministration/f:reasonNotGiven: not(exists(f:reasonNotGiven) and f:wasNotGiven/@value='false'))
  • mad-3: On MedicationAdministration.reasonGiven: Reason given is only permitted if wasNotGiven is false (xpath on f:MedicationAdministration/f:reasonGiven: not(exists(f:reasonGiven) and f:wasNotGiven/@value='true'))

4.15.4 Known Issues

Issue Comments
Medication Resource A medication will typically be referred to by means of a code drawn from a suitable Medicines Terminology. However on occasion a product will be required for which the "recipe" must be specified. This implies a requirement to deal with a choice of either a code or a much more complete resource.
Currently that resource has not been created.
Encounter Administration records are usually tied to some wider grouping of care records. Encounter or Episode of Care is a common name for this. The present MedicationAdministration resource (and the other three yet to be built) link to an Encounter as an identifier, but it may be more appropriate for it to be a full resource.
Contrast Media Is this resource adequate for administering contrast media to a patient?
Author (accountability) Authorship (and any other accountability) is assumed to be dealt with by the standard FHIR methods.

4.15.5 Search Parameters

Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionPaths
devicereferenceReturn administrations with this administration device identityMedicationAdministration.device
(Device)
effectivetimedateDate administration happened (or did not happen)MedicationAdministration.effectiveTime[x]
encounterreferenceReturn administrations that share this encounterMedicationAdministration.encounter
(Encounter)
identifiertokenReturn administrations with this external identityMedicationAdministration.identifier
medicationreferenceReturn administrations of this medicationMedicationAdministration.medication
(Medication)
notgiventokenAdministrations that were not madeMedicationAdministration.wasNotGiven
patientreferenceThe identity of a patient to list administrations forMedicationAdministration.patient
(Patient)
prescriptionreferenceThe identity of a prescription to list administrations fromMedicationAdministration.prescription
(MedicationPrescription)
statustokenMedicationAdministration event status (for example one of active/paused/completed/nullified)MedicationAdministration.status