{
  "resourceType" : "MedicationDispense",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : { Identifier }, // External identifier
  "status" : "<code>", // in-progress | on-hold | completed | entered-in-error | stopped
  "patient" : { Reference(Patient) }, // Who the dispense is for
  "dispenser" : { Reference(Practitioner) }, // Practitioner responsible for dispensing medication
  "authorizingPrescription" : [{ Reference(MedicationOrder) }], // Medication order that authorizes the dispense
  "type" : { CodeableConcept }, // Trial fill, partial fill, emergency fill, etc.
  "quantity" : { Quantity(SimpleQuantity) }, // Amount dispensed
  "daysSupply" : { Quantity(SimpleQuantity) }, // Days Supply
  // medication[x]: What medication was supplied. One of these 2:
  "medicationCodeableConcept" : { CodeableConcept },
  "medicationReference" : { Reference(Medication) },
  "whenPrepared" : "<dateTime>", // Dispense processing time
  "whenHandedOver" : "<dateTime>", // When product was given out
  "destination" : { Reference(Location) }, // Where the medication was sent
  "receiver" : [{ Reference(Patient|Practitioner) }], // Who collected the medication
  "note" : "<string>", // Information about the dispense
  "dosageInstruction" : [{ // Medicine administration instructions to the patient/caregiver
    "text" : "<string>", // Dosage Instructions
    "additionalInstructions" : { CodeableConcept }, // E.g. "Take with food"
    "timing" : { Timing }, // When medication should be administered
    // asNeeded[x]: Take "as needed" f(or x). One of these 2:
    "asNeededBoolean" : <boolean>,
    "asNeededCodeableConcept" : { CodeableConcept },
    // site[x]: Body site to administer to. One of these 2:
    "siteCodeableConcept" : { CodeableConcept },
    "siteReference" : { Reference(BodySite) },
    "route" : { CodeableConcept }, // How drug should enter body
    "method" : { CodeableConcept }, // Technique for administering medication
    // dose[x]: Amount of medication per dose. One of these 2:
    "doseRange" : { Range },
    "doseQuantity" : { Quantity(SimpleQuantity) },
    // rate[x]: Amount of medication per unit of time. One of these 2:
    "rateRatio" : { Ratio },
    "rateRange" : { Range },
    "maxDosePerPeriod" : { Ratio } // Upper limit on medication per unit of time
  }],
  "substitution" : { // Deals with substitution of one medicine for another
    "type" : { CodeableConcept }, // R!  Type of substitution
    "reason" : [{ CodeableConcept }], // Why was substitution made
    "responsibleParty" : [{ Reference(Practitioner) }] // Who is responsible for the substitution
  }
}