hl7-be / pss

Prescription Search Support
Other
0 stars 0 forks source link

[Document] Matching between Smals APIs and FHIR Proposal #10

Open NathanPeeters opened 8 months ago

NathanPeeters commented 8 months ago

Proposal : The goal is to structure APIs schemes into FHIR schemes and make sure there's matching between both.

NISN-SMALS commented 8 months ago

NOTE: Our focus is currently on the educational web application, so changes may still happen to the Rest API.

The logic should be based on the API contract. Link with the Rest API (PSS) based on https://github.com/hl7-be/pss/issues/9 Step 1 & 2: GET /v1/domains/{domainCodeValue}/indications/{system}-{value}/parameters

Response 200 ```yaml { "supportParameters": [ { "identifier": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "patientVariables": [ { "identifier": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "authorizedCodes": [ { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" } ], "type": "string", "version": "string" } ] } ] } ```

Step 3 & 4: POST /v1/supportRequests

Request ```yaml { "domain": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "exchangeId": "string", "indication": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "intention": "string", "supportParameterValues": [ { "identifier": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "value": "string", "patientVariableValues": [ { "identifier": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "patientCodes": [ { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" } ], "type": "string", "value": "string", "version": "string" } ] } ] } ```
Response 201 ```yaml { "exchangeId": "string", "responseId": "string", "request": { "domain": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "exchangeId": "string", "indication": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "intention": "string", "supportParameterValues": [ { "identifier": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "value": "string", "patientVariableValues": [ { "identifier": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "patientCodes": [ { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" } ], "type": "string", "value": "string", "version": "string" } ] } ] }, "justification": { "decisions": [ { "inputs": [ { "name": "string", "value": "string" } ], "matchingRule": { "conditions": [ { "name": "string", "value": "string" } ], "conclusion": "string" } } ] }, "supportOptions": [ { "score": 0, "instruction": [ { "language": "string", "value": "string" } ], "evidenceSummary": [ { "language": "string", "value": "string" } ] } ] } ```

Step 5: POST /v1/supportRequests/{exchangeId}/conclusion

Request ```yaml { "domain": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "exchangeId": "string", "indication": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "intention": "string", "supportParameterValues": [ { "identifier": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "value": "string", "patientVariableValues": [ { "identifier": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "patientCodes": [ { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" } ], "type": "string", "value": "string", "version": "string" } ] } ] } ```
Response 203 ```yaml { "exchangeId": "string", "responseId": "string", "request": { "domain": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "exchangeId": "string", "indication": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "intention": "string", "supportParameterValues": [ { "identifier": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "value": "string", "patientVariableValues": [ { "identifier": { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" }, "patientCodes": [ { "system": "string", "code": "string", "translations": [ { "language": "string", "value": "string" } ], "version": "string" } ], "type": "string", "value": "string", "version": "string" } ] } ] }, "justification": { "decisions": [ { "inputs": [ { "name": "string", "value": "string" } ], "matchingRule": { "conditions": [ { "name": "string", "value": "string" } ], "conclusion": "string" } } ] }, "supportOptions": [ { "score": 0, "instruction": [ { "language": "string", "value": "string" } ], "evidenceSummary": [ { "language": "string", "value": "string" } ] } ] } ```