Skip to main content

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.

EUDAMED message exchange process machine to machine data exchange

More specifically, the following steps take place in the above-mentioned scenario:

  1. A PullRequest message (request0) is created by the organisation containing the attributes listed below:

    1. messageID: A unique identifier, issued by the requester

    2. correlationID: An identifier that will correlate the request to the response or to the acknowledgements, issued by the requester

    3. sender/service/ServiceID: An identifier of the callback service (for responses and acknowledgements)

    4. sender/node/nodeCode: An identifier of the EUDAMED unique number of the requester (e.g. SRN, CA number, etc.)

    5. sender/node/nodeID: An identifier of the eDelivery partyID

    6. recipient/service/serviceID: An identifier of the EUDAMED service

    7. recipient/service/serviceOperation: An identifier of the EUDAMED service operation to uniquely define the service scope

    8. recipient/service/serviceAccessToken: The EUDAMED bearer security token attached to the requester service

    9. 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’.

    10. pageSize: The required maximum number of entities on a specific response page

    11. payload/Entities: It may contain the main service entity in case of a query by example criteria

  2. 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:

    1. envelope/header/messaging/usermessage/partyinfo/from/partyID: A unique identifier of the requester’s eDelivery AP

    2. envelope/header/messaging/usermessage/partyinfo/to/partyID: A unique identifier of the EUDAMED eDelivery AP

    3. envelope/body/submitRequest/payload: It holds the base64 format of the request0 message

  3. 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.

  4. 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.

  5. The PullRequest message (request3), is sent from EUDAMED’S eDelivery AP to EUDAMED’s backend. The status of the message is now SENDING.

  6. 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.

  7. A PullResponse message (response0) is created by EUDAMED containing the following attributes:

    1. messageID: A unique identifier, issued by submitter

    2. correlationID: The same as correlationID from the request message

    3. responseCode: Status code of the service call (success or matching error code)

    4. sender/service/ServiceID: An identifier of the EUDMAED initiator service

    5. sender/node/nodeCode: An identifier of the EUDAMED eDelivery party identifier

    6. sender/node/nodeID: An identifier of the eDelivery partyID

    7. recipient/service/serviceID: The requester’s generic callback service

    8. recipient/service/serviceOperation: The requester’s callback service operation (as specified in the request message)

    9. payload/entities: It contains the list of entities of the same type that were collected through the service invocation

  8. 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:

    1. envelope/header/messaging/usermessage/partyinfo/from/partyID: A unique identifier of the requester’s eDelivery AP

    2. envelope/header/messaging/usermessage/partyinfo/to/partyID: A unique identifier of the EUDAMED eDelivery AP

    3. envelope/body/submitRequest/payload: It holds the base64 format of the response0 message

  9. The PullResponse message (response2), is sent by EUDAMED’s eDelivery AP to the organisation’s eDelivery AP.

  10. 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.

  11. The PullResponse message (response3), is sent from the organisation’s eDelivery AP to organisation’s backend. The status of the message is now SENDING.

  12. 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>