{
  "resourceType" : "Procedure",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // External Identifiers for this procedure
  "subject" : { Reference(Patient|Group) }, // R!  Who the procedure was performed on
  "status" : "<code>", // R!  in-progress | aborted | completed | entered-in-error
  "category" : { CodeableConcept }, // Classification of the procedure
  "code" : { CodeableConcept }, // R!  Identification of the procedure
  "notPerformed" : <boolean>, // True if procedure was not performed as scheduled
  "reasonNotPerformed" : [{ CodeableConcept }], // C? Reason procedure was not performed
  "bodySite" : [{ CodeableConcept }], // Target body sites
  // reason[x]: Reason procedure performed. One of these 2:
  "reasonCodeableConcept" : { CodeableConcept },
  "reasonReference" : { Reference(Condition) },
  "performer" : [{ // The people who performed the procedure
    "actor" : { Reference(Practitioner|Organization|Patient|RelatedPerson) }, // The reference to the practitioner
    "role" : { CodeableConcept } // The role the actor was in
  }],
  // performed[x]: Date/Period the procedure was performed. One of these 2:
  "performedDateTime" : "<dateTime>",
  "performedPeriod" : { Period },
  "encounter" : { Reference(Encounter) }, // The encounter associated with the procedure
  "location" : { Reference(Location) }, // Where the procedure happened
  "outcome" : { CodeableConcept }, // The result of procedure
  "report" : [{ Reference(DiagnosticReport) }], // Any report resulting from the procedure
  "complication" : [{ CodeableConcept }], // Complication following the procedure
  "followUp" : [{ CodeableConcept }], // Instructions for follow up
  "request" : { Reference(CarePlan|DiagnosticOrder|ProcedureRequest|
   ReferralRequest) }, // A request for this procedure
  "notes" : [{ Annotation }], // Additional information about the procedure
  "focalDevice" : [{ // Device changed in procedure
    "action" : { CodeableConcept }, // Kind of change to device
    "manipulated" : { Reference(Device) } // R!  Device that was changed
  }],
  "used" : [{ Reference(Device|Medication|Substance) }] // Items used during procedure
}