Table of Contents |
---|
...
Page Properties | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||
|
Logic
Save signed content to media storage, in bucket pointed in MEDIA_STORAGE_DEVICE_REQUEST_BUCKET chart parameter
Fill in the following fields:
requisition. Generate requisition number as described at Human readable Medication request number , but based on the Device Request identifier and put it in the field.
signed_content_links. Add string item in the array with a link on saved content in media storage
status = ACTIVE
status_reason = null
subject. Set hashed patient_id from URL
requester_legal_entity. Set client_id from token
quantity.unit. Set description according to quantity code and system
dispense_valid_to. Set (current_date + dispense_period_day) if medical program was set and it has dispense_period_day setting. Otherwise, set the value using device_dispense_period global parameter.
verification_code. Generate random 4-digit code
context_episode_id. Set episode from the $.encounter
inserted_at. Set current date and time
updated_at. Set current date and time
inserted_by. Set current user from token
updated_by. Set current user from token
Send verification code:
Determine patient's default authentication method as described at Determination of a default authentication method and return person's active auth_methods :
if OTP defined, then generate text according to TEMPLATE_SMS_FOR_CREATE_DEVICE_REQUEST and send SMS with verification_code
Save data to device_requests collection in MongoDB according to /wiki/spaces/CSI/pages/17467375685
Send
StatusChangeEvent
to Event Manager
Input parameters
Input parameter | Values | Type | Description | Example |
---|---|---|---|---|
patient_id | String | MPI identifier of the person |
|
Request structure
See on Apiary
...
Validate request is signed
in case of error - return 400 (“document must be signed by 1 signer but contains 0 signatures”“Invalid signed content”)
Check DS is valid and not expired
Validate that DS belongs to the requester
Check that DRFO from DS and party.tax_id matches
in case of error - return 422 (“Does not match the signer drfo““Signer DRFO doesn't match with requester tax_id“)
Validate legal entity
Extract client_id from token
Check legal entity status is ACTIVE
In case of error - return 409 ('client_id refers to legal entity that is not active')
Check legal entity type in ME_ALLOWED_TRANSACTIONS_LE_TYPES config parameter
in case of error - return 409 ('client_id refers to legal entity with type that is not allowed to create medical events transactions')
...
Get Patient identifier from the URL
Check it exists in persons table (MPI) and has status active
Return 404 ('Person is not found') in case of error
Validate person'sverification_status is not equal to NOT_VERIFIED.
in case NOT_VERIFIED - return error 409 ("Patient is not verified")
Validate person isnot a preperson
in case error - return error 409 ("Forbidden to create device request for a preperson")
Validate request
Validate request using schema.
...