Service logic
Update device request status to completed (update also updated_at, updated_by)
Get person's authentication_method according to logic:
If
authorize_withinform_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 /wiki/spaces/CSI/pages/17667883028 withperson_id
= person from request andconfidant_person_id
= value from auth method - expected:ok, :approved
response)in case any validation failed - do not send SMS to person
else - get authentication_method from
authorize_withinform_with
If
authorize_withinform_with does not exist in device request or is empty - get default authentication_method of person from MPI using logic https://e-health-ua.atlassian.net/wiki/spaces/CSI/pages/17613029453
If authentication_method == OTP or THIRD_PERSON (with OTP) :
Check if sms notifications are enabled:
check config parameter
DEVICE_REQUESTS_SMS_ENABLED
is set in trueelse return an error 409 “Action is disabled by the configuration”
Generate text SMS with template
COMPLETE_DEVICE_REQUEST_SMS_TEMPLATE
.Send SMS
Save internal information to corresponding DB
Send
StatusChangeEvent
to the Event Manager