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

ARCHIVE_Create merge request_EN (DRACS, DRFO)

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 SPECIALIST, ASSISTANT or RECEPTIONIST employees can merge prepersons with prepersons.

  2. Prepersons can be merged in EMERGENCY or OUTPATIENT 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 = 'merge_request:write')

    1. Return 403 in case invalid scope(s)

  3. If BLOCK_UNVERIFIED_PARTY_USERS is true, then check party's data match following condition: verification_status != NOT_VERIFIED or (verification_status = NOT_VERIFIED and updated_at <= current_date - UNVERIFIED_PARTY_PERIOD_DAYS_ALLOWED):

    1. in case not match - return 403 ("Access denied. Party is not verified")

Validate request

Validate request using schema (TBD)

Validate legal entity

Check that legal entity is active (status = ACTIVE)

  1. Extract client_id from token

  2. Check legal entity status (status = ACTIVE)

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

Validate person

Ensure master_person_id is person

  1. Validate master_person_id UUID

    1. In case of error - return 422

  2. Find person by id in mpi.persons

    1. In case of error - return 404 ( Person not found)

  3. Check person status is active

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

Validate preperson

Ensure merge_person_id is preperson

  1. Validate merge_person_id UUID

    1. In case of error - return 422

  2. Find preperson by id in mpi.prepersons

    1. In case of error - return 404 (Preperson not found)

  3. Check preperson status is active in mpi.prepersons

    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 of another requests to CANCELLED

  5. Check if preperson has at least one episode( status!= "entered_in_error")

    1. if no episodes - return 409 (Preperson has no episodes)

Validate authorize_with

If submitted, validate authorize_with field for a person as described on create Person request process. But for success case set it to il.merge_requests.authentication_method_current field instead.

Generate verification code

Validate person authentication method in mpi.person_authentication_methods table:

In case no auth methods found (null) - return error with code 409 (Person has no auth methods)

Save object to DB

il.merge_requests table

Parameter

Source

Description

Parameter

Source

Description

id

uuid

Autogenerated

data

jsonb

Contains data for signed_content in json format. At this step is null. Optional field

master_person_id

Request: master_person_id

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

merge_person_id

Request: merge_person_id

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

status

string

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

legal_entity_id

Request: client_id

Legal entity where request was created. Client_id extracted from token. Required

documents

jsonb

urls of the person`s documents if chosen authentication method is OFFLINE

authentication_method_current

jsonb

Person current authentication method.

is_active

bool

Technical flag. By default is true

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

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