Service logic
Save signed content to media storage
Update device request status to entered-in-error (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:
if device_request has a program specified
check that the specified program has setting
request_notification_disabled
set in false or the setting is absent, else
if device_request has no program specified
check config parameter
DEVICE_REQUESTS_SMS_ENABLED
is set in true
Generate text SMS with template
MARK_IN_ERROR_DEVICE_REQUEST_SMS_TEMPLATE
and send itSave internal information to corresponding DB
Send
StatusChangeEvent
to the Event Manager