PULL
Scenario
In this example, a user of a public/private organisation with a CA profile requests from EUDAMED a list with all registered devices for the Manufacture with SRN BE-MF-000001201.
Process
The following image illustrates the message exchange between EUDAMED and the public/private organisation which performs the request.
![m2m_pull-example.png EUDAMED message exchange process machine to machine data exchange](https://webgate.ec.europa.eu/eudamed-play-help/en/image/uuid-46da13b1-70e4-6883-55e3-d33a3db7032c.png)
More specifically, the following steps take place in the above-mentioned scenario:
A PullRequest message (request0) is created by the organisation containing the attributes listed below:
messageID: A unique identifier, issued by the requester
correlationID: An identifier that will correlate the request to the response or to the acknowledgements, issued by the requester
sender/service/ServiceID: An identifier of the callback service (for responses and acknowledgements)
sender/node/nodeCode: An identifier of the EUDAMED unique number of the requester (e.g. SRN, CA number, etc.)
sender/node/nodeID: An identifier of the eDelivery partyID
recipient/service/serviceID: An identifier of the EUDAMED service
recipient/service/serviceOperation: An identifier of the EUDAMED service operation to uniquely define the service scope
recipient/service/serviceAccessToken: The EUDAMED bearer security token attached to the requester service
pageNumber: In case of paginated response, the requester can orchestrate multiple page response and request for a specific page to be provided in the response
Note
The first page is page number ‘0’.
pageSize: The required maximum number of entities on a specific response page
payload/Entities: It may contain the main service entity in case of a query by example criteria
The PullRequest message (request1), is sent by the organisation’s backend to the organisation’s eDelivery AP. request0 is encoded and embedded into the payload of a SOAP envelope (see Message exchange page). The following attributes are included in the message:
envelope/header/messaging/usermessage/partyinfo/from/partyID: A unique identifier of the requester’s eDelivery AP
envelope/header/messaging/usermessage/partyinfo/to/partyID: A unique identifier of the EUDAMED eDelivery AP
envelope/body/submitRequest/payload: It holds the base64 format of the request0 message
The PullRequest message (request2), is sent from the organisation’s eDelivery AP to EUDAMED’s eDelivery AP. The status of the message is now SENDING.
The EUDAMED eDelivery AP sends an Acknowledge message (ack1) to the organisation’s eDelivery AP which implies that request2 was successfully received by the EUDAMED eDelivery AP. The status of the message is now DELIVERED.
The PullRequest message (request3), is sent from EUDAMED’S eDelivery AP to EUDAMED’s backend. The status of the message is now SENDING.
The EUDAMED eDelivery AP sends again an Acknowledge message (ack2) to the organisation’s eDelivery AP which implies that request3 was successfully received by the EUDAMED eDelivery AP. The status of the message is now DELETED.
A PullResponse message (response0) is created by EUDAMED containing the following attributes:
messageID: A unique identifier, issued by submitter
correlationID: The same as correlationID from the request message
responseCode: Status code of the service call (success or matching error code)
sender/service/ServiceID: An identifier of the EUDMAED initiator service
sender/node/nodeCode: An identifier of the EUDAMED eDelivery party identifier
sender/node/nodeID: An identifier of the eDelivery partyID
recipient/service/serviceID: The requester’s generic callback service
recipient/service/serviceOperation: The requester’s callback service operation (as specified in the request message)
payload/entities: It contains the list of entities of the same type that were collected through the service invocation
The PullResponse message (response1), is sent by EUDAMED’s backend to EUDAMED’s eDelivery AP. response0 is encoded and embedded into the payload of a SOAP envelope (see Message exchange page). The following attributes are included in the message:
envelope/header/messaging/usermessage/partyinfo/from/partyID: A unique identifier of the requester’s eDelivery AP
envelope/header/messaging/usermessage/partyinfo/to/partyID: A unique identifier of the EUDAMED eDelivery AP
envelope/body/submitRequest/payload: It holds the base64 format of the response0 message
The PullResponse message (response2), is sent by EUDAMED’s eDelivery AP to the organisation’s eDelivery AP.
The organisation’s eDelivery AP sends an Acknowledge message (ack3) to the EUDAMED eDelivery AP which implies that response2 was successfully received by the organisation’s eDelivery AP. The status of the message is now DELIVERED.
The PullResponse message (response3), is sent from the organisation’s eDelivery AP to organisation’s backend. The status of the message is now SENDING.
The organisation’s eDelivery AP sends again an Acknowledge message (ack3) to the EUDAMED eDelivery AP which implies that response3 was successfully received by the organisation’s eDelivery AP. The status of the message is now DELETED.
Messages
Given the above-mentioned scenario, the following messages will be created:
Request0
<message:PullRequest xmlns:device="https://ec.europa.eu/tools/eudamed/dtx /datamodel/Entity/Device/v1" xmlns:party="https://ec.europa.eu/tools/eudamed/dtx /datamodel/Party/v1"> <message:correlationID>a754cdd7-3602-45b4-a993-c25adb18a60e </message:correlationID> <message:creationDateTime>2019-05-22T06:58:45.223+02:00 </message:creationDateTime> <message:messageID>a64a5a1f-da86-4810-a0de-27d0338811a9 </message:messageID> <message:recipient> <message:node> <service:nodeActorCode>EUDAMED </service:nodeActorCode> <service:nodeID>eDelivery:EUDAMED </service:nodeID> </message:node> <message:service> <service:serviceAccessToken>3434524234225234234234 </service:serviceAccessToken> <service:serviceID>DEVICE</service:serviceID> <service:serviceOperation>GET </service:serviceOperation> </message:service> </message:recipient> <message:payload/> <message:sender> <message:node> <service:nodeActorCode>CA-BE-000000555 </service:nodeActorCode> <service:nodeID>eDelivery:CA-BE-000000555 </service:nodeID> </message:node> <message:service> <service:serviceID>REPLY_SERVICE</service:serviceID> <service:serviceOperation>GET</service:serviceOperation> </message:service> </message:sender> <message:pageNumber>1</message:pageNumber> <message:pageSize>10</message:pageSize> <message:criteriaPayload> <message:diDownloadCriteria> <service:MFActorCode>BE-MF-000001201</service:MFActorCode> </message:diDownloadCriteria> </message:criteriaPayload> </message:PullRequest>
Response0
<message:PullResponse xmlns:device="https://ec.europa.eu/tools/eudamed/dtx /datamodel/Entity/Device/v1"> <message:correlationID>a754cdd7-3602-45b4-a993-c25adb18a60e </message:correlationID> <message:creationDateTime>2019-05-22T06:43:12.459+02:00 </message:creationDateTime> <message:messageID>a64a5a1f-da86-4810-a0de-27d0338811a9 </message:messageID> <message:recipient> <message:node> <service:nodeActorCode>AC-BE-000000555 </service:nodeActorCode> <service:nodeID>eDelivery:AC-BE-000000555 </service:nodeID> </message:node> <message:service> <service:serviceID>REPLY_SERVICE</service:serviceID> <service:serviceOperation>GET</service:serviceOperation> </message:service> </message:recipient> <message:payload> <device:Device xsi:type="device:IVDRDeviceType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <device:IVDRBasicUDI> ....... <budi:modelName> <budi:model>1001/202</budi:model> <budi:name>Clear-View Sub-Q</budi:name> </budi:modelName> <budi:MFActorCode>BE-MF-000001201</budi:MFActorCode> </device:IVDRBasicUDI> <device:IVDRUDIDIData> <udidi:identifier> <udidi:DICode>UDICODE1</udidi:DICode> <udidi:issuingEntityCode>GS1 </udidi:issuingEntityCode> </udidi:identifier> ......... </device:IVDRUDIDIData> </device:Device> <device:Device xsi:type="device:MDRDeviceType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <device:MDRBasicUDI> ................ <budi:riskClass>IIb</budi:riskClass> <budi:model>SCE8-03-05</budi:model> <budi:identifier> <udidi:DICode>M991CVS1277777</udidi:DICode> <udidi:issuingEntityCode>GS1 </udidi:issuingEntityCode> </budi:identifier> <budi:MFActorCode>BE-MF-000001201 </budi:MFActorCode> <budi:applicableLegislation>MDR </budi:applicableLegislation> .............. </device:MDRBasicUDI> <device:MDRUDIDIData> ............... </device:MDRUDIDIData> </device:Device> </message:payload> ...... <message:maxPageNumber>1</message:maxPageNumber> <message:pageNumber>1</message:pageNumber> <message:pageSize>10</message:pageSize> <message:responseCode>SUCCESS</message:responseCode> </message:PullResponse>