SDOH Clinical Care
0.0.4C1 - CI Build

SDOH Clinical Care - Local Development build (v0.0.4C1). See the Directory of published versions

StructureDefinition: SDOHCC_Procedure_FoodInsecurity_1

This profile supports Gravity Project data elements that focus on the Food Insecurity domain. The profile constrains Procedures related to: Food Insecurity.

The official URL for this profile is:

http://hl7.org/fhir/us/sdoh-cc/StructureDefinition/SDOHCC-Procedure-FoodInsecurity-1

Profile design

This profile is adapted from US Core Condition. However, the value set bindings are not necessarily compliant.

Additional Guidance

This draft profile is included in this IG to give implementers an idea of how Gravity intends to develop this profile. As the Gravity project continues to develop content, this Procedure profile will also align with CarePlan and BSeR ServiceRequest profiles which will also be further developed in future versions of the Gravity IG.

The FHIR Procedure, ServiceRequest and CarePlan resources reference one another. Therefore, to support interoperability and analytics, similar approaches will be considered in the structured representation of food insecurity Procedure, ServiceRequests and CarePlan profiles.

Although the Gravity Procedure, ServiceRequest and CarePlan profiles are still being developed, the diagram below shows potential relationships between Procedure, ServiceRequest and CarePlan (as well as the Conditions and/or Observations that they reference).

The initial QuestionnaireResponse (1) results in Observations (2,3) which are evidence for a Condition (4) that is addressed by a CarePlan (5) and Goal (6) which lead to a ServiceRequest (7) and Procedure (8).

The sections that follow provide additional guidance on 1) specific elements of this profile, and 2) efforts to align the profile with the following correlated Condition and Observation profiles:

  • SDOHCC_Condition_FoodInsecurity_1
  • SDOHCC_Observation_FoodInsecurity_1

Procedure.code

This element references SDOHCC_ValueSet_FoodInsecurityIntervention_1. Currently, this value set contains the temporary SNOMED CT codes listed below. The current value set is only for the purpose of demonstrating a Food Insecurity Procedure profile for this IG. The members of this value set may change as the Gravity Project continues to develop content.

Code Display
sdohcc-sctt-151000243108 Assistance with application for food program (procedure)
sdohcc-sctt-141000243105 Education about food program (procedure)
sdohcc-sctt-131000243104 Evaluation of eligibility for food program (procedure)
sdohcc-sctt-161000243106 Provision of food from food program (procedure)

This value set may also be used ServiceRequest profiles (which are yet to be developed) for:

  • ServiceRequest.code

The consistent use of similar codes for a Procedure and a referenced ServiceRequest, that the Procedure is based on, will facilitate analytics and interoperability between Procedure and ServiceRequest.

Example:

  • SDOHCC_Procedure_FoodInsecurity_1 modeled with:
    • Procedure.code = Assistance with application for Supplemental Nutrition Assistance Program

May align with a service request that this procedure references (via Procedure.basedOn) such as:

  • SDOHCC_ServiceRequest_FoodInsecurity_1 (yet to be developed) modeled with:
    • ServiceRequest.code = Assistance with application for Supplemental Nutrition Assistance Program

The codes in the SDOHCC_ValueSet_FoodInsecurityIntervention_1 are high level codes that do not specify specific food programs. Gravity is exploring a number of options to refine the current set of codes (for Procedure.code and ServiceRequest,code) so that specific food and nutrition programs (national or local) can be represented in a consistent manner. Options under consideration include but are not limited to: 1) value sets for Programs that can be used with a modified existing element of the ServiceRequest Resource, 2) Precoodination of more granular procedure codes that include the specific programs.

Procedure.basedOn

This element currently references http://hl7.org/fhir/StructureDefinition/ServiceRequest and http://hl7.org/fhir/StructureDefinition/CarePlan. As Gravity content development continues, this element may reference Gravity ServiceRequest and CarePlan profiles which are yet to be created.

Procedure.category

Currently, this element references http://hl7.org/fhir/ValueSet/procedure-category. This example HL7 value set contains the SNOMED CT codes listed below. However, as Gravity content development continues, this value set may change to reflect the high-level intervention categories being proposed by Gravity.

Code Display
24642003 Psychiatry procedure or service
409063005 Counselling
409073007 Education
387713003 Surgical procedure
103693007 Diagnostic procedure
46947000 Chiropractic manipulation
410606002 Social service procedure

Procedure.reasonReference

This element can be used to justify why the procedure was performed. It can be used to reference SDOHCC_Condition_FoodInsecurity_1 and SDOHCC_Observation_FoodInsecurity_1. If needed, it can also reference other Condition, Observation, Procedure and DocumentReference profiles.

Procedure.reasonCode

This element can be used to provide a coded reason for why a procedure was performed. This element could have been used in this profile to reference SDOHCC_ValueSet_FoodInsecurity_1 (see members below) which was also used for Condition.code and Observation.code in SDOHCC_Condition_FoodInsecurity_1 and SDOHCC_Observation_FoodInsecurity_1.

Code Display
733423003 Food insecurity (finding)
sdohcc-sctt-21000243108 Mild food insecurity (finding)
sdohcc-sctt-31000243105 Moderate food insecurity (finding)
sdohcc-sctt-41000243104 Severe food insecurity (finding)

However, this approach was deliberately avoided in this profile since Procedure.reasonCode overlaps significantly with Procedure.reasonReference and multiple approaches to representing the same information may negatively impact interoperability. Therefore, although this profile does not expressly prohibit this element, it is strongly recommended that Procedure.reasonReference be used to justify why the procedure was performed.

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from Procedure

Summary

Mandatory: 4 elements
Must-Support: 4 elements
Prohibited: 4 elements

Structures

This structure refers to these other structures:

This structure is derived from Procedure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*ProcedureAn action that is being or was performed on a patient
... partOf 0..*Reference(Procedure | Observation)Part of referenced event
... status S1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
... code S1..1CodeableConceptIdentification of the procedure
Binding: SDOHCC_ValueSet_FoodInsecurityIntervention_1 (required)
... encounter 1..1Reference(Encounter)Encounter created as part of
... performed[x] S1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
... recorder 0..1Reference(Practitioner | PractitionerRole)Who recorded the procedure
... asserter 0..1Reference(PractitionerRole | Practitioner)Person who asserts this procedure
... performer 1..1BackboneElementThe people who performed the procedure
.... actor 1..1Reference(Practitioner | PractitionerRole | Organization)The reference to the practitioner
... reasonReference 0..*Reference(Observation | SDOHCC_Observation_FoodInsecurity_1 | SDOHCC Condition Food Insecurity 1 | Condition | Procedure | DocumentReference)The justification that the procedure was performed
... bodySite 0..0
... report 0..*Reference(Composition | DocumentReference)Any report resulting from the procedure
... note
.... author[x] 0..1Individual responsible for the annotation
..... authorReferenceReference(Organization | Practitioner)
..... authorStringstring
... focalDevice 0..0
... usedReference 0..0
... usedCode 0..0

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure I0..*ProcedureAn action that is being or was performed on a patient
... id Σ0..1stringLogical id of this artifact
... meta ΣI0..1MetaMetadata about the resource
... implicitRules ?!ΣI0..1uriA set of rules under which this content was created
... language I0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred)
Max Binding: AllLanguages
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension I0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!I0..*ExtensionExtensions that cannot be ignored
... identifier ΣI0..*IdentifierExternal Identifiers for this procedure
... instantiatesCanonical ΣI0..*canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire)Instantiates FHIR protocol or definition
... instantiatesUri ΣI0..*uriInstantiates external protocol or definition
... basedOn ΣI0..*Reference(CarePlan | ServiceRequest)A request for this procedure
... partOf ΣI0..*Reference(Procedure | Observation)Part of referenced event
... status ?!SΣI1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: EventStatus (required)
... statusReason ΣI0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReason(SNOMED-CT) (example)
... category ΣI0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example)
... code SΣI1..1CodeableConceptIdentification of the procedure
Binding: SDOHCC_ValueSet_FoodInsecurityIntervention_1 (required)
... subject SΣI1..1Reference(US Core Patient Profile | Group)Who the procedure was performed on
... encounter ΣI1..1Reference(Encounter)Encounter created as part of
... performed[x] SΣI1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
... recorder ΣI0..1Reference(Practitioner | PractitionerRole)Who recorded the procedure
... asserter ΣI0..1Reference(PractitionerRole | Practitioner)Person who asserts this procedure
... performer ΣI1..1BackboneElementThe people who performed the procedure
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!ΣI0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function ΣI0..1CodeableConceptType of performance
Binding: ProcedurePerformerRoleCodes (example)
.... actor ΣI1..1Reference(Practitioner | PractitionerRole | Organization)The reference to the practitioner
.... onBehalfOf I0..1Reference(Organization)Organization the device or practitioner was acting for
... location ΣI0..1Reference(Location)Where the procedure happened
... reasonCode ΣI0..*CodeableConceptCoded reason procedure performed
Binding: ProcedureReasonCodes (example)
... reasonReference ΣI0..*Reference(Observation | SDOHCC_Observation_FoodInsecurity_1 | SDOHCC Condition Food Insecurity 1 | Condition | Procedure | DocumentReference)The justification that the procedure was performed
... outcome ΣI0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodes(SNOMEDCT) (example)
... report I0..*Reference(Composition | DocumentReference)Any report resulting from the procedure
... complication I0..*CodeableConceptComplication following the procedure
Binding: Condition/Problem/DiagnosisCodes (example)
... complicationDetail I0..*Reference(Condition)A condition that is a result of the procedure
... followUp I0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodes(SNOMEDCT) (example)
... note I0..*AnnotationAdditional information about the procedure
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... author[x] ΣI0..1Individual responsible for the annotation
..... authorReferenceReference(Organization | Practitioner)
..... authorStringstring
.... time ΣI0..1dateTimeWhen the annotation was made
.... text ΣI1..1markdownThe annotation - text content (as markdown)

doco Documentation for this format

This structure is derived from Procedure

Summary

Mandatory: 4 elements
Must-Support: 4 elements
Prohibited: 4 elements

Structures

This structure refers to these other structures:

Differential View

This structure is derived from Procedure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure 0..*ProcedureAn action that is being or was performed on a patient
... partOf 0..*Reference(Procedure | Observation)Part of referenced event
... status S1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
... code S1..1CodeableConceptIdentification of the procedure
Binding: SDOHCC_ValueSet_FoodInsecurityIntervention_1 (required)
... encounter 1..1Reference(Encounter)Encounter created as part of
... performed[x] S1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
... recorder 0..1Reference(Practitioner | PractitionerRole)Who recorded the procedure
... asserter 0..1Reference(PractitionerRole | Practitioner)Person who asserts this procedure
... performer 1..1BackboneElementThe people who performed the procedure
.... actor 1..1Reference(Practitioner | PractitionerRole | Organization)The reference to the practitioner
... reasonReference 0..*Reference(Observation | SDOHCC_Observation_FoodInsecurity_1 | SDOHCC Condition Food Insecurity 1 | Condition | Procedure | DocumentReference)The justification that the procedure was performed
... bodySite 0..0
... report 0..*Reference(Composition | DocumentReference)Any report resulting from the procedure
... note
.... author[x] 0..1Individual responsible for the annotation
..... authorReferenceReference(Organization | Practitioner)
..... authorStringstring
... focalDevice 0..0
... usedReference 0..0
... usedCode 0..0

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Procedure I0..*ProcedureAn action that is being or was performed on a patient
... id Σ0..1stringLogical id of this artifact
... meta ΣI0..1MetaMetadata about the resource
... implicitRules ?!ΣI0..1uriA set of rules under which this content was created
... language I0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred)
Max Binding: AllLanguages
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension I0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!I0..*ExtensionExtensions that cannot be ignored
... identifier ΣI0..*IdentifierExternal Identifiers for this procedure
... instantiatesCanonical ΣI0..*canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire)Instantiates FHIR protocol or definition
... instantiatesUri ΣI0..*uriInstantiates external protocol or definition
... basedOn ΣI0..*Reference(CarePlan | ServiceRequest)A request for this procedure
... partOf ΣI0..*Reference(Procedure | Observation)Part of referenced event
... status ?!SΣI1..1codepreparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown
Binding: EventStatus (required)
... statusReason ΣI0..1CodeableConceptReason for current status
Binding: ProcedureNotPerformedReason(SNOMED-CT) (example)
... category ΣI0..1CodeableConceptClassification of the procedure
Binding: ProcedureCategoryCodes(SNOMEDCT) (example)
... code SΣI1..1CodeableConceptIdentification of the procedure
Binding: SDOHCC_ValueSet_FoodInsecurityIntervention_1 (required)
... subject SΣI1..1Reference(US Core Patient Profile | Group)Who the procedure was performed on
... encounter ΣI1..1Reference(Encounter)Encounter created as part of
... performed[x] SΣI1..1When the procedure was performed
.... performedDateTimedateTime
.... performedPeriodPeriod
... recorder ΣI0..1Reference(Practitioner | PractitionerRole)Who recorded the procedure
... asserter ΣI0..1Reference(PractitionerRole | Practitioner)Person who asserts this procedure
... performer ΣI1..1BackboneElementThe people who performed the procedure
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!ΣI0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... function ΣI0..1CodeableConceptType of performance
Binding: ProcedurePerformerRoleCodes (example)
.... actor ΣI1..1Reference(Practitioner | PractitionerRole | Organization)The reference to the practitioner
.... onBehalfOf I0..1Reference(Organization)Organization the device or practitioner was acting for
... location ΣI0..1Reference(Location)Where the procedure happened
... reasonCode ΣI0..*CodeableConceptCoded reason procedure performed
Binding: ProcedureReasonCodes (example)
... reasonReference ΣI0..*Reference(Observation | SDOHCC_Observation_FoodInsecurity_1 | SDOHCC Condition Food Insecurity 1 | Condition | Procedure | DocumentReference)The justification that the procedure was performed
... outcome ΣI0..1CodeableConceptThe result of procedure
Binding: ProcedureOutcomeCodes(SNOMEDCT) (example)
... report I0..*Reference(Composition | DocumentReference)Any report resulting from the procedure
... complication I0..*CodeableConceptComplication following the procedure
Binding: Condition/Problem/DiagnosisCodes (example)
... complicationDetail I0..*Reference(Condition)A condition that is a result of the procedure
... followUp I0..*CodeableConceptInstructions for follow up
Binding: ProcedureFollowUpCodes(SNOMEDCT) (example)
... note I0..*AnnotationAdditional information about the procedure
.... id 0..1stringUnique id for inter-element referencing
.... extension I0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... author[x] ΣI0..1Individual responsible for the annotation
..... authorReferenceReference(Organization | Practitioner)
..... authorStringstring
.... time ΣI0..1dateTimeWhen the annotation was made
.... text ΣI1..1markdownThe annotation - text content (as markdown)

doco Documentation for this format

 

Other representations of profile: Schematron

Terminology Bindings

Terminology Bindings

PathConformanceValueSet
Procedure.languagepreferredCommonLanguages
Max Binding: AllLanguages
Procedure.statusrequiredEventStatus
Procedure.statusReasonexampleProcedureNotPerformedReason(SNOMED-CT)
Procedure.categoryexampleProcedureCategoryCodes(SNOMEDCT)
Procedure.coderequiredSDOHCC_ValueSet_FoodInsecurityIntervention_1
Procedure.performer.functionexampleProcedurePerformerRoleCodes
Procedure.reasonCodeexampleProcedureReasonCodes
Procedure.outcomeexampleProcedureOutcomeCodes(SNOMEDCT)
Procedure.complicationexampleCondition/Problem/DiagnosisCodes
Procedure.followUpexampleProcedureFollowUpCodes(SNOMEDCT)
Procedure.focalDevice.actionpreferredProcedureDeviceActionCodes

Constraints

Constraints

IdPathDetailsRequirements
dom-2ProcedureIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3ProcedureIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4ProcedureIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5ProcedureIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6ProcedureA resource should have narrative for robust management
: text.`div`.exists()
ele-1Procedure.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.instantiatesCanonicalAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.instantiatesUriAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.basedOnAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.partOfAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.statusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.statusReasonAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.categoryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.subjectAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.encounterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.performed[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.recorderAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.asserterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.performerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.performer.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.performer.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.performer.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.performer.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.performer.functionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.performer.actorAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.performer.onBehalfOfAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.locationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.reasonCodeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.reasonReferenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.outcomeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.reportAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.complicationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.complicationDetailAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.followUpAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.noteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.note.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.note.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.note.author[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.note.timeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.note.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.focalDevice.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.focalDevice.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.focalDevice.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Procedure.focalDevice.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Procedure.focalDevice.actionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Procedure.focalDevice.manipulatedAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())