Laboratory Workflows Implementation Guide
0.3.0 - ci-build

Laboratory Workflows Implementation Guide - Local Development build (v0.3.0). See the Directory of published versions

Resource Profile: Laboratory Workflow Task Resource

Official URL: http://i-tech-uw.github.io/laboratory-workflows-ig/StructureDefinition/laboratory-task Version: 0.3.0
Active as of 2022-08-16 Responsible: I-TECH-UW Computable Name: LaboratoryTask

A Task resource for tracking order state and synchronizing communication between an EMR and a LIS

Usage:

Formal Views of Profile Content

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

This structure is derived from Task

NameFlagsCard.TypeDescription & Constraintsdoco
.. Task 0..*TaskA task to be performed
... identifier 1..*IdentifierTask Instance Identifier
... basedOn 1..*Reference(Laboratory Service Request)Request fulfilled by this task
... status 1..1codedraft | requested | received | accepted | +
Binding: Laboratory Status for Task (required)
... for 0..1Reference(Laboratory Workflow Patient)Beneficiary of the Task
... authoredOn 1..1dateTimeTask Creation Date
... owner 0..1Reference(Practitioner | Organization | HealthcareService)Responsible individual
... output
.... type
..... text 0..1stringPlain text representation of the concept
Required Pattern: DiagnosticReport
.... value[x] 1..1Reference(Laboratory Diagnostic Report)Result of output

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Task I0..*TaskA task to be performed
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred): A human language.

Additional BindingsPurpose
AllLanguagesMax Binding
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier 1..*IdentifierTask Instance Identifier
... instantiatesCanonical Σ0..1canonical(ActivityDefinition)Formal definition of task
... instantiatesUri Σ0..1uriFormal definition of task
... basedOn Σ1..*Reference(Laboratory Service Request)Request fulfilled by this task
... groupIdentifier Σ0..1IdentifierRequisition or grouper id
... partOf Σ0..*Reference(Task)Composite task
... status ?!Σ1..1codedraft | requested | received | accepted | +
Binding: Laboratory Status for Task (required)
... statusReason Σ0..1CodeableConceptReason for current status
Binding: (unbound) (example): Codes to identify the reason for current status. These will typically be specific to a particular workflow.

... businessStatus Σ0..1CodeableConceptE.g. "Specimen collected", "IV prepped"
Binding: (unbound) (example): The domain-specific business-contextual sub-state of the task. For example: "Blood drawn", "IV inserted", "Awaiting physician signature", etc.

... intent Σ1..1codeunknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
Binding: Laboratory Intent for Task (required)
... priority 0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required): The task's priority.

... code Σ0..1CodeableConceptTask Type
Binding: TaskCode (example): Codes to identify what the task involves. These will typically be specific to a particular workflow.

... description Σ0..1stringHuman-readable explanation of task
... focus Σ0..1Reference(Resource)What task is acting on
... for Σ0..1Reference(Laboratory Workflow Patient)Beneficiary of the Task
... encounter Σ0..1Reference(Encounter)Healthcare event during which this task originated
... executionPeriod Σ0..1PeriodStart and end time of execution
... authoredOn I1..1dateTimeTask Creation Date
... lastModified ΣI0..1dateTimeTask Last Modified Date
... requester Σ0..1Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)Who is asking for task to be done
... performerType 0..*CodeableConceptRequested performer
Binding: ProcedurePerformerRoleCodes (preferred): The type(s) of task performers allowed.


... owner Σ0..1Reference(Practitioner | Organization | HealthcareService)Responsible individual
... location Σ0..1Reference(Location)Where task occurs
... reasonCode 0..1CodeableConceptWhy task is needed
Binding: (unbound) (example): Indicates why the task is needed. E.g. Suspended because patient admitted to hospital.

... reasonReference 0..1Reference(Resource)Why task is needed
... insurance 0..*Reference(Coverage | ClaimResponse)Associated insurance coverage
... note 0..*AnnotationComments made about the task
... relevantHistory 0..*Reference(Provenance)Key events in history of the Task
... restriction 0..1BackboneElementConstraints on fulfillment tasks
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... repetitions 0..1positiveIntHow many times to repeat
.... period 0..1PeriodWhen fulfillment sought
.... recipient 0..*Reference(Patient | Practitioner | PractitionerRole | RelatedPerson | Group | Organization)For whom is fulfillment sought?
... input 0..*BackboneElementInformation used to perform task
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... type 1..1CodeableConceptLabel for the input
Binding: (unbound) (example): Codes to identify types of input parameters. These will typically be specific to a particular workflow. E.g. "Comparison source", "Applicable consent", "Concomitent Medications", etc.

.... value[x] 1..1Content to use in performing the task
..... valueBase64Binarybase64Binary
..... valueBooleanboolean
..... valueCanonicalcanonical(Any)
..... valueCodecode
..... valueDatedate
..... valueDateTimedateTime
..... valueDecimaldecimal
..... valueIdid
..... valueInstantinstant
..... valueIntegerinteger
..... valueMarkdownmarkdown
..... valueOidoid
..... valuePositiveIntpositiveInt
..... valueStringstring
..... valueTimetime
..... valueUnsignedIntunsignedInt
..... valueUriuri
..... valueUrlurl
..... valueUuiduuid
..... valueAddressAddress
..... valueAgeAge
..... valueAnnotationAnnotation
..... valueAttachmentAttachment
..... valueCodeableConceptCodeableConcept
..... valueCodingCoding
..... valueContactPointContactPoint
..... valueCountCount
..... valueDistanceDistance
..... valueDurationDuration
..... valueHumanNameHumanName
..... valueIdentifierIdentifier
..... valueMoneyMoney
..... valuePeriodPeriod
..... valueQuantityQuantity
..... valueRangeRange
..... valueRatioRatio
..... valueReferenceReference(Any)
..... valueSampledDataSampledData
..... valueSignatureSignature
..... valueTimingTiming
..... valueContactDetailContactDetail
..... valueContributorContributor
..... valueDataRequirementDataRequirement
..... valueExpressionExpression
..... valueParameterDefinitionParameterDefinition
..... valueRelatedArtifactRelatedArtifact
..... valueTriggerDefinitionTriggerDefinition
..... valueUsageContextUsageContext
..... valueDosageDosage
..... valueMetaMeta
... output 0..*BackboneElementInformation produced as part of task
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... type 1..1CodeableConceptLabel for output
Binding: (unbound) (example): Codes to identify types of input parameters. These will typically be specific to a particular workflow. E.g. "Identified issues", "Preliminary results", "Filler order", "Final results", etc.

..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... coding Σ0..*CodingCode defined by a terminology system
..... text Σ0..1stringPlain text representation of the concept
Required Pattern: DiagnosticReport
.... value[x] 1..1Reference(Laboratory Diagnostic Report)Result of output

doco Documentation for this format

Differential View

This structure is derived from Task

NameFlagsCard.TypeDescription & Constraintsdoco
.. Task 0..*TaskA task to be performed
... identifier 1..*IdentifierTask Instance Identifier
... basedOn 1..*Reference(Laboratory Service Request)Request fulfilled by this task
... status 1..1codedraft | requested | received | accepted | +
Binding: Laboratory Status for Task (required)
... for 0..1Reference(Laboratory Workflow Patient)Beneficiary of the Task
... authoredOn 1..1dateTimeTask Creation Date
... owner 0..1Reference(Practitioner | Organization | HealthcareService)Responsible individual
... output
.... type
..... text 0..1stringPlain text representation of the concept
Required Pattern: DiagnosticReport
.... value[x] 1..1Reference(Laboratory Diagnostic Report)Result of output

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Task I0..*TaskA task to be performed
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred): A human language.

Additional BindingsPurpose
AllLanguagesMax Binding
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier 1..*IdentifierTask Instance Identifier
... instantiatesCanonical Σ0..1canonical(ActivityDefinition)Formal definition of task
... instantiatesUri Σ0..1uriFormal definition of task
... basedOn Σ1..*Reference(Laboratory Service Request)Request fulfilled by this task
... groupIdentifier Σ0..1IdentifierRequisition or grouper id
... partOf Σ0..*Reference(Task)Composite task
... status ?!Σ1..1codedraft | requested | received | accepted | +
Binding: Laboratory Status for Task (required)
... statusReason Σ0..1CodeableConceptReason for current status
Binding: (unbound) (example): Codes to identify the reason for current status. These will typically be specific to a particular workflow.

... businessStatus Σ0..1CodeableConceptE.g. "Specimen collected", "IV prepped"
Binding: (unbound) (example): The domain-specific business-contextual sub-state of the task. For example: "Blood drawn", "IV inserted", "Awaiting physician signature", etc.

... intent Σ1..1codeunknown | proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
Binding: Laboratory Intent for Task (required)
... priority 0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required): The task's priority.

... code Σ0..1CodeableConceptTask Type
Binding: TaskCode (example): Codes to identify what the task involves. These will typically be specific to a particular workflow.

... description Σ0..1stringHuman-readable explanation of task
... focus Σ0..1Reference(Resource)What task is acting on
... for Σ0..1Reference(Laboratory Workflow Patient)Beneficiary of the Task
... encounter Σ0..1Reference(Encounter)Healthcare event during which this task originated
... executionPeriod Σ0..1PeriodStart and end time of execution
... authoredOn I1..1dateTimeTask Creation Date
... lastModified ΣI0..1dateTimeTask Last Modified Date
... requester Σ0..1Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)Who is asking for task to be done
... performerType 0..*CodeableConceptRequested performer
Binding: ProcedurePerformerRoleCodes (preferred): The type(s) of task performers allowed.


... owner Σ0..1Reference(Practitioner | Organization | HealthcareService)Responsible individual
... location Σ0..1Reference(Location)Where task occurs
... reasonCode 0..1CodeableConceptWhy task is needed
Binding: (unbound) (example): Indicates why the task is needed. E.g. Suspended because patient admitted to hospital.

... reasonReference 0..1Reference(Resource)Why task is needed
... insurance 0..*Reference(Coverage | ClaimResponse)Associated insurance coverage
... note 0..*AnnotationComments made about the task
... relevantHistory 0..*Reference(Provenance)Key events in history of the Task
... restriction 0..1BackboneElementConstraints on fulfillment tasks
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... repetitions 0..1positiveIntHow many times to repeat
.... period 0..1PeriodWhen fulfillment sought
.... recipient 0..*Reference(Patient | Practitioner | PractitionerRole | RelatedPerson | Group | Organization)For whom is fulfillment sought?
... input 0..*BackboneElementInformation used to perform task
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... type 1..1CodeableConceptLabel for the input
Binding: (unbound) (example): Codes to identify types of input parameters. These will typically be specific to a particular workflow. E.g. "Comparison source", "Applicable consent", "Concomitent Medications", etc.

.... value[x] 1..1Content to use in performing the task
..... valueBase64Binarybase64Binary
..... valueBooleanboolean
..... valueCanonicalcanonical(Any)
..... valueCodecode
..... valueDatedate
..... valueDateTimedateTime
..... valueDecimaldecimal
..... valueIdid
..... valueInstantinstant
..... valueIntegerinteger
..... valueMarkdownmarkdown
..... valueOidoid
..... valuePositiveIntpositiveInt
..... valueStringstring
..... valueTimetime
..... valueUnsignedIntunsignedInt
..... valueUriuri
..... valueUrlurl
..... valueUuiduuid
..... valueAddressAddress
..... valueAgeAge
..... valueAnnotationAnnotation
..... valueAttachmentAttachment
..... valueCodeableConceptCodeableConcept
..... valueCodingCoding
..... valueContactPointContactPoint
..... valueCountCount
..... valueDistanceDistance
..... valueDurationDuration
..... valueHumanNameHumanName
..... valueIdentifierIdentifier
..... valueMoneyMoney
..... valuePeriodPeriod
..... valueQuantityQuantity
..... valueRangeRange
..... valueRatioRatio
..... valueReferenceReference(Any)
..... valueSampledDataSampledData
..... valueSignatureSignature
..... valueTimingTiming
..... valueContactDetailContactDetail
..... valueContributorContributor
..... valueDataRequirementDataRequirement
..... valueExpressionExpression
..... valueParameterDefinitionParameterDefinition
..... valueRelatedArtifactRelatedArtifact
..... valueTriggerDefinitionTriggerDefinition
..... valueUsageContextUsageContext
..... valueDosageDosage
..... valueMetaMeta
... output 0..*BackboneElementInformation produced as part of task
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... type 1..1CodeableConceptLabel for output
Binding: (unbound) (example): Codes to identify types of input parameters. These will typically be specific to a particular workflow. E.g. "Identified issues", "Preliminary results", "Filler order", "Final results", etc.

..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... coding Σ0..*CodingCode defined by a terminology system
..... text Σ0..1stringPlain text representation of the concept
Required Pattern: DiagnosticReport
.... value[x] 1..1Reference(Laboratory Diagnostic Report)Result of output

doco Documentation for this format

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

PathConformanceValueSet
Task.languagepreferredCommonLanguages
Max Binding: AllLanguages
Task.statusrequiredLaboratoryTaskStatusVS
Task.statusReasonexample
Task.businessStatusexample
Task.intentrequiredLaboratoryTaskIntentVS
Task.priorityrequiredRequestPriority
Task.codeexampleTaskCode
Task.performerTypepreferredProcedurePerformerRoleCodes
Task.reasonCodeexample
Task.input.typeexample
Task.output.typeexample

Constraints

IdGradePathDetailsRequirements
dom-2errorTaskIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorTaskIf 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-4errorTaskIf 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-5errorTaskIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6Best PracticeTaskA resource should have narrative for robust management
: text.`div`.exists()
inv-1errorTaskLast modified date must be greater than or equal to authored-on date.
: lastModified.exists().not() or authoredOn.exists().not() or lastModified >= authoredOn
ele-1errorTask.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorTask.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorTask.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorTask.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorTask.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.instantiatesCanonicalAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.instantiatesUriAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.basedOnAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.groupIdentifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.partOfAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.statusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.statusReasonAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.businessStatusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.intentAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.priorityAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.descriptionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.focusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.forAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.encounterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.executionPeriodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.authoredOnAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.lastModifiedAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.requesterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.performerTypeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.ownerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.locationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.reasonCodeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.reasonReferenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.insuranceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.noteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.relevantHistoryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.restrictionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.restriction.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorTask.restriction.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorTask.restriction.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorTask.restriction.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorTask.restriction.repetitionsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.restriction.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.restriction.recipientAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.inputAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.input.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorTask.input.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorTask.input.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorTask.input.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorTask.input.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.input.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.outputAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.output.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorTask.output.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorTask.output.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorTask.output.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorTask.output.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.output.type.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorTask.output.type.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorTask.output.type.codingAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.output.type.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorTask.output.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())