ЕСОЗ - публічна документація

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 28 Next »

Purpose

This WS allows to link medical data of unidentified person to person in eHealth. Thus it helps person who was unidentified during some period to store all its medical history.

Specification

Apiary

Service logic

  1. Only authenticated and authorized OWNER, ADMIN, RECEPTIONIST, DOCTOR employees can merge prepersons with prepersons.

  2. Prepersons can be merged in EMERGENCY, MSP, MSP_PHARMACY, OUTPATIENT, PRIMARY_CARE legal entities.

  3. Employee can merge any active preperson to any active person.

  4. To merge person with preperson only their MPI ids needed.

  5. Change status should be logged in the Event manager.

Authentication

  1. Verify the validity of access token

    1. Return 401 in case validation fails

  2. Check user scopes in order to perform this action (scope = 'preperson_merge_request:write')

    1. Return 403 in case invalid scope(s)

Validate request

Validate request using schema (TBD)

Validate legal entity

Check that legal entity is active (status = ACTIVE, SUSPENDED)

  1. Extract client_id from token (token.client_id == legal_entity_id)

  2. Check legal entity status (status = ACTIVE, SUSPENDED)

    1. In case of error - return 409 (Legal entity must be ACTIVE or SUSPENDED)

Validate person

Ensure the person exists

  1. Validate person_mpi_id UUID

    1. In case of error - return 422

  2. Find person by id in mpi.persons

    1. In case of error - return 422 (Such person doesn't exist)

  3. Check person status is active

    1. In case of error - return 409 (Person is not active)

Validate preperson

Ensure the preperson exists

  1. Validate preperson_mpi_id UUID

    1. In case of error - return 422

  2. Check preperson_mpi_id doesn't exist in mpi.persons, but exists in medical_data.patients as patient_id. It means that preperson_mpi_id relates to preperson, but not to person.

    1. In case of error - return 422 (Such preperson doesn't exist)

  3. Check preperson status is active in medical_data.patients

    1. In case of error - return 409 (Preperson is not active)

  4. Check if exists another preperson merge requests with status NEW or APPROVED for this preperson

    1. if exists - update status to REJECTED

Validate employee

  1. Extract user_id and legal_entity_id from token and find corresponding employee_id

  2. Check employee status is APPROVED

    1. In case of error - return 422 error (Only active employee can create preperson merge request)

  3. If employee has division - validate it has status ACTIVE

    1. In case of error - return 422 error (Only employee of active divisions can create preperson merge request)

Save object to DB

il.person_requests table

Parameter

Source

Description

id

uuid

Autogenerated

type

string

Set PREPERSON_MERGE_REQUEST for this type of requests. Required

data

jsonb

Data from the request in json format. Required

person_mpi_id

Request: person_mpi_id

Person identifier in MPI (mpi.persons.id). Required

preperson_mpi_id

Request: preperson_mpi_id

Preperson identifier that corresponds to MPI (returned on create preperson). Required

status

varchar(50)

Status of the request, required. Set NEW

merged_pair_id

uuid

Reference to mpi.merged_pairs table when person becomes merged with preperson (on sign). By default is null.

printout_form

text

Printout form of preperson merge request in html format. By default is null at this step

inserted_by

uuid

Extract user from token

inserted_at

timestamp

Get current date-time

updated_by

uuid

Extract user from token

updated_at

timestamp

Get current date-time

Generate verification code

  1. Validate person authentication method in mpi.person_authentication_methods table:

    1. If type is OTP or THIRD_PERSON - Generate verification code as on create patient request process. Except phone number is taken from mpi.person_authentication_methods table.

  • No labels