This profile provides detailed information about the outcome of an attempted system operation, such as delivering a message. It shall only be used when the attempt fails.
Scope and usage
This profile is called MedComAcknowledgementOperationOutcome and is used to give a detailed describtion of errors occuring when exchanging FHIR messages. Succes or fail in message exchange can be found in the element MessageHeader.response.code.
MedComAcknowledgementOperationOutcome can be seen as a help for IT-vendors to identify potential errors in their systems, as it least shall contain a description of the issue, including a severity and an error or warning code. It may include several issues.
Please refer to the tab “Snapshot Table(Must support)” below for the definition of the required content of a MedComAcknowledgementMessage.
When to include an OperationOutcome
MedComAcknowledgementOperationOutcome should not be included when the message exchange goes well, corresponding to the value ‘ok’ in MessageHeader.response.code. However, may be included when the MessageHeader.response.code is ‘ok’, e.g. in cases where the received message is valid, but it is a dublet of a previous sent message. In this case an OperationOutcome with a value of OperationOutcome.issue.severity ‘information’ and a relevant code could be included.
An OperationOutcome resource shall be included when the element MessageHeader.response.code is different from ‘ok’.
OperationOutCome.issue.details.coding
The CodeSystem MedComAcknowledgementIssueDetailsand ValueSetMedComAcknowledgementIssueDetailValues used in the element OperationOutCome.issue.details.coding are used to describe the issue of receiving a message more detailed. Currently, the two terminologies are fairly empty, as MedCom wants input from IT-vendors on which issue codes provide value in IT-systems. Across sectors there must be an agreed list of codes. Therefore, the ValueSet has a status as ‘draft’ and vendors should expect the CodeSystem and ValueSet to be extended. For relevant input regarding the issue codes, please contact MedCom.
If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty()
dom-3
error
OperationOutcome
If 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-4
error
OperationOutcome
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-5
error
OperationOutcome
If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty()
dom-6
best practice
OperationOutcome
A resource should have narrative for robust management : text.`div`.exists()
ele-1
error
**ALL** elements
All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count())
ext-1
error
**ALL** extensions
Must have either extensions or value[x], not both : extension.exists() != value.exists()
If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty()
dom-3
error
OperationOutcome
If 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-4
error
OperationOutcome
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-5
error
OperationOutcome
If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty()
dom-6
best practice
OperationOutcome
A resource should have narrative for robust management : text.`div`.exists()
ele-1
error
**ALL** elements
All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count())
ext-1
error
**ALL** extensions
Must have either extensions or value[x], not both : extension.exists() != value.exists()
If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty()
dom-3
error
OperationOutcome
If 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-4
error
OperationOutcome
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-5
error
OperationOutcome
If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty()
dom-6
best practice
OperationOutcome
A resource should have narrative for robust management : text.`div`.exists()
ele-1
error
**ALL** elements
All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count())
ext-1
error
**ALL** extensions
Must have either extensions or value[x], not both : extension.exists() != value.exists()
If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty()
dom-3
error
OperationOutcome
If 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-4
error
OperationOutcome
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-5
error
OperationOutcome
If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty()
dom-6
best practice
OperationOutcome
A resource should have narrative for robust management : text.`div`.exists()
ele-1
error
**ALL** elements
All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count())
ext-1
error
**ALL** extensions
Must have either extensions or value[x], not both : extension.exists() != value.exists()