A patient registration Embedded Patient Block is sent together with each request. This block contains both the wmdaId and the patientId of the patient.
The requested donor has to be reserved at the remote hub and reported back to the requesting registry by an Embedded Donor Block within a Reservation Response reflecting the changed donor status (cf. DONOR_CB with D_STATUS = ”RS”).
The message ID ( referenceMessageId ) of the request message is used as a reference code for the rest of the request-related message flow.
This message is used to request an extended typing of a donor (adult, ADCU, CBU). It primarily contains information about what to type and for which donor.
The expected return messages are Reservation Response, Extended Typing Results (donor or cbu) and/or Request Rejection.
Send (Post) | Retrieve (Post) | ||||||||||||||||||||||||||||||||||||||||||||||||||
extendedTypingRequestRequest | extendedTypingRequestRetrieve | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Rules
The institutionPaying block must provide the necessary details for the donor registry to send an invoice for the service. In EMDIS, this used to be the address of the financial institution.
The appropriate action if the typing request cannot be accepted or has to be changed by the receiving registry, e.g., due to national rules, is to inform the requesting side what was done. If only the resolution was changed (the sending registry will receive something different than ordered - either more or less) or only a part of the requested loci were accepted (the sending registry will only receive parts of what was ordered): send a message response containing the warning.
This message is used to send the results of the Extended Typing Request back to the requesting registry. Different endpoints have been implemented according to source type (e.g. donor, cbu).
Send (Post) | Retrieve (Post) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
extendedTypingDonorResponseRequest | extendedTypingDonorResponseRetrieve | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Send (Post) | Retrieve (Post) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
extendedTypingCbuResponseRequest | extendedTypingCbuResponseRetrieve | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
This message is used to request a sample to be used for verification typing in the lab of the sending registry.
The expected return messages are Reservation Response, Sample Arrival Date, Sample Information, IDM Results, and/or Request Rejection.
Send (Post) | Retrieve (Post) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sampleRequestRequest | sampleRequestRetrieve | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Rules:
This message is used to send relevant secondary information that may arise in the context of the sample request.
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||
sampleInfoRequest (comments refer to changes to the current API definition) | sampleInfoRetrieve | |||||||||||||||||||||||||||||||||||||||||||
|
|
Rules:
This message is used to transmit the proposed date of the sample arrival.
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
sampleArrivalRequest (comments refer to changes to the current API definition) | sampleArrivalRetrieve | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
This message is used to transmit the results of the sample testing.
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sampleResponseRequest (comments refer to changes to the current API definition) | sampleResponseRetrieve | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Rules:
Note: To release a donor after a sample result with donorStillOfInterest = 'Yes' has been issued, the Reservation Release message should be used.
This message is used to request i nfectious disease marker test results of the selected donor.
The expected return messages are Reservation Response , IDM Results , and/or Request Rejection .
Send (Post) | Retrieve (Post) | ||||||||||||||||||||||||||||||||||||||||||||||||||
infectiousDiseaseMarkerRequest | infectiousDiseaseMarkerRequestRetrieve | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Rules:
This message is used to send the results of the IDM request back to the requesting registry.
Rules
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
infectiousDiseaseMarkerDonorResultRequest | infectiousDiseaseMarkerDonorResultRetrieve | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
infectiousDiseaseMarkerCbuResultRequest | infectiousDiseaseMarkerCbuResultRetrieve | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
This message is used to request the reservation of a donor for a specific patient for a upcoming transplantation at the receiving registry. The patient registry can ask for a specific reservation period by making use of the optional field expirationDate.
The expected return message is Reservation Response .
Send (Post) | Retrieve (Post) | ||||||||||||||||||||||||||||||||||||||||||||
reservationRequestRequest | reservationRequestRetrieve | ||||||||||||||||||||||||||||||||||||||||||||
|
|
This message informs the requesting patient registry if the donor registry has confirmed the Reservation Request OR if the donor reservation was performed after another request.
The donor registry reports back the expirationDate. This might differ from the expirationDate of the Reservation Request message due to local rules or regulations at the donor registry side. The expirationDate in the Reservation Response reflects the "true" reservation period.
If the donor is unavailable, the Reservation Response with the negative confirmation is sent. There is no rejection (NO_RES) for the Reservation Request.
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||||||||||
reservationDonorResponseRequest | reservationDonorResponseRetrieve | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||||||||||
reservationCbuResponseRequest | reservationCbuResponseRetrieve | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
The patient registry sends this message to inform the donor registry that a donor can be released from the reservation when it is no longer needed (e.g. patient is deceased or was transplanted with another donor). This should be used if the donor reservation was confirmed in response to some request. If the reservation has not been confirmed, then a Request Cancellation message should be used.
Use case: a Typing Request was sent → the donor was reserved for the patient → the request was completed, so it cannot be canceled anymore → the donor remains reserved till the expiration date → the patient registry must send the Reservation Release Request, if the donor is not needed to the patient anymore, even if some registry systems assume that.
This is a change with respect to the current procedure and should be handled as such, as it has implications for local systems.
There is no response to this message except for the automated acknowledgment.
The referenceMessageId must be taken from the request that caused the donor reservation.
Note: The Reservation Release should not be issued if the donor is still needed for the patient (for example, if the donor VT release period has completed, the release message should not be issued if the donor is still reserved in another request or work-up)
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||||||||
reservationReleaseRequest | reservationReleaseRetrieve | |||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Future Phase
Future Phase
This message is used to cancel a request that has been sent to the donor registry. The cancellation request must have a preceding request that is being canceled (referenced by the referenceMessageId).
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||||||||||
requestCancellationRequest | requestCancellationRetrieve | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
This message is used to notify the requesting registry when a request cannot be fulfilled (service cannot be provided). The request must be referenced by the field referenceMessageId.
Note: For Reservation Requests, if a donor cannot be reserved, Reservation Response with ‘Confirmed’= ‘No’ should be issued and not Request Rejection.
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||||||||
requestRejectedRequest | requestRejectedRetrieve | |||||||||||||||||||||||||||||||||||||||||||||||||
|
|
This message is sent by the requesting registry to remind the receiving registry of an outstanding result from a previous request. The request must be referenced by the field referenceMessageId.
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||||||||||
resultReminderRequest | resultReminderRetrieve | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
This message is used for registering a patient (by the embedded patient block).
This may be required, for example, for direct WU requests until 5.12 is available, or to reactivate a closed patient case on the receiving registry side.
Send (Post) | Retrieve (Post) | ||||||||||||||||||||||||||||||||||||||||||||
genericRequestRequest | genericRequestRetrieve | ||||||||||||||||||||||||||||||||||||||||||||
|
|
This message is used to upload and download a document that is used as an attachment in the document exchange message.
Send (Post) | Send (Post) | ||||||||||||||||||||||||||||||||||||
uploadAttachment | downloadAttachment | ||||||||||||||||||||||||||||||||||||
|
|
This message is used to send a document. It can be connected to a patient, a donor, or a request.
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||
genericDocumentExchangeRequestRequest | genericDocumentExchangeRequestRetrieve | |||||||||||||||||||||||||||||||||||||
|
|
This message is used to request a cord blood unit report.
Send (Post) | Retrieve (Post) | ||||||||||||||||||||||||||||||||||||||||||||
cordBloodUnitReportRequest | cordBloodUnitReportRequestRetrieve | ||||||||||||||||||||||||||||||||||||||||||||
|
|
This message is used to respond to a cord blood unit report request.
Send (Post) | Retrieve (Post) | |||||||||||||||||||||||||||||||||||||||||||||||||||
cordBloodUnitReportResponseRequest | cordBloodUnitReportResponseRetrieve | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
participant "Patient Registry" as PR control "Match-Connect" as MC control "Search & Match Service" as SM participant "Donor Registry" as DR skinparam SequenceMessageAlign center skinparam dpi 92 == Register Patient == PR -> SM : Create Patient activate SM #FFBBBB SM -> PR : Return wmdaId deactivate SM == Start Search == PR -> SM : Start Search activate SM #FFBBBB SM -> PR : Return searchId deactivate SM PR -> SM : Check search status activate SM #FFBBBB SM -> PR : Return search status (Completed, Running, Errored) deactivate SM PR -> SM : Retrieve search results activate SM #FFBBBB SM -> PR : Return search results deactivate SM == Making Request == PR -[#dodgerblue]> DR : Extended Typing Request (incl. Embedded Patient Block) DR -[#dodgerblue]> PR : Reservation Response (incl. Embedded Donor Block) == Getting Response == PR -[#dodgerblue]> DR : Request Cancellation DR -[#dodgerblue]> PR : Request Rejection DR -[#dodgerblue]> PR : Extended Typing Result (incl. Embedded Donor Block) PR -[#dodgerblue]> DR : Reservation Release Request |
participant "Patient Registry" as PR control "Match-Connect" as MC control "Search & Match Service" as SM participant "Donor Registry" as DR skinparam SequenceMessageAlign center skinparam dpi 92 == Register Patient == PR -> SM : Create Patient activate SM #FFBBBB SM -> PR : Return wmdaId deactivate SM == Start Search == PR -> SM : Start Search activate SM #FFBBBB SM -> PR : Return searchId deactivate SM
activate SM #FFBBBB SM -> PR : Return search status (Completed, Running, Errored) deactivate SM
activate SM #FFBBBB SM -> PR : Return search results deactivate SM == Making Request == PR -[#dodgerblue]> DR : Sample Request (incl. Embedded Patient Block) DR -[#dodgerblue]> PR : Reservation Response (incl. Embedded Donor Block) == Getting Response == PR -[#dodgerblue]> DR : Request Cancellation DR -[#dodgerblue]> PR : No Result (Request Rejection) DR -[#dodgerblue]> PR : Sample Arrival DR -[#dodgerblue]> PR : IDM result (incl. Embedded Donor Block) DR -[#dodgerblue]> PR : Sample Information PR -[#dodgerblue]> DR : No Result (Request Rejection) PR -[#dodgerblue]> DR : Sample Result PR -[#dodgerblue]> DR : Reservation Release Request |
participant "Patient Registry" as PR control "Match-Connect" as MC control "Search & Match Service" as SM participant "Donor Registry" as DR skinparam SequenceMessageAlign center skinparam dpi 92 == Register Patient == PR -> SM : Create Patient activate SM #FFBBBB SM -> PR : Return wmdaId deactivate SM == Start Search == PR -> SM : Start Search activate SM #FFBBBB SM -> PR : Return searchId deactivate SM
activate SM #FFBBBB SM -> PR : Return search status (Completed, Running, Errored) deactivate SM
activate SM #FFBBBB SM -> PR : Return search results deactivate SM == Making Request == PR -[#dodgerblue]> DR : IDM Request (incl. Embedded Patient Block) DR -[#dodgerblue]> PR : Reservation Response (incl. Embedded Donor Block) == Getting Response == PR -[#dodgerblue]> DR : Request Cancellation DR -[#dodgerblue]> PR : Request Rejection DR -[#dodgerblue]> PR : IDM Result (incl. Embedded Donor Block) PR -[#dodgerblue]> DR : Reservation Release Request |
participant "Patient Registry" as PR control "Match-Connect" as MC control "Search & Match Service" as SM participant "Donor Registry" as DR skinparam SequenceMessageAlign center skinparam dpi 92 == Register Patient == PR -> SM : Create Patient activate SM #FFBBBB SM -> PR : Return wmdaId deactivate SM == Start Search == PR -> SM : Start Search activate SM #FFBBBB SM -> PR : Return searchId deactivate SM PR -> SM : Check search status activate SM #FFBBBB SM -> PR : Return search status (Completed, Running, Errored) deactivate SM PR -> SM : Retrieve search results activate SM #FFBBBB SM -> PR : Return search results deactivate SM == Making Request == PR -[#dodgerblue]> DR : Reservation Request (incl. Embedded Patient Block) == Getting Response == PR -[#dodgerblue]> DR : Request Cancellation DR -[#dodgerblue]> PR : <s:red>Request Rejection</strike> DR -[#dodgerblue]> PR : Reservation Response (incl. Embedded Donor Block) PR -[#dodgerblue]> DR : Reservation Release Request |
@startuml participant "Patient Registry" as PR control "Match-Connect" as MC control "Search & Match Service" as SM participant "Donor Registry" as DR skinparam SequenceMessageAlign center skinparam dpi 92 == Register Patient == PR -> SM : Create Patient activate SM #FFBBBB SM -> PR : Return wmdaId deactivate SM == Start Search == PR -> SM : Start Search activate SM #FFBBBB SM -> PR : Return searchId deactivate SM PR -> SM : Check search status activate SM #FFBBBB SM -> PR : Return search status (Completed, Running, Errored) deactivate SM PR -> SM : Retrieve search results activate SM #FFBBBB SM -> PR : Return search results deactivate SM == Making Request == PR -[#dodgerblue]> DR : Generic Request (incl. Embedded Patient Block) DR -[#dodgerblue]> PR : Reservation Response (incl. Embedded Donor Block) PR -[#dodgerblue]> DR : Request Cancellation == Getting Response == DR -[#dodgerblue]> PR : Request Rejection @enduml |
Please note that for the above request flows textMessage and documentExchange messages could be send as optional messages in both directions PR→ DR as well as DR→ PR. They are not displayed above for better readability. For more details about how to include a documentExchange messages please see example below.
@startuml participant "Patient Registry" as PR control "Match-Connect" as MC participant "Donor Registry" as DR skinparam SequenceMessageAlign center skinparam dpi 92 == PR Request == PR -[#dodgerblue]> MC: Request (*Request) MC -[#black]> PR : { wmdaResponse } == DR Retrieving Request(s) == DR --[#dodgerblue]> MC: Check Available Messages (AvailableMessages) note right: optional message MC -[#black]> DR : { totalMessages, messagesReadyForRetrieval } DR -[#dodgerblue]> MC: Request Retrieve (*RequestRetrieve) \n { limit, shouldPeek } MC -[#black]> DR : { generalInformation, messages [ originalMessage. metaInformation ] } DR -[#dodgerblue]> MC: Acknowledge request received message (messageResponse) \n { organisationResponse } MC -[#black]> DR : { wmdaResponse } == PR Retrieving Request Received Message(s) == PR --[#dodgerblue]> MC: Check Available Messages (AvailableMessages) MC -[#black]> PR : { totalMessages, messagesReadyForRetrieval } PR -[#dodgerblue]> MC: Retrieve Acknowledge request Received Messages (messageResponseRetrieve) \n { limit | messageSequenceNumber, shouldPeek } MC -[#black]> PR: { generalInformation, messages [ originalMessage. metaInformation ] } == DR Sending Response == DR -[#dodgerblue]> MC : Result (*ResponseRequest) MC -[#black]> DR : { wmdaResponse } == PR Retrieving Response(s) == PR --[#dodgerblue]> MC: Check Available Messages (AvailableMessages) MC -[#black]> PR : { totalMessages, messagesReadyForRetrieval } PR -[#dodgerblue]> MC: Result Retrieve (*ResponseRetrieve) { limit, shouldPeek } MC -[#black]> PR: { generalInformation, messages [ originalMessage. metaInformation ] } PR -[#dodgerblue]> MC : Acknowledge response received (messageResponse) \n { organisationResponse } MC-[#black]> PR : { wmdaResponse } == DR Retrieving Result Response Received Message(s) == DR --[#dodgerblue]> MC: Check Available Messages (AvailableMessages) MC -[#black]> DR : { totalMessages, messagesReadyForRetrieval } DR -[#dodgerblue]> MC: Retrieve Acknowledge Response Received messages (messageResponseRetrieve) \n { limit | messageSequenceNumber, shouldPeek } MC -[#black]> DR : { generalInformation, messages [ originalMessage. metaInformation ] } @enduml |
how to include an attachment exchange in a workflow
e.g. generic request:
@startuml participant "Patient Registry" as PR control "Match-Connect" as MC control "Search & Match Service" as SM participant "Donor Registry" as DR skinparam SequenceMessageAlign center skinparam dpi 92 == Register Patient == PR -> SM : Create Patient activate SM #FFBBBB SM -> PR : Return wmdaId deactivate SM == Start Search == PR -> SM : Start Search activate SM #FFBBBB SM -> PR : Return searchId deactivate SM PR -> SM : Check search status activate SM #FFBBBB SM -> PR : Return search status (Completed, Running, Errored) deactivate SM PR -> SM : Retrieve search results activate SM #FFBBBB SM -> PR : Return search results deactivate SM == Making Request == PR -[#dodgerblue]> MC : Upload attachment (for more details see technical process below) activate MC #FFBBBB MC -[#dodgerblue]> PR : Provide AttachmentGuid deactivate MC PR -[#dodgerblue]> DR : Generic Request (incl. Embedded Patient Block, and Attachment Block) DR -[#dodgerblue]> MC : Download attachment (for more details see technical process below) activate MC #FFBBBB MC -[#dodgerblue]> DR : Provide attachment deactivate MC DR -[#dodgerblue]> PR : Reservation Response (incl. Embedded Donor Block) == Getting Response == PR -[#dodgerblue]> DR : Request Cancellation DR -[#dodgerblue]> PR : Request Rejection @enduml |
@startuml participant "Sending Registry" as SR control "Match-Connect" as MC control "Database" as DB control "Blob Storage" as BS participant "Receiving Registry" as RR skinparam SequenceMessageAlign center skinparam dpi 92 == Upload document == SR -> MC : Upload Attachment (including Blob for attachment) activate MC #FFBBBB MC -> DB : Store: AttachmentGuid, Filename, Full Path, Sender ION, ... MC -> BS : Store: Attachment (blob) MC -> SR : Return 'AttachmentGuid' deactivate MC == 'send' document as part of a request == SR -> RR : Send API call with non empty 'AttachmentBlock' RR -> SR : Respond to the respective message + download the attachment == Download document == RR -> MC : Request attachment (send AttachmentGuid) activate MC #FFBBBB MC -> DB : Check: AttachmentGuid, Filename, Full Path, Sender ION, ... MC -> BS : Fetch: Attachment (blob) MC -> RR : Return attachment deactivate MC @enduml |
v1.0.1