{
"description": "Forward CareCommunication",
"_filename": "example/TestScript-carecommunication-send-forward-message.json",
"package_name": "medcom.fhir.dk.carecommunicationtestscripts",
"date": "2024-07-15",
"meta": {
"profile": [ "http://touchstone.aegis.net/touchstone/fhir/testing/StructureDefinition/testscript" ]
},
"variable": [ {
"name": "messageHeaderid-new-message-01",
"sourceId": "create-message-new-message-01",
"expression": "Bundle.entry[0].resource.id"
}, {
"name": "destinationUri-new-message-01",
"sourceId": "create-message-new-message-01",
"expression": "Bundle.entry.resource.ofType(MessageHeader).destination.endpoint"
}, {
"name": "bundleid-new-message-01",
"sourceId": "create-message-new-message-01",
"expression": "Bundle.id"
}, {
"name": "hospitalSOR-new-message-01",
"sourceId": "create-message-new-message-01",
"expression": "Bundle.entry[0].resource.sender.reference.resolve().identifier.where(system = 'urn:oid:1.2.208.176.1.1').value"
}, {
"name": "messageHeaderid-forward-message-02",
"sourceId": "create-message-forward-message-02",
"expression": "Bundle.entry[0].resource.id"
}, {
"name": "identifier-new-message-01",
"sourceId": "create-message-new-message-01",
"expression": "Bundle.entry.resource.ofType(Communication).identifier.value"
}, {
"name": "identifier-forward-message-02",
"sourceId": "create-message-forward-message-02",
"expression": "Bundle.entry.resource.ofType(Communication).identifier.value"
} ],
"publisher": null,
"name": "CareCommunicationTestScript",
"copyright": "MedCom 2023",
"type": null,
"experimental": null,
"resourceType": "TestScript",
"title": "Forward CareCommunication",
"setup": {
"action": [ {
"operation": {
"type": {
"code": "delete",
"system": "http://terminology.hl7.org/CodeSystem/testscript-operation-codes"
},
"accept": "xml",
"params": "?message.destination-uri=${destinationUri-new-message}",
"resource": "Bundle",
"description": "System-generated search, delete operations from conditional delete on Bundle MessageHeader.destination.endpoint",
"encodeRequestUrl": true
}
}, {
"operation": {
"type": {
"code": "create",
"system": "http://terminology.hl7.org/CodeSystem/testscript-operation-codes"
},
"accept": "xml",
"resource": "Bundle",
"sourceId": "create-new-message-01",
"contentType": "xml",
"description": "Create the Bundle resource in XML format on the destination server.",
"encodeRequestUrl": true
}
}, {
"operation": {
"type": {
"code": "updateCreate",
"system": "http://terminology.hl7.org/CodeSystem/testscript-operation-codes"
},
"accept": "xml",
"params": "/${bundleid-new-message-01}",
"resource": "Bundle",
"sourceId": "create-new-message-01",
"contentType": "xml",
"description": "Update the Bundle.id in XML format on the destination server, so it corresponds to $bundleid-new-message-01.",
"encodeRequestUrl": true
}
}, {
"assert": {
"operator": "in",
"direction": "response",
"description": "Confirm that the returned HTTP status is okay or created.",
"warningOnly": false,
"responseCode": "200,201"
}
} ]
},
"package_version": "4.0.1",
"status": "active",
"id": "2d24c85f-8b63-4dd6-a3fb-f854dfbbe0d4",
"kind": null,
"url": "http://medcomfhir.dk/ig/carecommunicationtestscript/carecommunication-send-forward-message",
"origin": [ {
"index": 1,
"profile": {
"code": "FHIR-Client",
"system": "http://terminology.hl7.org/CodeSystem/testscript-profile-origin-types"
}
} ],
"fixture": [ {
"id": "create-new-message-01",
"resource": {
"reference": "/Fixtures/CareCommunication-fixture.xml"
},
"autocreate": false,
"autodelete": false
}, {
"id": "create-forward-message-02",
"resource": {
"reference": "/Fixtures/CareCommunication-fixture-empty.xml"
},
"autocreate": false,
"autodelete": false
} ],
"version": "4.0.1",
"contact": [ {
"name": "MedCom",
"telecom": [ {
"value": "mailto:fhir@medcom.dk",
"system": "email"
} ]
} ],
"destination": [ {
"index": 1,
"profile": {
"code": "FHIR-Server",
"system": "http://terminology.hl7.org/CodeSystem/testscript-profile-destination-types"
}
} ],
"test": [ {
"id": "message-read-new-message-01",
"name": "Get a new-message message 01",
"action": [ {
"operation": {
"type": {
"code": "read",
"system": "http://terminology.hl7.org/CodeSystem/testscript-operation-codes"
},
"accept": "xml",
"origin": 1,
"params": "/${bundleid-new-message-01}",
"resource": "Bundle",
"description": "Receive message",
"destination": 1,
"encodeRequestUrl": true
}
}, {
"assert": {
"operator": "in",
"direction": "response",
"description": "Confirm that the returned HTTP status is okay or created.",
"warningOnly": false,
"responseCode": "200,201"
}
} ],
"description": "GET a message. The expected response is a 200(OK) with a payload of the message resource in XML format."
}, {
"id": "carecommunication-create-forward-message-02",
"name": "Create a CareCommunication forward-message Message 02",
"action": [ {
"operation": {
"type": {
"code": "create",
"system": "http://terminology.hl7.org/CodeSystem/testscript-operation-codes"
},
"origin": 1,
"resource": "Bundle",
"sourceId": "create-forward-message-02",
"requestId": "create-message-forward-message-02",
"description": "Post a carecommunication",
"destination": 1,
"encodeRequestUrl": true
}
}, {
"assert": {
"direction": "request",
"description": "Validates the bundle against http://medcomfhir.dk/ig/carecommunication/ImplementationGuide/dk.fhir.ig.dk-medcom-carecommunication",
"warningOnly": false,
"validateProfileId": "carecommunication"
}
}, {
"assert": {
"operator": "in",
"direction": "response",
"description": "Confirm that the returned HTTP status is okay or created.",
"warningOnly": false,
"responseCode": "200,201"
}
}, {
"assert": {
"resource": "Bundle",
"direction": "request",
"description": "Confirm that the client request payload contains a Bundle resource type.",
"warningOnly": false
}
}, {
"assert": {
"direction": "request",
"expression": "Bundle.entry.resource.ofType(Provenance).where(entity.what.reference.contains('${messageHeaderid-new-message-01}')).exists()",
"description": "Confirm that the previous MessageHeader.id is identical to Provenance.entity.what",
"warningOnly": false
}
}, {
"assert": {
"direction": "request",
"expression": "Bundle.entry.resource.ofType(MessageHeader).event.as(Coding).select(code = 'care-communication-message').allTrue()",
"description": "Confirm that the request resource contains the expected eventCoding.code.",
"warningOnly": false
}
}, {
"assert": {
"direction": "request",
"expression": "Bundle.entry.resource.ofType(Provenance).entity.where(role = 'revision').exists()",
"description": "Confirm that the role is set to revision. Not used when testing the first message in a stream",
"warningOnly": false
}
}, {
"assert": {
"direction": "request",
"expression": "Bundle.entry.resource.ofType(Provenance).where(target.reference.contains(%resource.entry[0].resource.id)).exists()",
"description": "Confirm that the target reference in Provenance equals MessageHeader.id",
"warningOnly": false
}
}, {
"assert": {
"value": "2",
"operator": "equals",
"direction": "request",
"expression": "Bundle.entry.resource.ofType(Provenance).count()",
"description": "Confirm that the 2 Provenance instances exists.",
"warningOnly": false
}
}, {
"assert": {
"direction": "request",
"expression": "Bundle.entry.resource.ofType(Communication).payload.count() = '2'",
"description": "Confirm that number of payloads is '2'",
"warningOnly": false
}
}, {
"assert": {
"direction": "request",
"expression": "Bundle.entry[0].resource.sender.reference.resolve().identifier.where(system = 'urn:oid:1.2.208.176.1.1').value != ${hospitalSOR-new-message})",
"description": "Confirm that the sender SOR number is different from the previous message.",
"warningOnly": false
}
}, {
"assert": {
"direction": "request",
"expression": "'${identifier-new-message-01}' != '${identifier-forward-message-02}'",
"description": "Confirm that the content is different in the two messages",
"warningOnly": false
}
} ],
"description": "Post CareCommunication to the server."
} ],
"profile": [ {
"id": "carecommunication",
"reference": "http://medcomfhir.dk/ig/carecommunication/StructureDefinition/medcom-careCommunication-message"
} ]
}