eHealth Infrastructure
2021.3.0 - build

eHealth Infrastructure - Local Development build (v2021.3.0). See the Directory of published versions

Resource Profile: ehealth-communication-request

Defining URL:http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-request
Version:2021.3.0
Name:ehealth-communication-request
Status:Active as of 2021-11-25T09:32:14+00:00
Publisher:Systematic | Trifork
Source Resource:XML / JSON / Turtle

The official URL for this profile is:

http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-request

Introduction

The CommunicationRequest resource allows for change in the way eHealth automated processing creates Communication (of profile ehealth-message) as a result of a submitted measurement or lack thereof for a particular Patient and context.

Scope and Usage

In the eHealth Infrastructure, automated processing generates Communication (of profile ehealth-message) in the following cases:

  • Automated processing has been performed on a submitted measurement - whether zero, one or more Communication are created depends on the automated processing rules involved.
  • A measurement is missing, that is, expected measurement has not been submitted
  • A measurement has been submitted at unexpected time

By default, the Communication is created with recipient set to the one or more CareTeam associated with the CarePlan referencing the ProcedureRequest for which the measurement was made.

The CommunicationRequest is used to customize how and when Communications are created by automated processing:

  • For a CareTeam, the CommunicationRequest specifies suppression of setting the CareTeam as recipient of Communication
  • For a Patient, the CommunicationRequest specifies additional creation of Communication with the Patient as recipient

If multiple CommunicationRequests for the same recipient are found, then only the newest is considered valid.

Suppression of setting a CareTeam as recipient in Communication

When automated processing creates Communication about a specific ProcedureRequest and Patient, the CareTeam is not set as recipient when a CommunicationRequest exists where:

  • basedOn references the ProcedureRequest
  • recipient references the CareTeam
  • reasonCode matches the Communication reasonCode (of the Communication created for CareTeam).
  • priority matches the Task priority (of the Task created for CareTeam).
  • status is ‘suspended’

Setting the status to any other value than ‘suspended’ disables the specified suppression of Communication with the CareTeam as recipient. The Communication is created with recipient set as the remaining one or more CareTeam referenced from the CarePlan referencing the ProcedureRequest. In case no remaining CareTeam are referenced from the CarePlan, no Communication is created.

Creation of Communication with Patient as recipient

When automated processing creates Communication about a specific ProcedureRequest and Patient, additional Communication with the Patient as recipient is created if a CommunicationRequest exists where:

  • basedOn references the ProcedureRequest
  • recipient references the Patient
  • reasonCode matches the Communication reasonCode (of the Communication created for CareTeam).
  • priority matches the Task priority (of the Task created for CareTeam).
  • status is ‘active’

Setting the status to ‘suspended’ disables the specified creation of Communication with the Patient as recipient.

Override medium and payload

It is possible to use CommunicationRequest to override some default values of the Communication:

  • medium of the Communication (created for the Patient or Careteam) overrides the Communication medium (of the Communication created for CareTeam).
  • payload of the Communication (created for the Patient) overrides the Communication payload (of the Communication created for CareTeam).

Boundaries and Relationships

A CommunicationRequest is related to Communication (ehealth-message), Task (ehealth-task), and ProcedureRequest (ehealth-procedureRequest).

Formal Views of Profile Content

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

This structure is derived from CommunicationRequest

Summary

Mandatory: 3 elements

Extensions

This structure refers to these extensions:

This structure is derived from CommunicationRequest

NameFlagsCard.TypeDescription & Constraintsdoco
.. CommunicationRequest 0..*CommunicationRequestA request for information to be sent to a receiver
... Slices for extension 1..*ExtensionExtension
Slice: Unordered, Open by value:url
... workflow-episodeOfCare 1..1Reference(EpisodeOfCare)Associated Encounter episode of care
URL: http://hl7.org/fhir/StructureDefinition/workflow-episodeOfCare
... basedOn 0..1Reference(Resource)Fulfills plan or proposal
... priority 0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required)
... medium 0..*CodeableConceptA channel of communication
Binding: MessageMedium (required)
... subject 1..1Reference(Patient)Focus of message
... recipient 0..*Reference(Patient | CareTeam) {r}Message recipient

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. CommunicationRequest 0..*CommunicationRequestA request for information to be sent to a receiver
... 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)
Max Binding: AllLanguages: A human language.

... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... Slices for extension 1..*ExtensionExtension
Slice: Unordered, Open by value:url
... workflow-episodeOfCare 1..1Reference(EpisodeOfCare)Associated Encounter episode of care
URL: http://hl7.org/fhir/StructureDefinition/workflow-episodeOfCare
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierUnique identifier
... basedOn Σ0..1Reference(Resource)Fulfills plan or proposal
... replaces Σ0..*Reference(CommunicationRequest)Request(s) replaced by this request
... groupIdentifier Σ0..1IdentifierComposite request this is part of
... status ?!Σ1..1codedraft | active | on-hold | revoked | completed | entered-in-error | unknown
Binding: RequestStatus (required): The status of the communication request.

... statusReason 0..1CodeableConceptReason for current status
Binding: (unbound) (example): Codes identifying the reason for the current state of a request.

... category 0..*CodeableConceptMessage category
Binding: MessageCategory (required)
... priority Σ0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required)
... doNotPerform ?!Σ0..1booleanTrue if request is prohibiting action
... medium 0..*CodeableConceptA channel of communication
Binding: MessageMedium (required)
... subject 1..1Reference(Patient)Focus of message
... about 0..*Reference(Resource)Resources that pertain to this communication request
... encounter Σ0..1Reference(Encounter)Encounter created as part of
... payload 0..*BackboneElementMessage payload
.... 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
.... content[x] 1..1Message part content
..... contentStringstring
..... contentAttachmentAttachment
..... contentReferenceReference(Resource)
... occurrence[x] Σ0..1When scheduled
.... occurrenceDateTimedateTime
.... occurrencePeriodPeriod
... authoredOn Σ0..1dateTimeWhen request transitioned to being actionable
... requester Σ0..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device)Who/what is requesting service
... recipient 0..*Reference(Patient | CareTeam) {r}Message recipient
... sender Σ0..1Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson | HealthcareService)Message sender
... reasonCode Σ0..*CodeableConceptWhy is communication needed?
Binding: v3 Code System ActReason (example): Codes for describing reasons for the occurrence of a communication.


... reasonReference Σ0..*Reference(Condition | Observation | DiagnosticReport | DocumentReference)Why is communication needed?
... note 0..*AnnotationComments made about communication request

doco Documentation for this format

This structure is derived from CommunicationRequest

Summary

Mandatory: 3 elements

Extensions

This structure refers to these extensions:

Differential View

This structure is derived from CommunicationRequest

NameFlagsCard.TypeDescription & Constraintsdoco
.. CommunicationRequest 0..*CommunicationRequestA request for information to be sent to a receiver
... Slices for extension 1..*ExtensionExtension
Slice: Unordered, Open by value:url
... workflow-episodeOfCare 1..1Reference(EpisodeOfCare)Associated Encounter episode of care
URL: http://hl7.org/fhir/StructureDefinition/workflow-episodeOfCare
... basedOn 0..1Reference(Resource)Fulfills plan or proposal
... priority 0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required)
... medium 0..*CodeableConceptA channel of communication
Binding: MessageMedium (required)
... subject 1..1Reference(Patient)Focus of message
... recipient 0..*Reference(Patient | CareTeam) {r}Message recipient

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. CommunicationRequest 0..*CommunicationRequestA request for information to be sent to a receiver
... 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)
Max Binding: AllLanguages: A human language.

... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... Slices for extension 1..*ExtensionExtension
Slice: Unordered, Open by value:url
... workflow-episodeOfCare 1..1Reference(EpisodeOfCare)Associated Encounter episode of care
URL: http://hl7.org/fhir/StructureDefinition/workflow-episodeOfCare
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierUnique identifier
... basedOn Σ0..1Reference(Resource)Fulfills plan or proposal
... replaces Σ0..*Reference(CommunicationRequest)Request(s) replaced by this request
... groupIdentifier Σ0..1IdentifierComposite request this is part of
... status ?!Σ1..1codedraft | active | on-hold | revoked | completed | entered-in-error | unknown
Binding: RequestStatus (required): The status of the communication request.

... statusReason 0..1CodeableConceptReason for current status
Binding: (unbound) (example): Codes identifying the reason for the current state of a request.

... category 0..*CodeableConceptMessage category
Binding: MessageCategory (required)
... priority Σ0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required)
... doNotPerform ?!Σ0..1booleanTrue if request is prohibiting action
... medium 0..*CodeableConceptA channel of communication
Binding: MessageMedium (required)
... subject 1..1Reference(Patient)Focus of message
... about 0..*Reference(Resource)Resources that pertain to this communication request
... encounter Σ0..1Reference(Encounter)Encounter created as part of
... payload 0..*BackboneElementMessage payload
.... 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
.... content[x] 1..1Message part content
..... contentStringstring
..... contentAttachmentAttachment
..... contentReferenceReference(Resource)
... occurrence[x] Σ0..1When scheduled
.... occurrenceDateTimedateTime
.... occurrencePeriodPeriod
... authoredOn Σ0..1dateTimeWhen request transitioned to being actionable
... requester Σ0..1Reference(Practitioner | PractitionerRole | Organization | Patient | RelatedPerson | Device)Who/what is requesting service
... recipient 0..*Reference(Patient | CareTeam) {r}Message recipient
... sender Σ0..1Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson | HealthcareService)Message sender
... reasonCode Σ0..*CodeableConceptWhy is communication needed?
Binding: v3 Code System ActReason (example): Codes for describing reasons for the occurrence of a communication.


... reasonReference Σ0..*Reference(Condition | Observation | DiagnosticReport | DocumentReference)Why is communication needed?
... note 0..*AnnotationComments made about communication request

doco Documentation for this format

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

PathConformanceValueSet
CommunicationRequest.languagepreferredCommonLanguages
Max Binding: AllLanguages
CommunicationRequest.statusrequiredRequestStatus
CommunicationRequest.statusReasonexample
CommunicationRequest.categoryrequiredMessageCategory
CommunicationRequest.priorityrequiredRequestPriority
CommunicationRequest.mediumrequiredMessageMedium
CommunicationRequest.reasonCodeexampleActReason

Constraints

IdPathDetailsRequirements
dom-2CommunicationRequestIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3CommunicationRequestIf 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-4CommunicationRequestIf 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-5CommunicationRequestIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6CommunicationRequestA resource should have narrative for robust management
: text.`div`.exists()
ele-1CommunicationRequest.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1CommunicationRequest.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1CommunicationRequest.extension:episodeOfCareAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1CommunicationRequest.extension:episodeOfCareMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1CommunicationRequest.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1CommunicationRequest.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1CommunicationRequest.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.basedOnAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.replacesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.groupIdentifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.statusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.statusReasonAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.categoryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.priorityAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.doNotPerformAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.mediumAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.subjectAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.aboutAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.encounterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.payloadAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.payload.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1CommunicationRequest.payload.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1CommunicationRequest.payload.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1CommunicationRequest.payload.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1CommunicationRequest.payload.content[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.occurrence[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.authoredOnAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.requesterAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.recipientAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.senderAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.reasonCodeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.reasonReferenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1CommunicationRequest.noteAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())