Specification
Apiary | |
JSON Schema response | SPECS |
Purpose
This WS is designed to return Medication request detail.
Search Medication Request possible in 2 options: by `medication_request.id` OR `medication_request.request_number`.
According to requirements:
- User of MSP (DOCTOR, etc) can see all Medication request for which he is the a doctor (employee_id)
- User of MSP (DOCTOR, etc) can see all the Medication requests of the patients whom he has an active decleration with by yourself a doctor (employee_id)
- User of PHARMACY or NHS_ADMIN (PHARMACIST, etc) can see all Medication request (without limitations)
Input parameters (filters)
- id
Validate request
Search Medication Request
- Search record by `$.id` in column `medication_request.id`
- If not found - Search record by `$.id` in column `medication_request.request_number`
- If not found - Return 404 in case "Not found record in DB with this ID!"
- If not found - Search record by `$.id` in column `medication_request.request_number`
Validate FK
- Read data from `ops_db.medication_requests` by `id`
- Validate legal_entity_id - legal_entity_id exists
- Return 422 in case validation fails (422 EView)
- Validate employee_id - employee_id exists
- Return 422 in case validation fails (422 EView)
- Validate division_id - division_id exists
- Return 422 in case validation fails (422 EView)
- Validate medical_program_id - medical_program_id exists
- Return 422 in case validation fails (422 EView)
- Validate all medication_id - medication_id exists
- Return 422 in case validation fails (422 EView)
- Validate person_id - mpi_id exists
- Return 422 in case validation fails (422 EView)
Logic WS
- Verify the validity of access token
- Return 401 in case validation fails
- Check user scopes in order to perform this action (scope = 'medication_request:details')
- Return 403 in case invalid scope(s)
- Get `client_type` from `mithril.clients`
Logic WS for `client_type` = MSP
- Get `my_party_id` from `$.context.user_id`
- Return 500 in case ("Not found party for this user!")
- Get list from `prm.employees` for this `party_id` & `$.context.legal_entity_id`
Search Medication requests by filters:
SELECT * FROM medication_request MR INNER JOIN employees E ON E.party_id = my_party_id AND (E.id = $.employee_id OR $.employee_id IS NULL) AND (E.legal_entity_id == $.context.legal_entity_id OR $.context.legal_entity_id IS NULL) LEFT JOIN declarations D ON D.Employee_id = E.id AND E.status = ACTIVE AND D.status = ACTIVE AND MR.person_id = D.person_id WHERE (MR.id = $.id OR MR.request_number = $.id) AND MR.employee_id == E.id AND MR.is_active = TRUE
Logic WS for `client_type` = PHARMACY or NHS_ADMIN
Search Medication request by $.id:
SELECT * FROM medication_request MR WHERE (MR.id = $.id OR MR.request_number = $.id) AND MR.is_active = TRUE
Response (output)
- Return object with responce structure from WS Sign Medication Request.