FHIR Implementation Guide for HCX
0.7.0 - CI Build

FHIR Implementation Guide for HCX - Local Development build (v0.7.0). See the Directory of published versions

Resource Profile: HCX Communication Document

Defining URL:https://swasth-digital-health-foundation.github.io/standards/v0.7/StructureDefinition-CommunicationDocument.html
Version:0.7.0
Name:CommunicationDocument
Status:Draft as of 2021-08-16 05:23:00+0530 (Standards Status: Trial Use)
Definition:

A set of healthcare-related information that is assembled together into a single logical package that provides a single coherent statement of meaning, establishes its own context and that has clinical attestation with regard to who is making the statement. A Composition defines the structure and narrative content necessary for a document. However, a Composition alone does not constitute a document. Rather, the Composition must be the first entry in a Bundle where Bundle.type=document, and any other resources referenced from Composition must be included as subsequent entries in the Bundle (for example Patient, Practitioner, Encounter, etc.).

Publisher:HCX Open Community
Committee:Structured Documents
Maturity:0
Source Resource:XML / JSON / Turtle

The official URL for this profile is:

https://swasth-digital-health-foundation.github.io/standards/v0.7/StructureDefinition-CommunicationDocument.html

Formal Views of Profile Content

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

This structure is derived from Composition

Summary

Mandatory: 1 element
Fixed Value: 1 element

Structures

This structure refers to these other structures:

Maturity: 0

This structure is derived from Composition

NameFlagsCard.TypeDescription & Constraintsdoco
.. Composition 0..*CompositionA set of resources composed into a single coherent clinical statement with clinical attestation
... type 1..1CodeableConceptKind of composition (LOINC if possible)
Binding: FHIRDocumentTypeCodes (required): Type of a composition. TODO - Value set of all HCX objects.

... section 1..1BackboneElementComposition is broken into sections
.... code 0..1CodeableConceptClassification of section (recommended)
Binding: DocumentSectionCodes (required): TODO - value set listing all HCX eObjects including Communication for this one.


Fixed Value: As shown
..... text1..1stringPlain text representation of the concept
Fixed Value: Communication
.... entry 0..*Reference(Communication)A reference to data that supports this section

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Composition 0..*CompositionA set of resources composed into a single coherent clinical statement with clinical attestation
... 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
... 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 Σ0..1IdentifierVersion-independent identifier for the Composition
... status ?!Σ1..1codepreliminary | final | amended | entered-in-error
Binding: CompositionStatus (required): The workflow/clinical status of the composition.

... type Σ1..1CodeableConceptKind of composition (LOINC if possible)
Binding: FHIRDocumentTypeCodes (required): Type of a composition. TODO - Value set of all HCX objects.

... category Σ0..*CodeableConceptCategorization of Composition
Binding: DocumentClassValueSet (example): High-level kind of a clinical document at a macro level.


... subject Σ0..1Reference(Resource)Who and/or what the composition is about
... encounter Σ0..1Reference(Encounter)Context of the Composition
... date Σ1..1dateTimeComposition editing time
... author Σ1..*Reference(Practitioner | PractitionerRole | Device | Patient | RelatedPerson | Organization)Who and/or what authored the composition
... title Σ1..1stringHuman Readable name/title
... confidentiality Σ0..1codeAs defined by affinity domain
Binding: v3.ConfidentialityClassification (2014-03-26) (required): Codes specifying the level of confidentiality of the composition.

... attester 0..*BackboneElementAttests to accuracy of composition
.... 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
.... mode 1..1codepersonal | professional | legal | official
Binding: CompositionAttestationMode (required): The way in which a person authenticated a composition.

.... time 0..1dateTimeWhen the composition was attested
.... party 0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole | Organization)Who attested the composition
... custodian Σ0..1Reference(Organization)Organization which maintains the composition
... relatesTo 0..*BackboneElementRelationships to other compositions/documents
.... 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
.... code 1..1codereplaces | transforms | signs | appends
Binding: DocumentRelationshipType (required): The type of relationship between documents.

.... target[x] 1..1Target of the relationship
..... targetIdentifierIdentifier
..... targetReferenceReference(Composition)
... event Σ0..*BackboneElementThe clinical service(s) being documented
.... 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
.... code Σ0..*CodeableConceptCode(s) that apply to the event being documented
Binding: v3 Code System ActCode (example): This list of codes represents the main clinical acts being documented.


.... period Σ0..1PeriodThe period covered by the documentation
.... detail Σ0..*Reference(Resource)The event(s) being documented
... section I1..1BackboneElementComposition is broken into sections
.... 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
.... title 0..1stringLabel for section (e.g. for ToC)
.... code 0..1CodeableConceptClassification of section (recommended)
Binding: DocumentSectionCodes (required): TODO - value set listing all HCX eObjects including Communication for this one.


Fixed Value: As shown
..... id0..0stringUnique id for inter-element referencing
..... extension0..0ExtensionAdditional content defined by implementations
..... coding0..0CodingCode defined by a terminology system
..... text1..1stringPlain text representation of the concept
Fixed Value: Communication
.... author 0..*Reference(Practitioner | PractitionerRole | Device | Patient | RelatedPerson | Organization)Who and/or what authored the section
.... focus 0..1Reference(Resource)Who/what the section is about, when it is not about the subject of composition
.... text I0..1NarrativeText summary of the section, for human interpretation
.... mode 0..1codeworking | snapshot | changes
Binding: ListMode (required): The processing mode that applies to this section.

.... orderedBy 0..1CodeableConceptOrder of section entries
Binding: ListOrderCodes (preferred): What order applies to the items in the entry.

.... entry I0..*Reference(Communication)A reference to data that supports this section
.... emptyReason I0..1CodeableConceptWhy the section is empty
Binding: ListEmptyReasons (preferred): If a section is empty, why it is empty.

.... section I0..*See section (Composition)Nested Section

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Composition 0..*CompositionA set of resources composed into a single coherent clinical statement with clinical attestation

doco Documentation for this format

This structure is derived from Composition

Summary

Mandatory: 1 element
Fixed Value: 1 element

Structures

This structure refers to these other structures:

Maturity: 0

Differential View

This structure is derived from Composition

NameFlagsCard.TypeDescription & Constraintsdoco
.. Composition 0..*CompositionA set of resources composed into a single coherent clinical statement with clinical attestation
... type 1..1CodeableConceptKind of composition (LOINC if possible)
Binding: FHIRDocumentTypeCodes (required): Type of a composition. TODO - Value set of all HCX objects.

... section 1..1BackboneElementComposition is broken into sections
.... code 0..1CodeableConceptClassification of section (recommended)
Binding: DocumentSectionCodes (required): TODO - value set listing all HCX eObjects including Communication for this one.


Fixed Value: As shown
..... text1..1stringPlain text representation of the concept
Fixed Value: Communication
.... entry 0..*Reference(Communication)A reference to data that supports this section

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Composition 0..*CompositionA set of resources composed into a single coherent clinical statement with clinical attestation
... 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
... 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 Σ0..1IdentifierVersion-independent identifier for the Composition
... status ?!Σ1..1codepreliminary | final | amended | entered-in-error
Binding: CompositionStatus (required): The workflow/clinical status of the composition.

... type Σ1..1CodeableConceptKind of composition (LOINC if possible)
Binding: FHIRDocumentTypeCodes (required): Type of a composition. TODO - Value set of all HCX objects.

... category Σ0..*CodeableConceptCategorization of Composition
Binding: DocumentClassValueSet (example): High-level kind of a clinical document at a macro level.


... subject Σ0..1Reference(Resource)Who and/or what the composition is about
... encounter Σ0..1Reference(Encounter)Context of the Composition
... date Σ1..1dateTimeComposition editing time
... author Σ1..*Reference(Practitioner | PractitionerRole | Device | Patient | RelatedPerson | Organization)Who and/or what authored the composition
... title Σ1..1stringHuman Readable name/title
... confidentiality Σ0..1codeAs defined by affinity domain
Binding: v3.ConfidentialityClassification (2014-03-26) (required): Codes specifying the level of confidentiality of the composition.

... attester 0..*BackboneElementAttests to accuracy of composition
.... 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
.... mode 1..1codepersonal | professional | legal | official
Binding: CompositionAttestationMode (required): The way in which a person authenticated a composition.

.... time 0..1dateTimeWhen the composition was attested
.... party 0..1Reference(Patient | RelatedPerson | Practitioner | PractitionerRole | Organization)Who attested the composition
... custodian Σ0..1Reference(Organization)Organization which maintains the composition
... relatesTo 0..*BackboneElementRelationships to other compositions/documents
.... 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
.... code 1..1codereplaces | transforms | signs | appends
Binding: DocumentRelationshipType (required): The type of relationship between documents.

.... target[x] 1..1Target of the relationship
..... targetIdentifierIdentifier
..... targetReferenceReference(Composition)
... event Σ0..*BackboneElementThe clinical service(s) being documented
.... 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
.... code Σ0..*CodeableConceptCode(s) that apply to the event being documented
Binding: v3 Code System ActCode (example): This list of codes represents the main clinical acts being documented.


.... period Σ0..1PeriodThe period covered by the documentation
.... detail Σ0..*Reference(Resource)The event(s) being documented
... section I1..1BackboneElementComposition is broken into sections
.... 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
.... title 0..1stringLabel for section (e.g. for ToC)
.... code 0..1CodeableConceptClassification of section (recommended)
Binding: DocumentSectionCodes (required): TODO - value set listing all HCX eObjects including Communication for this one.


Fixed Value: As shown
..... id0..0stringUnique id for inter-element referencing
..... extension0..0ExtensionAdditional content defined by implementations
..... coding0..0CodingCode defined by a terminology system
..... text1..1stringPlain text representation of the concept
Fixed Value: Communication
.... author 0..*Reference(Practitioner | PractitionerRole | Device | Patient | RelatedPerson | Organization)Who and/or what authored the section
.... focus 0..1Reference(Resource)Who/what the section is about, when it is not about the subject of composition
.... text I0..1NarrativeText summary of the section, for human interpretation
.... mode 0..1codeworking | snapshot | changes
Binding: ListMode (required): The processing mode that applies to this section.

.... orderedBy 0..1CodeableConceptOrder of section entries
Binding: ListOrderCodes (preferred): What order applies to the items in the entry.

.... entry I0..*Reference(Communication)A reference to data that supports this section
.... emptyReason I0..1CodeableConceptWhy the section is empty
Binding: ListEmptyReasons (preferred): If a section is empty, why it is empty.

.... section I0..*See section (Composition)Nested Section

doco Documentation for this format

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

PathConformanceValueSet / Code
Composition.languagepreferredCommonLanguages
Max Binding: AllLanguages
Composition.statusrequiredCompositionStatus
Composition.typerequiredFHIRDocumentTypeCodes
Composition.categoryexampleDocumentClassValueSet
Composition.confidentialityrequiredv3.ConfidentialityClassification
Composition.attester.moderequiredCompositionAttestationMode
Composition.relatesTo.coderequiredDocumentRelationshipType
Composition.event.codeexampleActCode
Composition.section.coderequiredFixed Value: "Communication"
Composition.section.moderequiredListMode
Composition.section.orderedBypreferredListOrderCodes
Composition.section.emptyReasonpreferredListEmptyReasons

Constraints

IdGradePathDetailsRequirements
dom-2errorCompositionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorCompositionIf 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-4errorCompositionIf 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-5errorCompositionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6Best PracticeCompositionA resource should have narrative for robust management
: text.`div`.exists()
ele-1errorComposition.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorComposition.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorComposition.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorComposition.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorComposition.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.statusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.categoryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.subjectAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.encounterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.dateAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.authorAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.titleAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.confidentialityAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.attesterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.attester.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorComposition.attester.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorComposition.attester.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorComposition.attester.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorComposition.attester.modeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.attester.timeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.attester.partyAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.custodianAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.relatesToAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.relatesTo.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorComposition.relatesTo.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorComposition.relatesTo.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorComposition.relatesTo.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorComposition.relatesTo.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.relatesTo.target[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.eventAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.event.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorComposition.event.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorComposition.event.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorComposition.event.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorComposition.event.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.event.periodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.event.detailAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
cmp-1errorComposition.sectionA section must contain at least one of text, entries, or sub-sections
: text.exists() or entry.exists() or section.exists()
cmp-2errorComposition.sectionA section can only have an emptyReason if it is empty
: emptyReason.empty() or entry.empty()
ele-1errorComposition.sectionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.section.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorComposition.section.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorComposition.section.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1errorComposition.section.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1errorComposition.section.titleAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.section.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.section.authorAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.section.focusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.section.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.section.modeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.section.orderedByAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.section.entryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.section.emptyReasonAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1errorComposition.section.sectionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())