ЕСОЗ - публічна документація
RC_[UPD] Get Device request details
Purpose
This WS is designed to return Device request details by identifier.
Specification
Link | Посилання на Apiary або Swagger | |
Resource | /api/patients/{{patient_id}}/device_requests/{{device_request_id}} | Посилання на ресурс, наприклад: /api/persons/create |
Scope |
| Scope для доступу |
Components | Devices | Зазначається перелік бізнес компонентів, які використовують цей метод, наприклад: ePrescription |
Microservices |
| Перелік мікросервісів, які використовує метод API, наприклад: Auth, ABAC |
Protocol type | REST | Тип протоколу, який використовується запитом, наприклад: SOAP | REST |
Request type | GET | Тип запиту API, наприклад: GET, POST, PATCH… |
Sync/Async | Sync | Метод є синхронним чи асинхронним? |
Public/Private/Internal | Public | Потрібно зазначити тип методу за ступенем доступності |
Logic
Service returns specified Device requests related to the patient:
Get Device requests from device_request collection (MongoDB)
Validate data consistency:
Ensure that requested Device requests relates to requested Patient (from URL)
Return 403 ('Access denied') in case of error
Fill in
urgent
block with current authentication method and verification_code field:Get program from request and (if provided) get program setting
request_notification_disabled
If person has OTP or THIRD_PERSON (with OTP) authentication method and
request_notification_disabled
= false/null (or absent), then set phone_number and verification_code=nullif person has OTP or THIRD_PERSON (with OTP) authentication method and
request_notification_disabled
= true, then set verification_code and phone_number
Render a response according to the specification
Calculate remaining quantity:
Select all Device dispenses in status completed related to the Device request
Sum
quantity
in the filtered Device dispenses as dispensed_qtyCalculate remaining_quantity = requested_quantity- dispensed_quantity
Return remaining_quantity in the response
Fill in
urgent
block with current authentication method and verification_code field:Get program from request and (if provided) get program setting
request_notification_disabled
Get person authentication method according to logic:
If inform_with exists in device request and is not empty, check:
Authentication method exists in person_authentication_methods table in MPI DB (with is_active=true), is active (ended_at > now() or null)
Get value of
THIRD_PERSON_CONFIDANT_PERSON_RELATIONSHIP_CHECK
config parameter, if it is set totrue
- for authentication method with type = THIRD_PERSON check that person from value is an approved confidant for a person from device request – exists active and approved confidant person relationship between person from request and confidant_person_id from authentication method value (using following logic: Check confidant person relationship withperson_id
= person from request andconfidant_person_id
= value from auth method - expected:ok, :approved
response)in case any validation failed - set verification_code and phone_number=null
else - get persons authentication method from inform_with
if inform_with does not exist in device request or is empty - get default authentication method of person from MPI using Determination of a default authentication method and return person's active auth_methods
If person has OTP or THIRD_PERSON (with OTP) authentication method and
request_notification_disabled
= false/null (or absent), then set phone_number and verification_code=nullif person has OTP or THIRD_PERSON (with OTP) authentication method and
request_notification_disabled
= true, then set verification_code and phone_numberIf person has OFFLINE authentication method (or doesn't have any active authentication method), then set verification_code and phone_number=null
Render a response according to the specification
Calculate remaining quantity:
Select all Device dispenses with following parameters:
based_on is current Device request
status = completed, preparation
Sum
quantity
in the filtered Device dispenses as dispensed_qtyCalculate remaining_quantity = requested_quantity- dispensed_quantity
Return remaining_quantity in the response
Input parameters
Input parameter | Values | Type | Description | Example |
---|---|---|---|---|
patient_id |
| String | Unique patient identifier |
|
device_request_id |
| String | Unique device request identifier |
|
Authorize
Verify the validity of access token
Return (401, 'Invalid access token') in case of validation fails
Verify that token is not expired
in case of error - return (401, 'Invalid access token')
Check user scopes in order to perform this action (scope = 'device_request:read')
Return (403, 'Your scope does not allow to access this resource. Missing allowances: device_request:read') in case of invalid scope(s)
Access to the resource is also managed by ABAC rules.
Headers
Content-Type:application/json
Authorization:Bearer mF_9.B5f-4.1JqM
api-key:aFBLVTZ6Z2dON1V
Response structure
See on Apiary
Example:
HTTP status codes
HTTP status code | Message | What caused the error |
---|---|---|
200 |
|
|
404 |
|
|
ЕСОЗ - публічна документація