eHealth Infrastructure - Local Development build (v2.4.0). See the Directory of published versions
Official URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-message | Version: 2.4.0 | |||
Active as of 2022-10-14 | Computable Name: ehealth-message |
An ehealth-message defines written communication and comes in four flavours depending on the “category” of the message:
An ehealth-message may refer related resources (eg. Device, CarePlan, Appointment etc) using the “about” field, no matter which category it is. Different instances of ehealth-message may be logically organized into “threads” by assigning the same thread-id in the provided extension. Similarly, they may be organized in a group (eg. group messages) by assigning the same group-id in that extension. The message subject may be provided in the title extension, and an optional priority may be provided in the ehealth-priority extension.
The ehealth-message profile contains two status fields:
Some fields are filled in automatically on message creation, eg. if a sound default value makes sense. These fields are:
The following custom search parameters may be used when searching for ehealth-message instances:
In the eHealth Infrastructure the ehealth-message resource is used in conjunction with the following resources:
The following rules apply for the ehealth-message profile:
The Patient service will forward ehealth-messages to the public danish NemSMS service given the following conditions:
The message is forwarded asynchronously. To track the progress of the NemSMS, the status
and statusReason
code is used:
The Patient service will generate NemSMS ehealth-messages, notifying the recipient that they have received a message, given the following conditions:
The Patient service will generate NemSMS ehealth-messages, notifying patients that they have an appointment or video appointment scheduled for de following day, given the following conditions:
An ehealth-message may not have its category changed, eg. from ‘note’ to ‘message’.
An ehealth-message may be PATCH updated on paths complying with the regular expressions below (provided that security and status transition rules are obeyed)
Usage:
Description of Profiles, Differentials, Snapshots and how the different presentations work.
This structure is derived from Communication
Summary
Mandatory: 4 elements (3 nested mandatory elements)
Must-Support: 1 element
Structures
This structure refers to these other structures:
Extensions
This structure refers to these extensions:
Slices
This structure defines the following Slices:
This structure is derived from Communication
Name | Flags | Card. | Type | Description & Constraints | ||||
---|---|---|---|---|---|---|---|---|
Communication | C | 0..* | Communication | A record of information transmitted from a sender to a receiver nemsms-invariant: If communication resource is a NemSMS payload cannot exceed 160 note-invariant: Category note invariant notification-invariant: Category notification invariant message-invariant: Category message invariant | ||||
id | Σ | 0..1 | id | Logical id of this artifact | ||||
meta | Σ | 0..1 | Meta | Metadata about the resource | ||||
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
language | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
text | 0..1 | Narrative | Text summary of the resource, for human interpretation | |||||
contained | 0..* | Resource | Contained, inline Resources | |||||
Slices for extension | 1..* | Extension | Extension Slice: Unordered, Open by value:url | |||||
episodeOfCare | 0..1 | Reference(EpisodeOfCare) | Associated Encounter episode of care URL: http://hl7.org/fhir/StructureDefinition/workflow-episodeOfCare | |||||
recipientCareTeam | 0..1 | Reference() | CareTeam message recipient URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-recipientCareTeam | |||||
senderCareTeam | 0..1 | Reference(ehealth-careteam) {r} | CareTeam message sender URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-senderCareTeam | |||||
restrictionCategory | 0..* | CodeableConcept | Restriction category URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-restriction-category Binding: Restriction Category (required) | |||||
threadId | 0..1 | string | Thread id URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-thread-id | |||||
period | 0..* | Period | Specifies the temporal validity of an ehealth/message instance URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-period | |||||
administrativeStatus | 1..1 | Coding | The administrative status of how a message recipient has handled a message URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-administrative-status Binding: Administrative Status (required) | |||||
title | 0..1 | string | Message title URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-title | |||||
priority | 0..1 | code | The priority of a message URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-priority Binding: Priority (required) | |||||
groupId | 0..1 | string | Logical id identifying a set of messages with the same recipient URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-group-id | |||||
onBehalfOf | S | 0..1 | Reference(ehealth-careteam) {r} | On behalf of URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-on-behalf-of | ||||
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored | ||||
identifier | Σ | 0..* | Identifier | Unique identifier | ||||
instantiatesCanonical | Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | Instantiates FHIR protocol or definition | ||||
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition | ||||
basedOn | Σ | 0..* | Reference(Resource) | Request fulfilled by this communication | ||||
partOf | Σ | 0..* | Reference(CarePlan) {r} | Part of this action | ||||
inResponseTo | 0..* | Reference(Communication) | Reply to | |||||
status | ?!Σ | 1..1 | code | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown Binding: EventStatus (required): The status of the communication. | ||||
statusReason | Σ | 0..1 | CodeableConcept | Reason for current status Binding: CommunicationNotDoneReason (example): Codes for the reason why a communication did not happen. | ||||
Slices for category | 1..* | CodeableConcept | Message category Slice: Unordered, Open by value:coding.system Binding: CommunicationCategory (example): Codes for general categories of communications such as alerts, instructions, etc. | |||||
category:DkTmCategory | 1..1 | CodeableConcept | Message category Binding: CommunicationCategory (example): Codes for general categories of communications such as alerts, instructions, etc. | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
coding | Σ | 0..* | Coding | Code defined by a terminology system | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
system | Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://ehealth.sundhed.dk/cs/message-category | ||||
version | Σ | 0..1 | string | Version of the system - if relevant | ||||
code | Σ | 0..1 | code | Symbol in syntax defined by the system Binding: MessageCategory (required) | ||||
display | Σ | 0..1 | string | Representation defined by the system | ||||
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user | ||||
text | Σ | 0..1 | string | Plain text representation of the concept | ||||
priority | Σ | 0..1 | code | routine | urgent | asap | stat Binding: RequestPriority (required): Codes indicating the relative importance of a communication. | ||||
Slices for medium | 0..* | CodeableConcept | A channel of communication Slice: Unordered, Open by value:coding.system Binding: ParticipationMode (example): Codes for communication mediums such as phone, fax, email, in person, etc. | |||||
medium:DkTmMedium | 0..1 | CodeableConcept | A channel of communication Binding: ParticipationMode (example): Codes for communication mediums such as phone, fax, email, in person, etc. | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
coding | Σ | 0..* | Coding | Code defined by a terminology system | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
system | Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://ehealth.sundhed.dk/cs/message-medium | ||||
version | Σ | 0..1 | string | Version of the system - if relevant | ||||
code | Σ | 0..1 | code | Symbol in syntax defined by the system Binding: MessageMedium (required) | ||||
display | Σ | 0..1 | string | Representation defined by the system | ||||
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user | ||||
text | Σ | 0..1 | string | Plain text representation of the concept | ||||
subject | Σ | 0..1 | Reference(Patient | Group) | Focus of message | ||||
topic | 0..1 | CodeableConcept | Description of the purpose/content Binding: CommunicationTopic (example): Codes describing the purpose or content of the communication. | |||||
about | 0..* | Reference(Resource) | Resources that pertain to this communication | |||||
encounter | Σ | 0..1 | Reference(Encounter) | Encounter created as part of | ||||
sent | 0..1 | dateTime | When sent | |||||
received | 0..1 | dateTime | When received | |||||
recipient | 0..1 | Reference(Patient | Practitioner) {r} | Message recipient | |||||
sender | 0..1 | Reference(Device | Patient | Practitioner) {rc} | Message sender | |||||
reasonCode | Σ | 0..* | CodeableConcept | Indication for message Binding: eHealth Message Reason Code (required) | ||||
reasonReference | Σ | 0..* | Reference(Condition | Observation) {r} | Why was communication done? | ||||
payload | 0..1 | BackboneElement | Message payload | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
Slices for content[x] | 1..1 | string | Message part content Slice: Unordered, Closed by type:$this | |||||
content[x]:contentString | 1..1 | string | Message part content | |||||
note | 0..* | Annotation | Comments made about the communication | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
Slices for author[x] | Σ | 0..1 | Individual responsible for the annotation Slice: Unordered, Closed by type:$this | |||||
authorReference | Reference(Practitioner | Patient | RelatedPerson | Organization) | |||||||
authorString | string | |||||||
author[x]:authorReference | Σ | 0..1 | Reference(ehealth-practitioner | ehealth-patient | ehealth-relatedperson) | Individual responsible for the annotation | ||||
author[x]:authorString | Σ | 0..1 | string | Individual responsible for the annotation | ||||
time | Σ | 0..1 | dateTime | When the annotation was made | ||||
text | Σ | 1..1 | markdown | The annotation - text content (as markdown) | ||||
Documentation for this format |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Communication | C | 0..* | Communication | A record of information transmitted from a sender to a receiver nemsms-invariant: If communication resource is a NemSMS payload cannot exceed 160 note-invariant: Category note invariant notification-invariant: Category notification invariant message-invariant: Category message invariant |
onBehalfOf | 0..1 | Reference(ehealth-careteam) {r} | On behalf of URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-on-behalf-of | |
Documentation for this format |
This structure is derived from Communication
Summary
Mandatory: 4 elements (3 nested mandatory elements)
Must-Support: 1 element
Structures
This structure refers to these other structures:
Extensions
This structure refers to these extensions:
Slices
This structure defines the following Slices:
Differential View
This structure is derived from Communication
Snapshot View
Name | Flags | Card. | Type | Description & Constraints | ||||
---|---|---|---|---|---|---|---|---|
Communication | C | 0..* | Communication | A record of information transmitted from a sender to a receiver nemsms-invariant: If communication resource is a NemSMS payload cannot exceed 160 note-invariant: Category note invariant notification-invariant: Category notification invariant message-invariant: Category message invariant | ||||
id | Σ | 0..1 | id | Logical id of this artifact | ||||
meta | Σ | 0..1 | Meta | Metadata about the resource | ||||
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
language | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
text | 0..1 | Narrative | Text summary of the resource, for human interpretation | |||||
contained | 0..* | Resource | Contained, inline Resources | |||||
Slices for extension | 1..* | Extension | Extension Slice: Unordered, Open by value:url | |||||
episodeOfCare | 0..1 | Reference(EpisodeOfCare) | Associated Encounter episode of care URL: http://hl7.org/fhir/StructureDefinition/workflow-episodeOfCare | |||||
recipientCareTeam | 0..1 | Reference() | CareTeam message recipient URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-recipientCareTeam | |||||
senderCareTeam | 0..1 | Reference(ehealth-careteam) {r} | CareTeam message sender URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-senderCareTeam | |||||
restrictionCategory | 0..* | CodeableConcept | Restriction category URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-restriction-category Binding: Restriction Category (required) | |||||
threadId | 0..1 | string | Thread id URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-thread-id | |||||
period | 0..* | Period | Specifies the temporal validity of an ehealth/message instance URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-period | |||||
administrativeStatus | 1..1 | Coding | The administrative status of how a message recipient has handled a message URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-administrative-status Binding: Administrative Status (required) | |||||
title | 0..1 | string | Message title URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-title | |||||
priority | 0..1 | code | The priority of a message URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-priority Binding: Priority (required) | |||||
groupId | 0..1 | string | Logical id identifying a set of messages with the same recipient URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-group-id | |||||
onBehalfOf | S | 0..1 | Reference(ehealth-careteam) {r} | On behalf of URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-on-behalf-of | ||||
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored | ||||
identifier | Σ | 0..* | Identifier | Unique identifier | ||||
instantiatesCanonical | Σ | 0..* | canonical(PlanDefinition | ActivityDefinition | Measure | OperationDefinition | Questionnaire) | Instantiates FHIR protocol or definition | ||||
instantiatesUri | Σ | 0..* | uri | Instantiates external protocol or definition | ||||
basedOn | Σ | 0..* | Reference(Resource) | Request fulfilled by this communication | ||||
partOf | Σ | 0..* | Reference(CarePlan) {r} | Part of this action | ||||
inResponseTo | 0..* | Reference(Communication) | Reply to | |||||
status | ?!Σ | 1..1 | code | preparation | in-progress | not-done | on-hold | stopped | completed | entered-in-error | unknown Binding: EventStatus (required): The status of the communication. | ||||
statusReason | Σ | 0..1 | CodeableConcept | Reason for current status Binding: CommunicationNotDoneReason (example): Codes for the reason why a communication did not happen. | ||||
Slices for category | 1..* | CodeableConcept | Message category Slice: Unordered, Open by value:coding.system Binding: CommunicationCategory (example): Codes for general categories of communications such as alerts, instructions, etc. | |||||
category:DkTmCategory | 1..1 | CodeableConcept | Message category Binding: CommunicationCategory (example): Codes for general categories of communications such as alerts, instructions, etc. | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
coding | Σ | 0..* | Coding | Code defined by a terminology system | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
system | Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://ehealth.sundhed.dk/cs/message-category | ||||
version | Σ | 0..1 | string | Version of the system - if relevant | ||||
code | Σ | 0..1 | code | Symbol in syntax defined by the system Binding: MessageCategory (required) | ||||
display | Σ | 0..1 | string | Representation defined by the system | ||||
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user | ||||
text | Σ | 0..1 | string | Plain text representation of the concept | ||||
priority | Σ | 0..1 | code | routine | urgent | asap | stat Binding: RequestPriority (required): Codes indicating the relative importance of a communication. | ||||
Slices for medium | 0..* | CodeableConcept | A channel of communication Slice: Unordered, Open by value:coding.system Binding: ParticipationMode (example): Codes for communication mediums such as phone, fax, email, in person, etc. | |||||
medium:DkTmMedium | 0..1 | CodeableConcept | A channel of communication Binding: ParticipationMode (example): Codes for communication mediums such as phone, fax, email, in person, etc. | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
coding | Σ | 0..* | Coding | Code defined by a terminology system | ||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
system | Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://ehealth.sundhed.dk/cs/message-medium | ||||
version | Σ | 0..1 | string | Version of the system - if relevant | ||||
code | Σ | 0..1 | code | Symbol in syntax defined by the system Binding: MessageMedium (required) | ||||
display | Σ | 0..1 | string | Representation defined by the system | ||||
userSelected | Σ | 0..1 | boolean | If this coding was chosen directly by the user | ||||
text | Σ | 0..1 | string | Plain text representation of the concept | ||||
subject | Σ | 0..1 | Reference(Patient | Group) | Focus of message | ||||
topic | 0..1 | CodeableConcept | Description of the purpose/content Binding: CommunicationTopic (example): Codes describing the purpose or content of the communication. | |||||
about | 0..* | Reference(Resource) | Resources that pertain to this communication | |||||
encounter | Σ | 0..1 | Reference(Encounter) | Encounter created as part of | ||||
sent | 0..1 | dateTime | When sent | |||||
received | 0..1 | dateTime | When received | |||||
recipient | 0..1 | Reference(Patient | Practitioner) {r} | Message recipient | |||||
sender | 0..1 | Reference(Device | Patient | Practitioner) {rc} | Message sender | |||||
reasonCode | Σ | 0..* | CodeableConcept | Indication for message Binding: eHealth Message Reason Code (required) | ||||
reasonReference | Σ | 0..* | Reference(Condition | Observation) {r} | Why was communication done? | ||||
payload | 0..1 | BackboneElement | Message payload | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations | |||||
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
Slices for content[x] | 1..1 | string | Message part content Slice: Unordered, Closed by type:$this | |||||
content[x]:contentString | 1..1 | string | Message part content | |||||
note | 0..* | Annotation | Comments made about the communication | |||||
id | 0..1 | string | Unique id for inter-element referencing | |||||
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
Slices for author[x] | Σ | 0..1 | Individual responsible for the annotation Slice: Unordered, Closed by type:$this | |||||
authorReference | Reference(Practitioner | Patient | RelatedPerson | Organization) | |||||||
authorString | string | |||||||
author[x]:authorReference | Σ | 0..1 | Reference(ehealth-practitioner | ehealth-patient | ehealth-relatedperson) | Individual responsible for the annotation | ||||
author[x]:authorString | Σ | 0..1 | string | Individual responsible for the annotation | ||||
time | Σ | 0..1 | dateTime | When the annotation was made | ||||
text | Σ | 1..1 | markdown | The annotation - text content (as markdown) | ||||
Documentation for this format |
Other representations of profile: CSV, Excel, Schematron
Path | Conformance | ValueSet |
Communication.language | preferred | CommonLanguages Max Binding: AllLanguages |
Communication.status | required | EventStatus |
Communication.statusReason | example | CommunicationNotDoneReason |
Communication.category | example | CommunicationCategory |
Communication.category:DkTmCategory | example | CommunicationCategory |
Communication.category:DkTmCategory.coding.code | required | MessageCategory |
Communication.priority | required | RequestPriority |
Communication.medium | example | ParticipationMode |
Communication.medium:DkTmMedium | example | ParticipationMode |
Communication.medium:DkTmMedium.coding.code | required | MessageMedium |
Communication.topic | example | CommunicationTopic |
Communication.reasonCode | required | eHealth Message Reason Code |
Id | Grade | Path | Details | Requirements |
nemsms-invariant | error | Communication | If communication resource is a NemSMS payload cannot exceed 160 : medium.coding.where(code = 'nemsms').exists() implies payload.contentString.length() <= 160 | |
note-invariant | error | Communication | Category note invariant : category.coding.code = 'note' implies (sender.reference = recipient.reference) or (recipient.reference.exists().not() and extension.where(url = 'http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-recipientCareTeam').valueReference.exists()) | |
notification-invariant | error | Communication | Category notification invariant : category.coding.code = 'notification' implies recipient.reference.contains('Patient/') and ( sender.reference.contains('Practitioner/') or extension.where(url = 'http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-senderCareTeam').valueReference.exists()) | |
message-invariant | error | Communication | Category message invariant : category.coding.code = 'message' implies (recipient.reference.contains('Patient/') and ( sender.reference.contains('Device/') or contained.ofType(Device).where('#' + id = %resource.sender.reference).empty().not() or extension.where(url = 'http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-senderCareTeam').valueReference.exists())) or (( extension.where(url = 'http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-recipientCareTeam').valueReference.exists()) and (sender.reference.contains('Patient/') or sender.reference.contains('Device/'))) or (extension.where(url = 'http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-recipientCareTeam').valueReference.exists() and extension.where(url = 'http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-senderCareTeam').valueReference.exists() ) |