The Message package
Requirements
In the first two EHR extract scenarios described in Requirements on page 8, extracts may be received in response to a request, or they may be unsolicited. Most transfers of care (e.g. discharge summaries and referrals) and pathology test results will generate unsolicited extracts, whereas solicited requests will usually occur due to the patient presenting him or herself in another part of the health system without an explicit transfer of care.
Design
The message package provides the basic abstractions for the sending and receiving of any point to
point message containing a payload, of abstract type MESSAGE. The message Package is illustrated in
the UML diagram below.
A new message is required for each transmission, even if the payload was created once and is retransmitted multiple times.
Integrity and Security
The MESSAGE object may include a digital hash (i.e. digest or digital finderprint) of the serialised content,
made for example using the SHA-1 or MD5 algorithms. The purpose of the digest is to provide
an integrity check on the data. This protects against non-malicious changes to the data (e.g. due to
software bugs, incorrect transaction management). Often this will be acceptable within secure, closed
environments, such as a private hospital or community health network.
Protection against malicious modification can be provided by encryption.
To Be Determined: normalised serialised expression
Class Descriptions
ADDRESSED_MESSAGE Class
-
Definition
-
Effective
-
BMM
-
UML
Class |
ADDRESSED_MESSAGE |
|
|---|---|---|
Description |
The concept of a message addressed to nominated recipients. |
|
Attributes |
Signature |
Meaning |
1..1 |
sender: |
Party sending the message. |
1..1 |
sender_reference: |
Identification of message used by sender. This will be the same no matter how many times this message is sent to these recipients. |
1..1 |
Intended recipients, in the form of internet addresses. |
|
0..1 |
urgency: |
Urgency with which destination should deal with message:
|
1..1 |
message: |
The content of the message. |
| ADDRESSED_MESSAGE | |
|---|---|
The concept of a message addressed to nominated recipients. |
|
Attributes |
|
sender: |
Party sending the message. |
sender_reference: |
Identification of message used by sender. This will be the same no matter how many times this message is sent to these recipients. |
Intended recipients, in the form of internet addresses. |
|
urgency: |
Urgency with which destination should deal with message:
|
message: |
The content of the message. |
{
"name": "ADDRESSED_MESSAGE",
"documentation": "The concept of a message addressed to nominated recipients.",
"properties": {
"sender": {
"_type": "P_BMM_SINGLE_PROPERTY",
"name": "sender",
"documentation": "Party sending the message.",
"is_mandatory": true,
"type": "String"
},
"sender_reference": {
"_type": "P_BMM_SINGLE_PROPERTY",
"name": "sender_reference",
"documentation": "Identification of message used by sender. This will be the same no matter how many times this message is sent to these recipients.",
"is_mandatory": true,
"type": "String"
},
"addressees": {
"_type": "P_BMM_CONTAINER_PROPERTY",
"name": "addressees",
"documentation": "Intended recipients, in the form of internet addresses.",
"is_mandatory": true,
"type_def": {
"container_type": "List",
"type": "String"
},
"cardinality": {
"lower": 1,
"upper_unbounded": true
}
},
"urgency": {
"_type": "P_BMM_SINGLE_PROPERTY",
"name": "urgency",
"documentation": "Urgency with which destination should deal with message:\n\n* -1 - low\n* 0 - normal\n* 1 - high",
"type": "Integer"
},
"message": {
"_type": "P_BMM_SINGLE_PROPERTY",
"name": "message",
"documentation": "The content of the message.",
"is_mandatory": true,
"type": "MESSAGE"
}
}
}
MESSAGE Class
-
Definition
-
Effective
-
BMM
-
UML
Class |
MESSAGE |
|
|---|---|---|
Description |
A “message” is an authored, possibly signed, piece of content intended for one or more recipients. Since the recipient may or may not be known directly, recipients are specified in the |
|
Attributes |
Signature |
Meaning |
1..1 |
audit: |
Details of who actually created the message and when. This is the person who entered the data or otherwise caused the message to be created, or might be a piece of software. |
1..1 |
author: |
Party responsible for the message content, who may or may not be technically responsible for its creation (e.g. by data entry etc). |
1..1 |
content: |
Content of the message. |
0..1 |
signature: |
Optional signature by the author of message content in openPGP format. The signature is created as a Hash and optional signing of the serialisation of this message object with this signature field Void. |
| MESSAGE | |
|---|---|
A “message” is an authored, possibly signed, piece of content intended for one or more recipients. Since the recipient may or may not be known directly, recipients are specified in the |
|
Attributes |
|
audit: |
Details of who actually created the message and when. This is the person who entered the data or otherwise caused the message to be created, or might be a piece of software. |
author: |
Party responsible for the message content, who may or may not be technically responsible for its creation (e.g. by data entry etc). |
content: |
Content of the message. |
signature: |
Optional signature by the author of message content in openPGP format. The signature is created as a Hash and optional signing of the serialisation of this message object with this signature field Void. |
{
"name": "MESSAGE",
"documentation": "A “message” is an authored, possibly signed, piece of content intended for one or more recipients. Since the recipient may or may not be known directly, recipients are specified in the `ADDRESSED_MESSAGE` class.",
"properties": {
"audit": {
"_type": "P_BMM_SINGLE_PROPERTY",
"name": "audit",
"documentation": "Details of who actually created the message and when. This is the person who entered the data or otherwise caused the message to be created, or might be a piece of software.",
"is_mandatory": true,
"type": "AUDIT_DETAILS"
},
"author": {
"_type": "P_BMM_SINGLE_PROPERTY",
"name": "author",
"documentation": "Party responsible for the message content, who may or may not be technically responsible for its creation (e.g. by data entry etc).",
"is_mandatory": true,
"type": "PARTY_PROXY"
},
"content": {
"_type": "P_BMM_SINGLE_PROPERTY",
"name": "content",
"documentation": "Content of the message.",
"is_mandatory": true,
"type": "MESSAGE_CONTENT"
},
"signature": {
"_type": "P_BMM_SINGLE_PROPERTY",
"name": "signature",
"documentation": "Optional signature by the author of message content in openPGP format. The signature is created as a Hash and optional signing of the serialisation of this message object with this signature field Void.",
"type": "String"
}
}
}