{
  "resourceType" : "ProcedureRequest",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // Unique identifier for the request
  "subject" : { Reference(Patient|Group) }, // R!  Who the procedure should be done to
  "code" : { CodeableConcept }, // R!  What procedure to perform
  "bodySite" : [{ CodeableConcept }], // What part of body to perform on
  // reason[x]: Why procedure should occur. One of these 2:
  "reasonCodeableConcept" : { CodeableConcept },
  "reasonReference" : { Reference(Condition) },
  // scheduled[x]: When procedure should occur. One of these 3:
  "scheduledDateTime" : "<dateTime>",
  "scheduledPeriod" : { Period },
  "scheduledTiming" : { Timing },
  "encounter" : { Reference(Encounter) }, // Encounter request created during
  "performer" : { Reference(Practitioner|Organization|Patient|RelatedPerson) }, // Who should perform the procedure
  "status" : "<code>", // proposed | draft | requested | received | accepted | in-progress | completed | suspended | rejected | aborted
  "notes" : [{ Annotation }], // Additional information about desired procedure
  // asNeeded[x]: Preconditions for procedure. One of these 2:
  "asNeededBoolean" : <boolean>,
  "asNeededCodeableConcept" : { CodeableConcept },
  "orderedOn" : "<dateTime>", // When request was created
  "orderer" : { Reference(Practitioner|Patient|RelatedPerson|Device) }, // Who made request
  "priority" : "<code>" // routine | urgent | stat | asap
}