delivers user requests to the corresponding source systems
upon receiving responses, it consolidates the data and maps to FHIR resource.
returns the FHIR resources as response (in a Bundle) to the caller.
During the process, we are not allowed to store any data due to legislation rules.
We also have no control over what data the source systems send to us. Some source systems send various clinical data for a patient that could be a combination of patient demographics, allergies, adverse reactions, immunization history, immunization recommendations, conditions and reasons for deferring or refusing a vaccination; that’s in one response to a search call. The specific source system that provides us immunization records has a slow response time. We want to ensure our FHIR request is efficient. So we were thinking an http GET operation would be a good candidate at our FHIR Server to submit one request to get all data we need but we were not sure which type it could be,
resource type (GET [base]/Immunization/$immusys?patient=[patient_id]) or
resource instance (GET [base]/Patient/[patient_id]/$immusys)
Not sure about using operations but it looks like (from the FHIR wiki page about searching) you can use a batch transaction to send multiple GET requests to the server and get a bundle response of the GETs:
" The batch and transaction interactions submit a set of actions to perform on a server in a single HTTP request/response. The actions may be performed independently as a “batch”, or as a single atomic “transaction” where the entire set of changes succeed or fail as a single entity. Multiple actions on multiple resources of the same or different types may be submitted, and they may be a mix of other interactions defined on this page (e.g. read , search , create , update , delete , etc.), or using the operations framework."
They even have some examples you might be interested to see if they may meet your use case:
This seems like an asynchronous request. You might look at the CDex implementation guide from Da Vinci which leverages the CommunicationRequest resource for this sort of thing. (http://build.fhir.org/ig/HL7/davinci-ecdx)