STU 3 Ballot

This page is part of the FHIR Specification (v1.6.0: STU 3 Ballot 4). 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

11.3 Resource MedicationAdministration - Content

Pharmacy Work GroupMaturity Level: 1Compartments: Device, Encounter, Patient, Practitioner, RelatedPerson

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.

11.3.1 Scope and Usage

This resource covers the administration of all medications and vaccines. Please refer to the Immunization Resource/Profile for the treatment of vaccines. It will principally be used within care settings (including inpatient) 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.

MedicationAdministration is an event resource from a FHIR workflow perspective - see Workflow Event

11.3.2 Boundaries and Relationships

The Medication domain includes a number of related resources

MedicationOrder 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 a medication being taken by a patient or that a 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 create and expose an equivalent Immunization instance.

This resource is referenced by procedure

11.3.3 Resource Content

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationAdministration IDomainResourceAdministration of medication to a patient
Reason not given is only permitted if wasNotGiven is true
Reason given is only permitted if wasNotGiven is false
... identifier 0..*IdentifierExternal identifier
... status ?!Σ1..1codein-progress | on-hold | completed | entered-in-error | stopped
MedicationAdministrationStatus (Required)
... medication[x] Σ1..1What was administered
SNOMED CT Medication Codes (Example)
.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(Medication)
... patient Σ1..1Reference(Patient)Who received medication
... encounter 0..1Reference(Encounter)Encounter administered as part of
... effectiveTime[x] Σ1..1Start and end time of administration
.... effectiveTimeDateTimedateTime
.... effectiveTimePeriodPeriod
... performer 0..1Reference(Practitioner | Patient | RelatedPerson)Who administered substance
... prescription 0..1Reference(MedicationOrder)Order administration performed against
... wasNotGiven ?!Σ0..1booleanTrue if medication not administered
... reasonNotGiven I0..*CodeableConceptReason administration not performed
SNOMED CT Reason Medication Not Given Codes (Example)
... reasonGiven I0..*CodeableConceptReason administration performed
Reason Medication Given Codes (Example)
... device 0..*Reference(Device)Device used to administer
... note 0..*AnnotationInformation about the administration
... dosage I0..1BackboneElementDetails of how medication was taken
SHALL have at least one of dosage.dose and dosage.rate[x]
.... text 0..1stringFree text dosage instructions e.g. SIG
.... site[x] 0..1Body site administered to
SNOMED CT Anatomical Structure for Administration Site Codes (Example)
..... siteCodeableConceptCodeableConcept
..... siteReferenceReference(BodySite)
.... route 0..1CodeableConceptPath of substance into body
SNOMED CT Route Codes (Example)
.... method 0..1CodeableConceptHow drug was administered
SNOMED CT Administration Method Codes (Example)
.... dose 0..1SimpleQuantityAmount of medication per dose
.... rate[x] 0..1Dose quantity per unit of time
..... rateRatioRatio
..... rateQuantitySimpleQuantity
... eventHistory 0..*BackboneElementA list of events of interest in the lifecycle
.... status 1..1codein-progress | on-hold | completed | entered-in-error | stopped
MedicationAdministrationStatus (Required)
.... action 0..1CodeableConceptAction taken (e.g. verify)
.... dateTime 1..1dateTimeThe date at which the event happened
.... actor 0..1Reference(Practitioner)Who took the action
.... reason 0..1CodeableConceptReason the action was taken

doco Documentation for this format

UML Diagram (Legend)

MedicationAdministration (DomainResource)External identifier - FHIR will generate its own internal identifiers (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 way (this element modifies the meaning of other elements)status : code [1..1] « A set of codes indicating the current status of a MedicationAdministration. (Strength=Required)MedicationAdministrationStatus! »Identifies 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[x] : Type [1..1] « CodeableConcept|Reference(Medication); Codes identifying substance or product that can be administered. (Strength=Example) SNOMED CT Medication ?? »The person or animal receiving the medicationpatient : Reference [1..1] « Patient »The visit, admission or other contact between patient and health care provider the medication administration was performed as part ofencounter : Reference [0..1] « Encounter »A specific date/time or 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] : Type [1..1] « dateTime|Period »The individual who was responsible for giving the medication to the patientperformer : Reference [0..1] « Practitioner|Patient|RelatedPerson »The original request, instruction or authority to perform the administrationprescription : Reference [0..1] « MedicationOrder »Set 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..1]A code indicating why the administration was not performedreasonNotGiven : CodeableConcept [0..*] « A set of codes indicating the reason why the MedicationAdministration is negated. (Strength=Example)SNOMED CT Reason Medication N...?? »A code indicating why the medication was givenreasonGiven : CodeableConcept [0..*] « A set of codes indicating the reason why the MedicationAdministration was made. (Strength=Example)Reason Medication Given ?? »The device used in administering the medication to the patient. For example, a particular infusion pumpdevice : Reference [0..*] « Device »Extra information about the medication administration that is not conveyed by the other attributesnote : Annotation [0..*]DosageFree text dosage can be used for cases where the dosage administered is too complex to code. When coded dosage is present, the free text dosage may still be present for display to humans. The dosage instructions should reflect the dosage of the medication that was administeredtext : string [0..1]A coded specification of the anatomic site where the medication first entered the body. For example, "left arm"site[x] : Type [0..1] « CodeableConcept|Reference(BodySite); A coded concept describing the site location the medicine enters into or onto the body. (Strength=Example)SNOMED CT Anatomical Structur...?? »A code specifying the route or physiological path of administration of a therapeutic agent into or onto the patient. For example, 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. (Strength=Example)SNOMED CT Route ?? »A coded value indicating the method by which the medication is intended to be or was introduced into or on the body. This attribute will most often NOT be populated. It is most commonly used for injections. For example, Slow Push, Deep IVmethod : CodeableConcept [0..1] « A coded concept describing the technique by which the medicine is administered. (Strength=Example)SNOMED CT Administration Meth...?? »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 injectiondose : Quantity(SimpleQuantity) [0..1]Identifies the speed with which the medication was or will be introduced into the patient. Typically the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr. May also be expressed as a rate per unit of time e.g. 500 ml per 2 hours. Other examples: 200 mcg/min or 200 mcg/1 minute; 1 liter/8 hoursrate[x] : Type [0..1] « Ratio|Quantity(SimpleQuantity) »EventHistoryThe status for the eventstatus : code [1..1] « A set of codes indicating the current status of a MedicationAdministration. (Strength=Required)MedicationAdministrationStatus! »The action that was taken (e.g. verify)action : CodeableConcept [0..1]The date/time at which the event occurreddateTime : dateTime [1..1]The person responsible for taking the actionactor : Reference [0..1] « Practitioner »The reason why the action was takenreason : CodeableConcept [0..1]Describes the medication dosage information details e.g. dose, rate, site, route, etcdosage[0..1]A summary of the events of interest that have occurred, such as when the administration was verifiedeventHistory[0..*]

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 -->
 <medication[x]><!-- 1..1 CodeableConcept|Reference(Medication) What was administered --></medication[x]>
 <patient><!-- 1..1 Reference(Patient) Who received medication --></patient>
 <encounter><!-- 0..1 Reference(Encounter) Encounter administered as part of --></encounter>
 <effectiveTime[x]><!-- 1..1 dateTime|Period Start and end time of administration --></effectiveTime[x]>
 <performer><!-- 0..1 Reference(Practitioner|Patient|RelatedPerson) Who administered substance --></performer>
 <prescription><!-- 0..1 Reference(MedicationOrder) 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>
 <device><!-- 0..* Reference(Device) Device used to administer --></device>
 <note><!-- 0..* Annotation Information about the administration --></note>
 <dosage>  <!-- 0..1 Details of how medication was taken -->
  <text value="[string]"/><!-- 0..1 Free text dosage instructions e.g. SIG -->
  <site[x]><!-- 0..1 CodeableConcept|Reference(BodySite) Body site administered to --></site[x]>
  <route><!-- 0..1 CodeableConcept Path of substance into body --></route>
  <method><!-- 0..1 CodeableConcept How drug was administered --></method>
  <dose><!-- 0..1 Quantity(SimpleQuantity) Amount of medication per dose --></dose>
  <rate[x]><!-- 0..1 Ratio|Quantity(SimpleQuantity) Dose quantity per unit of time --></rate[x]>
 </dosage>
 <eventHistory>  <!-- 0..* A list of events of interest in the lifecycle -->
  <status value="[code]"/><!-- 1..1 in-progress | on-hold | completed | entered-in-error | stopped -->
  <action><!-- 0..1 CodeableConcept Action taken (e.g. verify) --></action>
  <dateTime value="[dateTime]"/><!-- 1..1 The date at which the event happened -->
  <actor><!-- 0..1 Reference(Practitioner) Who took the action --></actor>
  <reason><!-- 0..1 CodeableConcept Reason the action was taken --></reason>
 </eventHistory>
</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
  // medication[x]: What was administered. One of these 2:
  "medicationCodeableConcept" : { CodeableConcept },
  "medicationReference" : { Reference(Medication) },
  "patient" : { Reference(Patient) }, // R!  Who received medication
  "encounter" : { Reference(Encounter) }, // Encounter administered as part of
  // effectiveTime[x]: Start and end time of administration. One of these 2:
  "effectiveTimeDateTime" : "<dateTime>",
  "effectiveTimePeriod" : { Period },
  "performer" : { Reference(Practitioner|Patient|RelatedPerson) }, // Who administered substance
  "prescription" : { Reference(MedicationOrder) }, // Order administration performed against
  "wasNotGiven" : <boolean>, // True if medication not administered
  "reasonNotGiven" : [{ CodeableConcept }], // C? Reason administration not performed
  "reasonGiven" : [{ CodeableConcept }], // C? Reason administration performed
  "device" : [{ Reference(Device) }], // Device used to administer
  "note" : [{ Annotation }], // Information about the administration
  "dosage" : { // Details of how medication was taken
    "text" : "<string>", // Free text dosage instructions e.g. SIG
    // site[x]: Body site administered to. One of these 2:
    "siteCodeableConcept" : { CodeableConcept },
    "siteReference" : { Reference(BodySite) },
    "route" : { CodeableConcept }, // Path of substance into body
    "method" : { CodeableConcept }, // How drug was administered
    "dose" : { Quantity(SimpleQuantity) }, // Amount of medication per dose
    // rate[x]: Dose quantity per unit of time. One of these 2:
    "rateRatio" : { Ratio }
    "rateQuantity" : { Quantity(SimpleQuantity) }
  },
  "eventHistory" : [{ // A list of events of interest in the lifecycle
    "status" : "<code>", // R!  in-progress | on-hold | completed | entered-in-error | stopped
    "action" : { CodeableConcept }, // Action taken (e.g. verify)
    "dateTime" : "<dateTime>", // R!  The date at which the event happened
    "actor" : { Reference(Practitioner) }, // Who took the action
    "reason" : { CodeableConcept } // Reason the action was taken
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:MedicationAdministration;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:MedicationAdministration.identifier [ Identifier ], ... ; # 0..* External identifier
  fhir:MedicationAdministration.status [ code ]; # 1..1 in-progress | on-hold | completed | entered-in-error | stopped
  # MedicationAdministration.medication[x] : 1..1 What was administered. One of these 2
    fhir:MedicationAdministration.medicationCodeableConcept [ CodeableConcept ]
    fhir:MedicationAdministration.medicationReference [ Reference(Medication) ]
  fhir:MedicationAdministration.patient [ Reference(Patient) ]; # 1..1 Who received medication
  fhir:MedicationAdministration.encounter [ Reference(Encounter) ]; # 0..1 Encounter administered as part of
  # MedicationAdministration.effectiveTime[x] : 1..1 Start and end time of administration. One of these 2
    fhir:MedicationAdministration.effectiveTimeDateTime [ dateTime ]
    fhir:MedicationAdministration.effectiveTimePeriod [ Period ]
  fhir:MedicationAdministration.performer [ Reference(Practitioner|Patient|RelatedPerson) ]; # 0..1 Who administered substance
  fhir:MedicationAdministration.prescription [ Reference(MedicationOrder) ]; # 0..1 Order administration performed against
  fhir:MedicationAdministration.wasNotGiven [ boolean ]; # 0..1 True if medication not administered
  fhir:MedicationAdministration.reasonNotGiven [ CodeableConcept ], ... ; # 0..* Reason administration not performed
  fhir:MedicationAdministration.reasonGiven [ CodeableConcept ], ... ; # 0..* Reason administration performed
  fhir:MedicationAdministration.device [ Reference(Device) ], ... ; # 0..* Device used to administer
  fhir:MedicationAdministration.note [ Annotation ], ... ; # 0..* Information about the administration
  fhir:MedicationAdministration.dosage [ # 0..1 Details of how medication was taken
    fhir:MedicationAdministration.dosage.text [ string ]; # 0..1 Free text dosage instructions e.g. SIG
    # MedicationAdministration.dosage.site[x] : 0..1 Body site administered to. One of these 2
      fhir:MedicationAdministration.dosage.siteCodeableConcept [ CodeableConcept ]
      fhir:MedicationAdministration.dosage.siteReference [ Reference(BodySite) ]
    fhir:MedicationAdministration.dosage.route [ CodeableConcept ]; # 0..1 Path of substance into body
    fhir:MedicationAdministration.dosage.method [ CodeableConcept ]; # 0..1 How drug was administered
    fhir:MedicationAdministration.dosage.dose [ Quantity(SimpleQuantity) ]; # 0..1 Amount of medication per dose
    # MedicationAdministration.dosage.rate[x] : 0..1 Dose quantity per unit of time. One of these 2
      fhir:MedicationAdministration.dosage.rateRatio [ Ratio ]
      fhir:MedicationAdministration.dosage.rateSimpleQuantity [ Quantity(SimpleQuantity) ]
  ];
  fhir:MedicationAdministration.eventHistory [ # 0..* A list of events of interest in the lifecycle
    fhir:MedicationAdministration.eventHistory.status [ code ]; # 1..1 in-progress | on-hold | completed | entered-in-error | stopped
    fhir:MedicationAdministration.eventHistory.action [ CodeableConcept ]; # 0..1 Action taken (e.g. verify)
    fhir:MedicationAdministration.eventHistory.dateTime [ dateTime ]; # 1..1 The date at which the event happened
    fhir:MedicationAdministration.eventHistory.actor [ Reference(Practitioner) ]; # 0..1 Who took the action
    fhir:MedicationAdministration.eventHistory.reason [ CodeableConcept ]; # 0..1 Reason the action was taken
  ], ...;
]

Changes since DSTU2

MedicationAdministration
MedicationAdministration.performer Renamed from practitioner to performer
MedicationAdministration.note Max Cardinality changed from 1 to *
Type changed from string to Annotation
MedicationAdministration.dosage.dose Renamed from quantity to dose
MedicationAdministration.dosage.rate[x] Remove Range, Add Quantity{http://hl7.org/fhir/StructureDefinition/SimpleQuantity}
MedicationAdministration.eventHistory added
MedicationAdministration.eventHistory.status added
MedicationAdministration.eventHistory.action added
MedicationAdministration.eventHistory.dateTime added
MedicationAdministration.eventHistory.actor added
MedicationAdministration.eventHistory.reason added

See the Full Difference for further information

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. MedicationAdministration IDomainResourceAdministration of medication to a patient
Reason not given is only permitted if wasNotGiven is true
Reason given is only permitted if wasNotGiven is false
... identifier 0..*IdentifierExternal identifier
... status ?!Σ1..1codein-progress | on-hold | completed | entered-in-error | stopped
MedicationAdministrationStatus (Required)
... medication[x] Σ1..1What was administered
SNOMED CT Medication Codes (Example)
.... medicationCodeableConceptCodeableConcept
.... medicationReferenceReference(Medication)
... patient Σ1..1Reference(Patient)Who received medication
... encounter 0..1Reference(Encounter)Encounter administered as part of
... effectiveTime[x] Σ1..1Start and end time of administration
.... effectiveTimeDateTimedateTime
.... effectiveTimePeriodPeriod
... performer 0..1Reference(Practitioner | Patient | RelatedPerson)Who administered substance
... prescription 0..1Reference(MedicationOrder)Order administration performed against
... wasNotGiven ?!Σ0..1booleanTrue if medication not administered
... reasonNotGiven I0..*CodeableConceptReason administration not performed
SNOMED CT Reason Medication Not Given Codes (Example)
... reasonGiven I0..*CodeableConceptReason administration performed
Reason Medication Given Codes (Example)
... device 0..*Reference(Device)Device used to administer
... note 0..*AnnotationInformation about the administration
... dosage I0..1BackboneElementDetails of how medication was taken
SHALL have at least one of dosage.dose and dosage.rate[x]
.... text 0..1stringFree text dosage instructions e.g. SIG
.... site[x] 0..1Body site administered to
SNOMED CT Anatomical Structure for Administration Site Codes (Example)
..... siteCodeableConceptCodeableConcept
..... siteReferenceReference(BodySite)
.... route 0..1CodeableConceptPath of substance into body
SNOMED CT Route Codes (Example)
.... method 0..1CodeableConceptHow drug was administered
SNOMED CT Administration Method Codes (Example)
.... dose 0..1SimpleQuantityAmount of medication per dose
.... rate[x] 0..1Dose quantity per unit of time
..... rateRatioRatio
..... rateQuantitySimpleQuantity
... eventHistory 0..*BackboneElementA list of events of interest in the lifecycle
.... status 1..1codein-progress | on-hold | completed | entered-in-error | stopped
MedicationAdministrationStatus (Required)
.... action 0..1CodeableConceptAction taken (e.g. verify)
.... dateTime 1..1dateTimeThe date at which the event happened
.... actor 0..1Reference(Practitioner)Who took the action
.... reason 0..1CodeableConceptReason the action was taken

doco Documentation for this format

UML Diagram (Legend)

MedicationAdministration (DomainResource)External identifier - FHIR will generate its own internal identifiers (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 way (this element modifies the meaning of other elements)status : code [1..1] « A set of codes indicating the current status of a MedicationAdministration. (Strength=Required)MedicationAdministrationStatus! »Identifies 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[x] : Type [1..1] « CodeableConcept|Reference(Medication); Codes identifying substance or product that can be administered. (Strength=Example) SNOMED CT Medication ?? »The person or animal receiving the medicationpatient : Reference [1..1] « Patient »The visit, admission or other contact between patient and health care provider the medication administration was performed as part ofencounter : Reference [0..1] « Encounter »A specific date/time or 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] : Type [1..1] « dateTime|Period »The individual who was responsible for giving the medication to the patientperformer : Reference [0..1] « Practitioner|Patient|RelatedPerson »The original request, instruction or authority to perform the administrationprescription : Reference [0..1] « MedicationOrder »Set 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..1]A code indicating why the administration was not performedreasonNotGiven : CodeableConcept [0..*] « A set of codes indicating the reason why the MedicationAdministration is negated. (Strength=Example)SNOMED CT Reason Medication N...?? »A code indicating why the medication was givenreasonGiven : CodeableConcept [0..*] « A set of codes indicating the reason why the MedicationAdministration was made. (Strength=Example)Reason Medication Given ?? »The device used in administering the medication to the patient. For example, a particular infusion pumpdevice : Reference [0..*] « Device »Extra information about the medication administration that is not conveyed by the other attributesnote : Annotation [0..*]DosageFree text dosage can be used for cases where the dosage administered is too complex to code. When coded dosage is present, the free text dosage may still be present for display to humans. The dosage instructions should reflect the dosage of the medication that was administeredtext : string [0..1]A coded specification of the anatomic site where the medication first entered the body. For example, "left arm"site[x] : Type [0..1] « CodeableConcept|Reference(BodySite); A coded concept describing the site location the medicine enters into or onto the body. (Strength=Example)SNOMED CT Anatomical Structur...?? »A code specifying the route or physiological path of administration of a therapeutic agent into or onto the patient. For example, 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. (Strength=Example)SNOMED CT Route ?? »A coded value indicating the method by which the medication is intended to be or was introduced into or on the body. This attribute will most often NOT be populated. It is most commonly used for injections. For example, Slow Push, Deep IVmethod : CodeableConcept [0..1] « A coded concept describing the technique by which the medicine is administered. (Strength=Example)SNOMED CT Administration Meth...?? »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 injectiondose : Quantity(SimpleQuantity) [0..1]Identifies the speed with which the medication was or will be introduced into the patient. Typically the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr. May also be expressed as a rate per unit of time e.g. 500 ml per 2 hours. Other examples: 200 mcg/min or 200 mcg/1 minute; 1 liter/8 hoursrate[x] : Type [0..1] « Ratio|Quantity(SimpleQuantity) »EventHistoryThe status for the eventstatus : code [1..1] « A set of codes indicating the current status of a MedicationAdministration. (Strength=Required)MedicationAdministrationStatus! »The action that was taken (e.g. verify)action : CodeableConcept [0..1]The date/time at which the event occurreddateTime : dateTime [1..1]The person responsible for taking the actionactor : Reference [0..1] « Practitioner »The reason why the action was takenreason : CodeableConcept [0..1]Describes the medication dosage information details e.g. dose, rate, site, route, etcdosage[0..1]A summary of the events of interest that have occurred, such as when the administration was verifiedeventHistory[0..*]

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 -->
 <medication[x]><!-- 1..1 CodeableConcept|Reference(Medication) What was administered --></medication[x]>
 <patient><!-- 1..1 Reference(Patient) Who received medication --></patient>
 <encounter><!-- 0..1 Reference(Encounter) Encounter administered as part of --></encounter>
 <effectiveTime[x]><!-- 1..1 dateTime|Period Start and end time of administration --></effectiveTime[x]>
 <performer><!-- 0..1 Reference(Practitioner|Patient|RelatedPerson) Who administered substance --></performer>
 <prescription><!-- 0..1 Reference(MedicationOrder) 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>
 <device><!-- 0..* Reference(Device) Device used to administer --></device>
 <note><!-- 0..* Annotation Information about the administration --></note>
 <dosage>  <!-- 0..1 Details of how medication was taken -->
  <text value="[string]"/><!-- 0..1 Free text dosage instructions e.g. SIG -->
  <site[x]><!-- 0..1 CodeableConcept|Reference(BodySite) Body site administered to --></site[x]>
  <route><!-- 0..1 CodeableConcept Path of substance into body --></route>
  <method><!-- 0..1 CodeableConcept How drug was administered --></method>
  <dose><!-- 0..1 Quantity(SimpleQuantity) Amount of medication per dose --></dose>
  <rate[x]><!-- 0..1 Ratio|Quantity(SimpleQuantity) Dose quantity per unit of time --></rate[x]>
 </dosage>
 <eventHistory>  <!-- 0..* A list of events of interest in the lifecycle -->
  <status value="[code]"/><!-- 1..1 in-progress | on-hold | completed | entered-in-error | stopped -->
  <action><!-- 0..1 CodeableConcept Action taken (e.g. verify) --></action>
  <dateTime value="[dateTime]"/><!-- 1..1 The date at which the event happened -->
  <actor><!-- 0..1 Reference(Practitioner) Who took the action --></actor>
  <reason><!-- 0..1 CodeableConcept Reason the action was taken --></reason>
 </eventHistory>
</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
  // medication[x]: What was administered. One of these 2:
  "medicationCodeableConcept" : { CodeableConcept },
  "medicationReference" : { Reference(Medication) },
  "patient" : { Reference(Patient) }, // R!  Who received medication
  "encounter" : { Reference(Encounter) }, // Encounter administered as part of
  // effectiveTime[x]: Start and end time of administration. One of these 2:
  "effectiveTimeDateTime" : "<dateTime>",
  "effectiveTimePeriod" : { Period },
  "performer" : { Reference(Practitioner|Patient|RelatedPerson) }, // Who administered substance
  "prescription" : { Reference(MedicationOrder) }, // Order administration performed against
  "wasNotGiven" : <boolean>, // True if medication not administered
  "reasonNotGiven" : [{ CodeableConcept }], // C? Reason administration not performed
  "reasonGiven" : [{ CodeableConcept }], // C? Reason administration performed
  "device" : [{ Reference(Device) }], // Device used to administer
  "note" : [{ Annotation }], // Information about the administration
  "dosage" : { // Details of how medication was taken
    "text" : "<string>", // Free text dosage instructions e.g. SIG
    // site[x]: Body site administered to. One of these 2:
    "siteCodeableConcept" : { CodeableConcept },
    "siteReference" : { Reference(BodySite) },
    "route" : { CodeableConcept }, // Path of substance into body
    "method" : { CodeableConcept }, // How drug was administered
    "dose" : { Quantity(SimpleQuantity) }, // Amount of medication per dose
    // rate[x]: Dose quantity per unit of time. One of these 2:
    "rateRatio" : { Ratio }
    "rateQuantity" : { Quantity(SimpleQuantity) }
  },
  "eventHistory" : [{ // A list of events of interest in the lifecycle
    "status" : "<code>", // R!  in-progress | on-hold | completed | entered-in-error | stopped
    "action" : { CodeableConcept }, // Action taken (e.g. verify)
    "dateTime" : "<dateTime>", // R!  The date at which the event happened
    "actor" : { Reference(Practitioner) }, // Who took the action
    "reason" : { CodeableConcept } // Reason the action was taken
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:MedicationAdministration;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:MedicationAdministration.identifier [ Identifier ], ... ; # 0..* External identifier
  fhir:MedicationAdministration.status [ code ]; # 1..1 in-progress | on-hold | completed | entered-in-error | stopped
  # MedicationAdministration.medication[x] : 1..1 What was administered. One of these 2
    fhir:MedicationAdministration.medicationCodeableConcept [ CodeableConcept ]
    fhir:MedicationAdministration.medicationReference [ Reference(Medication) ]
  fhir:MedicationAdministration.patient [ Reference(Patient) ]; # 1..1 Who received medication
  fhir:MedicationAdministration.encounter [ Reference(Encounter) ]; # 0..1 Encounter administered as part of
  # MedicationAdministration.effectiveTime[x] : 1..1 Start and end time of administration. One of these 2
    fhir:MedicationAdministration.effectiveTimeDateTime [ dateTime ]
    fhir:MedicationAdministration.effectiveTimePeriod [ Period ]
  fhir:MedicationAdministration.performer [ Reference(Practitioner|Patient|RelatedPerson) ]; # 0..1 Who administered substance
  fhir:MedicationAdministration.prescription [ Reference(MedicationOrder) ]; # 0..1 Order administration performed against
  fhir:MedicationAdministration.wasNotGiven [ boolean ]; # 0..1 True if medication not administered
  fhir:MedicationAdministration.reasonNotGiven [ CodeableConcept ], ... ; # 0..* Reason administration not performed
  fhir:MedicationAdministration.reasonGiven [ CodeableConcept ], ... ; # 0..* Reason administration performed
  fhir:MedicationAdministration.device [ Reference(Device) ], ... ; # 0..* Device used to administer
  fhir:MedicationAdministration.note [ Annotation ], ... ; # 0..* Information about the administration
  fhir:MedicationAdministration.dosage [ # 0..1 Details of how medication was taken
    fhir:MedicationAdministration.dosage.text [ string ]; # 0..1 Free text dosage instructions e.g. SIG
    # MedicationAdministration.dosage.site[x] : 0..1 Body site administered to. One of these 2
      fhir:MedicationAdministration.dosage.siteCodeableConcept [ CodeableConcept ]
      fhir:MedicationAdministration.dosage.siteReference [ Reference(BodySite) ]
    fhir:MedicationAdministration.dosage.route [ CodeableConcept ]; # 0..1 Path of substance into body
    fhir:MedicationAdministration.dosage.method [ CodeableConcept ]; # 0..1 How drug was administered
    fhir:MedicationAdministration.dosage.dose [ Quantity(SimpleQuantity) ]; # 0..1 Amount of medication per dose
    # MedicationAdministration.dosage.rate[x] : 0..1 Dose quantity per unit of time. One of these 2
      fhir:MedicationAdministration.dosage.rateRatio [ Ratio ]
      fhir:MedicationAdministration.dosage.rateSimpleQuantity [ Quantity(SimpleQuantity) ]
  ];
  fhir:MedicationAdministration.eventHistory [ # 0..* A list of events of interest in the lifecycle
    fhir:MedicationAdministration.eventHistory.status [ code ]; # 1..1 in-progress | on-hold | completed | entered-in-error | stopped
    fhir:MedicationAdministration.eventHistory.action [ CodeableConcept ]; # 0..1 Action taken (e.g. verify)
    fhir:MedicationAdministration.eventHistory.dateTime [ dateTime ]; # 1..1 The date at which the event happened
    fhir:MedicationAdministration.eventHistory.actor [ Reference(Practitioner) ]; # 0..1 Who took the action
    fhir:MedicationAdministration.eventHistory.reason [ CodeableConcept ]; # 0..1 Reason the action was taken
  ], ...;
]

Changes since DSTU2

MedicationAdministration
MedicationAdministration.performer Renamed from practitioner to performer
MedicationAdministration.note Max Cardinality changed from 1 to *
Type changed from string to Annotation
MedicationAdministration.dosage.dose Renamed from quantity to dose
MedicationAdministration.dosage.rate[x] Remove Range, Add Quantity{http://hl7.org/fhir/StructureDefinition/SimpleQuantity}
MedicationAdministration.eventHistory added
MedicationAdministration.eventHistory.status added
MedicationAdministration.eventHistory.action added
MedicationAdministration.eventHistory.dateTime added
MedicationAdministration.eventHistory.actor added
MedicationAdministration.eventHistory.reason added

See the Full Difference for further information

 

Alternate definitions: Master Definition (XML, JSON), XML Schema/Schematron (for ) + JSON Schema, ShEx (for Turtle)

11.3.3.1 Terminology Bindings

PathDefinitionTypeReference
MedicationAdministration.status
MedicationAdministration.eventHistory.status
A set of codes indicating the current status of a MedicationAdministration.RequiredMedicationAdministrationStatus
MedicationAdministration.medication[x] Codes identifying substance or product that can be administered.ExampleSNOMED CT Medication Codes
MedicationAdministration.reasonNotGiven A set of codes indicating the reason why the MedicationAdministration is negated.ExampleSNOMED CT Reason Medication Not Given Codes
MedicationAdministration.reasonGiven A set of codes indicating the reason why the MedicationAdministration was made.ExampleReason Medication Given Codes
MedicationAdministration.dosage.site[x] A coded concept describing the site location the medicine enters into or onto the body.ExampleSNOMED CT Anatomical Structure for Administration 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.ExampleSNOMED CT Route Codes
MedicationAdministration.dosage.method A coded concept describing the technique by which the medicine is administered.ExampleSNOMED CT Administration Method Codes
MedicationAdministration.eventHistory.action A coded concept describing an action taken on a medication administration.UnknownNo details provided yet
MedicationAdministration.eventHistory.reason A coded concept describing the reason for an action taken on a medication administration.UnknownNo details provided yet

11.3.3.2 Constraints

  • mad-1: On MedicationAdministration.dosage: SHALL have at least one of dosage.dose and dosage.rate[x] (expression on MedicationAdministration.dosage: dose.exists() or rate.exists())
  • mad-2: Reason not given is only permitted if wasNotGiven is true (expression : reasonNotGiven.empty() or wasNotGiven = true)
  • mad-3: Reason given is only permitted if wasNotGiven is false (expression : reasonGiven.empty() or wasNotGiven.empty() or wasNotGiven = 'false')

11.3.4 Known Issues

Issue Comments
Medication Resource A medication will typically be referred to by means of a code drawn from a suitable medication 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.
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.

11.3.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
codetokenReturn administrations of this medication codeMedicationAdministration.medicationCodeableConcept
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 identifierMedicationAdministration.identifier
medicationreferenceReturn administrations of this medication resourceMedicationAdministration.medicationReference
(Medication)
patientreferenceThe identity of a patient to list administrations forMedicationAdministration.patient
(Patient)
performerreferenceWho administered substanceMedicationAdministration.performer
(Practitioner, Patient, RelatedPerson)
prescriptionreferenceThe identity of a prescription to list administrations fromMedicationAdministration.prescription
(MedicationOrder)
statustokenMedicationAdministration event status (for example one of active/paused/completed/nullified)MedicationAdministration.status
wasnotgiventokenAdministrations that were not madeMedicationAdministration.wasNotGiven