Specification
Validations
Validate request
Validate request using JSON schema
in case of error - return 422
Validate Medication request
Get Medication request identifier from the URL. Check Medication request exists in OPS DB
in case of error - return 404 (“Medication request does not exist")
Validate user
Medication Request blocking is allowed for user if he has active and approved employee with employee_type = ‘PHARMACIST’
in case of error - return 409 ("Only pharmacist can block medication request")
Validation transition
Get Medication request by $.id in OPS DB. Check that Medication request status = ‘ACTIVE’
in case of error - return 409 ("Medication request must be in active status")
Get Medication request by $.id in OPS DB. Check that Medication request is not blocked, i.e. is_blocked = falsein case of error - return 409 ("Medication request is already blocked")
Validate block reason code
Validate $.block_reason_code is a value from MEDICATION_REQUEST_BLOCK_REASON dictionary
in case of error - return 422 ("value is not allowed in enum")
Check that $.block_reason_code is present in PHARMACIST_MEDICATION_REQUEST_BLOCK_REASON_CODES chart parameter for validated user
in case of error - return 422 ("Block reason code is not allowed for PHARMACIST")
Validate blocked_to
Validate $.blocked_to > now()
in case of error - return 422 ("Blocked_to date should be equal to or greater than the current date")
Validate $.blocked_to <= $.medication_request.dispense_valid_to
in case of error - return 422 ("Blocked_to date should be equal to or less than the dispense validity end date")
Service logic
Update Medication request in OPS DB:
set is_blocked = trueset blocked_to = $.blocked_to OR $.medication_request.dispense_valid_to date + 23:59 time (in case blocked_to is absent in request)
set blocked_by_legal_entity_id = legal_entity_id (client_id) from token
set block_reason_code = $.block_reason_code
set block_reason = $.block_reason
set updated_by = user_id
set updated_at = now()
Send SMS for personIf Medication request has program with medical program settingmedication_request_notification_disabled=true, then don't send SMS.Else:Get authentication_method of person from MPIIf authentication_method == OTP, then send SMS to a person from Medication request:Generate SMS textget template fromblock_template_smsparameterenrich template with data from Medication request
Send SMS to a person
Return Medication request data with trimmed information about legal entity, division and employee
Add new record in Event manager:
field | value |
---|---|
|
|
|
|
| $.id |
| $.blocked_to |
| $.update_at |
| $.changed_by |