Table of Contents

...

Decode content that is encrypted in an electronic digital signature.
Use Digital signature WS. Method checks digital signature and returns result.
See service specification

Validate DRFO

  1. Check that DRFO in Certificate details exists and not empty
  2. Check that DRFO in Certificate details is equal to DRFO in Party
    1. Get party.tax_id using employee_id in person payload
    2. Compare DRFO in Certificate with party.tax_id
      1. Convert DRFO and TAX_ID to uppercase
      2. Compare DRFO and TAX_ID as Cyrillic letters
      3. Convert DRFO to Cyrillic and compare as Cyrillic letters
    3. In case validation fails - generate 422 error

...

Patient request can be signed by any employee with necessary scopes in equal legal_entity_id.

  1. Check that ID in URL exists in the system
    1. Return 401 in case validation fails
  2. Check that patient request belongs to the same legal entity as the user
    1. In case of error - return 403

...

  1. Change entity status in IL_DB.patient_request to SIGNED
  2. Set updated_at - now() (Get current date-time)

  3. Set updated_by - user_id (Extract user from token)

Create person

After singed patient request create new person on DB.mpi.

In table  person in filed conf_person don't write information.

If person has confidant auth_method = third_person, add in table person_auth_methods row with type = third_person, value = id (confidant_person_id), alias (from payload).

Add person to Person_connection

If person request has information of confidant person - add row to table person_connection in db.mpi after signed patient requestAlso to table person_auth_methods add is_primary(after Create patient request = TRUE), is_active.

Start date: start_date = Current_date()

End date:


if (person.age < 18) {
  end_date = min(birth_date + 18y - 1d, start_date + third_person_term);
} else {
  end_date = start_date + third_person_term;
}

Person_auth_methods

uuid
Name
Type
M/O
Comment
iduuidM
person_iduuidM

related_person_id


typevarcharM
relation_type
OFFLINE, OTP or THIRD_PERSON
valuevarchar
M
Oif THIRD_PERSON would be third_person_id
started_attimestampM
end_attimestampM

documents_relationship

jsonbO

alias

varcharM
is_primarybooleanM
is_activebooleanM
inserted_attimestampM
inserted_byuuidM
updated_attimestampM
updated_byuuidM