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 “topic” 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. 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:
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:
An ehealth-message may not have its category changed, eg. from ‘note’ to ‘message’.
When status is “preparation”, message contents may be updated, but not after status has been set to “completed”.
An ehealth-message may be PATCH updated on paths complying with the regular expressions below.
Path | Description |
---|---|
/implicitRules.* | For category ‘note’ or status ‘preparation’ |
/category.* | For category ‘note’ or status ‘preparation’ |
/contained.* | For category ‘note’ or status ‘preparation’ |
/recipient.* | For category ‘note’ or status ‘preparation’ |
/definition.* | For category ‘note’ or status ‘preparation’ |
/basedOn.* | For category ‘note’ or status ‘preparation’ |
/partOf.* | For category ‘note’ or status ‘preparation’ |
/topic.* | For category ‘note’ or status ‘preparation’ |
/notDone.* | For category ‘note’ or status ‘preparation’ |
/notDoneReason.* | For category ‘note’ or status ‘preparation’ |
/context.* | For category ‘note’ or status ‘preparation’ |
/received.* | For all values of category |
/reasonCode.* | For category ‘note’ or status ‘preparation’ |
/reasonReference.* | For category ‘note’ or status ‘preparation’ |
/payload.* | For category ‘note’ or status ‘preparation’ |
/note.* | For category ‘note’ or status ‘preparation’ |
/status.* | For category ‘note’ or status ‘preparation’ |
/extension.* | For category ‘note’ or status ‘preparation’ |
The official URL for this profile is:
http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-message
This is the profile for general messaging in the eHealth platform. It covers four different message types: messages, notifications, advice, and notes. This is specified using the message category (value set "Message category"). When needed, a message medium may also be specified: NemSMS or eBoks (value set "Message medium").
Message-related state, such as whether a message has been read or not, or time limited validity on notifications, is handled through the use of the ehealth-detached-provenance resource.
This profile builds on Communication.
This profile was published on Wed Dec 04 13:16:07 UTC 2019 as a draft by ehealth.sundhed.dk.
Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.
This structure is derived from Communication
Summary
Mandatory: 2 elements (2 nested mandatory elements)
Fixed Value: 2 elements
Extensions
This structure refers to these extensions:
Slices
This structure defines the following Slices:
This structure is derived from Communication
This structure is derived from Communication
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Communication | I | 0..* | A record of information transmitted from a sender to a receiver | |
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: Common Languages (extensible) Max Binding: All Languages | |
text | I | 0..1 | Narrative | Text summary of the resource, for human interpretation |
contained | 0..* | Resource | Contained, inline Resources | |
extension | 0..* | Extension | Extension Slice: Unordered, Open by value:url | |
ehealth-communication-recipientCareTeam | I | 0..1 | Reference() | CareTeam message recipient URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-recipientCareTeam |
ehealth-communication-senderCareTeam | I | 0..1 | Reference() | CareTeam message sender URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-senderCareTeam |
ehealth-restriction-category | I | 0..* | CodeableConcept | Optional Extensions Element URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-restriction-category |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
url | 1..1 | uri | "http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-restriction-category" | |
value[x] | 0..1 | (Slice Definition) | Value of extension Slice: Unordered, Closed by type:$this | |
value[x]:valueCodeableConcept | 1..1 | CodeableConcept | Value of extension Binding: RestrictionCategory (required) | |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
coding | Σ | 0..* | Coding | Code defined by a terminology system Binding: RestrictionCategory (required) |
text | Σ | 0..1 | string | Plain text representation of the concept |
ehealth-thread-id | I | 0..1 | string | Optional Extensions Element URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-thread-id |
ehealth-period | I | 0..* | Period | Specified the temporal validity of an ehealth/message instance URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-period |
ehealth-administrative-status | I | 0..1 | Coding | Optional Extensions Element URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-administrative-status |
ehealth-title | I | 0..1 | string | Message title URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-title |
ehealth-priority | I | 0..1 | code | Optional Extensions Element URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-priority |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
url | 1..1 | uri | "http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-priority" | |
value[x] | 0..1 | (Slice Definition) | Value of extension Slice: Unordered, Closed by type:$this | |
value[x]:valueCode | 0..1 | code | Value of extension Binding: Priority (required) | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
identifier | Σ | 0..* | Identifier | Unique identifier |
definition | Σ | 0..* | Reference(PlanDefinition | ActivityDefinition) {r} | Instantiates protocol or definition |
basedOn | Σ | 0..* | Reference(Resource) {r} | Request fulfilled by this communication |
partOf | Σ | 0..* | Reference(CarePlan) {r} | The CarePlan that this communication relates to |
status | ?!Σ | 1..1 | code | preparation | aborted | completed Binding: EventStatus (required) |
notDone | ?!Σ | 0..1 | boolean | Communication did not occur |
notDoneReason | ΣI | 0..1 | CodeableConcept | Why communication did not occur Binding: CommunicationNotDoneReason (example) |
category | 1..* | (Slice Definition) | Message category Slice: Unordered, Open by value:coding.system Binding: CommunicationCategory (example) | |
category:DkTmCategory | 1..1 | CodeableConcept | Message category Binding: CommunicationCategory (example) | |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
coding | Σ | 0..* | Coding | Code defined by a terminology system Binding: MessageCategory (required) |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
system | Σ | 1..1 | uri | Identity of the terminology system Fixed Value: 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 |
medium | 0..* | (Slice Definition) | A channel of communication Slice: Unordered, Open by value:coding.system Binding: ParticipationMode (example) | |
medium:DkTmMedium | 0..1 | CodeableConcept | A channel of communication Binding: MessageMedium (example) | |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
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 | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
system | Σ | 1..1 | uri | Identity of the terminology system Fixed Value: 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) {r} | Focus of message |
recipient | 0..1 | Reference(Patient | Practitioner) {r} | Message recipient | |
topic | 0..* | Reference(Resource) {r} | Focal resources | |
context | Σ | 0..1 | Reference(Encounter | EpisodeOfCare) {r} | Encounter or episode leading to message |
sent | 0..1 | dateTime | When sent | |
received | 0..1 | dateTime | When received | |
sender | 0..1 | Reference(Device | Patient | Practitioner) {r} | Message sender | |
reasonCode | Σ | 0..* | CodeableConcept | Indication for message Binding: SNOMED CT Clinical Findings (example) |
reasonReference | Σ | 0..* | Reference(Condition | Observation) {r} | Why was communication done? |
payload | I | 0..1 | BackboneElement | Message payload |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored |
content[x] | 1..1 | (Slice Definition) | 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 | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
author[x] | Σ | 0..1 | Individual responsible for the annotation | |
authorReference | Reference(Practitioner | Patient | RelatedPerson) | |||
authorString | string | |||
time | Σ | 0..1 | dateTime | When the annotation was made |
text | 1..1 | string | The annotation - text content | |
Documentation for this format |
This structure is derived from Communication
Summary
Mandatory: 2 elements (2 nested mandatory elements)
Fixed Value: 2 elements
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 | I | 0..* | A record of information transmitted from a sender to a receiver | |
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: Common Languages (extensible) Max Binding: All Languages | |
text | I | 0..1 | Narrative | Text summary of the resource, for human interpretation |
contained | 0..* | Resource | Contained, inline Resources | |
extension | 0..* | Extension | Extension Slice: Unordered, Open by value:url | |
ehealth-communication-recipientCareTeam | I | 0..1 | Reference() | CareTeam message recipient URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-recipientCareTeam |
ehealth-communication-senderCareTeam | I | 0..1 | Reference() | CareTeam message sender URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-communication-senderCareTeam |
ehealth-restriction-category | I | 0..* | CodeableConcept | Optional Extensions Element URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-restriction-category |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
url | 1..1 | uri | "http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-restriction-category" | |
value[x] | 0..1 | (Slice Definition) | Value of extension Slice: Unordered, Closed by type:$this | |
value[x]:valueCodeableConcept | 1..1 | CodeableConcept | Value of extension Binding: RestrictionCategory (required) | |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
coding | Σ | 0..* | Coding | Code defined by a terminology system Binding: RestrictionCategory (required) |
text | Σ | 0..1 | string | Plain text representation of the concept |
ehealth-thread-id | I | 0..1 | string | Optional Extensions Element URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-thread-id |
ehealth-period | I | 0..* | Period | Specified the temporal validity of an ehealth/message instance URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-period |
ehealth-administrative-status | I | 0..1 | Coding | Optional Extensions Element URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-administrative-status |
ehealth-title | I | 0..1 | string | Message title URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-title |
ehealth-priority | I | 0..1 | code | Optional Extensions Element URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-priority |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
url | 1..1 | uri | "http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-priority" | |
value[x] | 0..1 | (Slice Definition) | Value of extension Slice: Unordered, Closed by type:$this | |
value[x]:valueCode | 0..1 | code | Value of extension Binding: Priority (required) | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
identifier | Σ | 0..* | Identifier | Unique identifier |
definition | Σ | 0..* | Reference(PlanDefinition | ActivityDefinition) {r} | Instantiates protocol or definition |
basedOn | Σ | 0..* | Reference(Resource) {r} | Request fulfilled by this communication |
partOf | Σ | 0..* | Reference(CarePlan) {r} | The CarePlan that this communication relates to |
status | ?!Σ | 1..1 | code | preparation | aborted | completed Binding: EventStatus (required) |
notDone | ?!Σ | 0..1 | boolean | Communication did not occur |
notDoneReason | ΣI | 0..1 | CodeableConcept | Why communication did not occur Binding: CommunicationNotDoneReason (example) |
category | 1..* | (Slice Definition) | Message category Slice: Unordered, Open by value:coding.system Binding: CommunicationCategory (example) | |
category:DkTmCategory | 1..1 | CodeableConcept | Message category Binding: CommunicationCategory (example) | |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
coding | Σ | 0..* | Coding | Code defined by a terminology system Binding: MessageCategory (required) |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
system | Σ | 1..1 | uri | Identity of the terminology system Fixed Value: 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 |
medium | 0..* | (Slice Definition) | A channel of communication Slice: Unordered, Open by value:coding.system Binding: ParticipationMode (example) | |
medium:DkTmMedium | 0..1 | CodeableConcept | A channel of communication Binding: MessageMedium (example) | |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
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 | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
system | Σ | 1..1 | uri | Identity of the terminology system Fixed Value: 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) {r} | Focus of message |
recipient | 0..1 | Reference(Patient | Practitioner) {r} | Message recipient | |
topic | 0..* | Reference(Resource) {r} | Focal resources | |
context | Σ | 0..1 | Reference(Encounter | EpisodeOfCare) {r} | Encounter or episode leading to message |
sent | 0..1 | dateTime | When sent | |
received | 0..1 | dateTime | When received | |
sender | 0..1 | Reference(Device | Patient | Practitioner) {r} | Message sender | |
reasonCode | Σ | 0..* | CodeableConcept | Indication for message Binding: SNOMED CT Clinical Findings (example) |
reasonReference | Σ | 0..* | Reference(Condition | Observation) {r} | Why was communication done? |
payload | I | 0..1 | BackboneElement | Message payload |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored |
content[x] | 1..1 | (Slice Definition) | 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 | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations Slice: Unordered, Open by value:url | |
author[x] | Σ | 0..1 | Individual responsible for the annotation | |
authorReference | Reference(Practitioner | Patient | RelatedPerson) | |||
authorString | string | |||
time | Σ | 0..1 | dateTime | When the annotation was made |
text | 1..1 | string | The annotation - text content | |
Documentation for this format |
Path | Conformance | ValueSet |
Communication.language | extensible | Common Languages Max Binding: All Languages |
Communication.extension:restrictionCategory.value[x]:valueCodeableConcept | required | RestrictionCategory |
Communication.extension:restrictionCategory.value[x]:valueCodeableConcept.coding | required | RestrictionCategory |
Communication.extension:priority.value[x]:valueCode | required | Priority |
Communication.status | required | EventStatus |
Communication.notDoneReason | example | CommunicationNotDoneReason |
Communication.category | example | CommunicationCategory |
Communication.category:DkTmCategory | example | CommunicationCategory |
Communication.category:DkTmCategory.coding | required | MessageCategory |
Communication.category:DkTmCategory.coding.code | required | MessageCategory |
Communication.medium | example | v3 Code System ParticipationMode |
Communication.medium:DkTmMedium | example | MessageMedium |
Communication.medium:DkTmMedium.coding.code | required | MessageMedium |
Communication.reasonCode | example | SNOMED CT Clinical Findings |
Id | Path | Details | Requirements |
dom-2 | Communication | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-1 | Communication | If the resource is contained in another resource, it SHALL NOT contain any narrative : contained.text.empty() | |
dom-4 | Communication | If 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-3 | Communication | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource : contained.where(('#'+id in %resource.descendants().reference).not()).empty() | |
com-1 | Communication | Not Done Reason can only be specified if NotDone is "true" : notDone or notDoneReason.exists().not() | |
ele-1 | Communication.extension | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Communication.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Communication.extension | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Communication.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Communication.extension | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Communication.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Communication.extension | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Communication.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Communication.extension | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Communication.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Communication.extension | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Communication.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Communication.extension | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Communication.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Communication.extension | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Communication.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Communication.extension | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Communication.extension | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Communication.payload | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) |