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

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

Version 1 Current »

image2017-7-13_13-39-19.png

Method is used for approve or reject employee request.

See service specification

curl -X POST -H 'Content-Type: application/json' -H 'Authorization:Bearer YW5WcFkyVnFkV2xqWldwMWFXTmxDZzpjY1hwWTR0cWRZbGVjNHAxYUdsMXVJ' 'http://ehealth.nebo15.com/employee_requests/d290f1ee-6c54-4b01-90e6-d701748f0851/actions/approve'

Authorize

  1. Verify the validity of access token

  2. Check user scope employee_request:update in order to perform this action

    1. In case error - return 401 error

Check action in request

  1. if action = APPROVE, add user new role

  2. if action - REJECT, update employee request status on REJECTED 

Update employee request status to REJECTED

Invoke WS to update employee request status with parameter 'action'='reject' 

See service specification

curl -X PATCH -H 'Content-Type: application/json' 'http://ehealth.nebo15.com/employee_requests/d290f1ee-6c54-4b01-90e6-d701748f0851/actions/reject'

Get Employee Request Details

Invoke WS Get Employee Request by ID for further employee creation

 See service specification

curl -X GET -H 'Content-Type: application/json' 'http://ehealth.nebo15.com/employee_requests/d290f1ee-6c54-4b01-90e6-d701748f0851'

Create user in Auth

Create user in Auth

Create/Update employee

image2017-7-13_13-39-58.png

  1. Search party_id by tax_id (tax_id or passport_number) and birth_date for deduplication Party

    1. If found, update object party - Update party WS

    2. If not found, - Create object party 

  2. Update Party.  See specification

    1. The following fields can't be changed:

      1. tax_id (tax_id or passport_number) 

      2. birth_date

    2. If doctor object in ER is null, don't update party.eductions/party.qualifications/party.specialities/party.science_degree. Otherwise update those objects.

    3. if about_myself/working_experience is null or empty string - don't update correspondent fields in parties.

  3. Create party WS. See specification

    1. create related entity party-user in PRM 

  4. Chech employee_id in request

    1. if employee_id is exist in request, Update employee.

    2. if  employee_id is not exist, Create employee.

  5. Update employee. See specification

    1. The following fields can't be changed:

      1. employee_type

      2. legal_entity_id

      3. start_date

    2. if employee_type = 'DOCTOR', update doctor object

    3. if one of next fields were changed:

      1. first_name

      2. second_name

      3. last_name
        find contracts with contractor_owner_id=$owner_id and status='VERIFIED'. Set ops.contracts.is_suspended=true

    4. if main speciality (speciality with speciality_officio = true) of employee is changed:

      1. from PEDIATRICIAN or FAMILY_DOCTOR to THERAPIST

        1. find declarations with employee_id=$.employee_id, patient.birth_date>now() - global_parameters.adult_age (years) and status in ('active', 'pending_verification'), if found - update declarations in ops db:

          1. set status = 'terminated'

          2. set reason = 'AUTO_RETRAINED_AS_THERAPIST'

          3. set updated_at, updated_by

      2. from THERAPIST or FAMILY_DOCTOR to PEDIATRICIAN

        1. find declarations with employee_id=$.employee_id, patient.birth_date<=now() - global_parameters.adult_age (years) and status in ('active', 'pending_verification'), if found - update declarations in ops db

          1. set status = 'terminated'

          2. set reason = 'AUTO_RETRAINED_AS_PEDIATRICIAN'

          3. set updated_at, updated_by

        2. find declarations with employee_id=$.employee_id, patient.birth_date>now() - global_parameters.adult_age (years) and status in ('active', 'pending_verification'), if found - update declarations in ops db

          1. set end_date = min(patient.birth_date + prm.global_parametrs.adult_age - 1d, start_date + prm.global_parametrs.declaration_term - 1d)

          2. set updated_at, updated_by

      3. from PEDIATRICIAN to FAMILY_DOCTOR

        1. find declarations with employee_id=$.employee_id, patient.birth_date>now() - global_parameters.adult_age (years) and status in ('active', 'pending_verification'), if found - update declarations in ops db

          1. end_date = start_date + prm.global_parametrs.declaration_term - 1d

          2. set updated_at, updated_by

  6. Create new employee. See specification

    1. If (employee_type = OWNER || employee_type = PHARMACY_OWNER) : deactivate all other records with the employee_type = OWNER
      or employee_type = PHARMACY_OWNER for the legal_entity,
      where new owner is creating:

update employees e 
set is_active = false
inserted_by = $new_owner_id
inserted_at = md5(clock_timestamp()
where e.legal_entity_id = $employee_request.legal_entity_id
and (e.employee_type = 'OWNER' or e.employee_type = 'PHARMACY_OWNER')

In case new OWNER was added find contracts with contractor_owner_id=$old_owner_id and status='VERIFIED'.

Set ops.contracts.is_suspended=true

Create related entity party-user

Create related entity party-user

It can be only one pair user_id-party_id.

party_id cannot be updated for the user_id.

Check that there is no records in party_users for the stated in employee_request user_id

If not - return 422 error: "ЦЯ EMAIL-АДРЕСА ВЖЕ ЗАЙНЯТА ІНШИМ КОРИСТУВАЧЕМ"

Add role

Add user role by invoke service - название метода

Role is assigned according to employee_type

See service logic

See service spesification

curl -X POST -H 'Content-Type: application/json' -d '{
  "role": "doctor",
  "client_id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b"
}' 'https://trump.herokuapp.com/admin/parties/b075f148-7f93-4fc2-b2ec-2d81b19a9b7b/add_role'

Update employee request status to APPROVED

Invoke WS to update employee request status with parameter 'action'='approve' 

See service specification

curl -X PATCH -H 'Content-Type: application/json' 'http://ehealth.nebo15.com/employee_requests/b075f148-7f93-4fc2-b2ec-2d81b19a9b7b/actions/approve'

Send Email

Send email with successful registration using WS - Send Message (TBD)

Temporarily use Postmark

Submit party on verification

Create or update existing record in party_verifications table for a party according to logic in sections below. Also, set:

  • updated_at = now()

  • updated_by = user uuid

  • inserted_at = now() (for new records)

  • inserted_by = user uuid (for new records)

DRFO registry verification

Set to party verification record as ready for online verification with DRFO registry:

  • drfo_data_id = NULL

  • drfo_data_result = NULL

  • drfo_synced_at = NULL

  • drfo_verification_status = VERIFICATION_NEEDED

  • drfo_verification_reason = ONLINE_TRIGGERED

Then party will be verified online with DRFO registry via separate process: https://e-health-ua.atlassian.net/wiki/spaces/RNOKPP/pages/17271128770

DRACS death acts registry verification

Set to party verification record as ready for online verification with DRACS death acts registry:

  • dracs_death_verification_status = VERIFICATION_NEEDED

  • dracs_death_verification_reason = ONLINE_TRIGGERED

  • dracs_death_online_status = READY

If party is updated, check existance of verification candidates for party_id with status = ‘NEW’ and entity_type = ‘dracs_death_act' in party_verification_candidates table, if found - deactivate them, set:

  • status = ‘DEACTIVATED’

  • status_reason = ‘PARTY_UPDATED’

  • updated_at = now()

Then party will be verified online with DRACS death acts registry via separate process: https://e-health-ua.atlassian.net/wiki/spaces/DRACS/pages/17249239231

MVS passport registry verification

If party’s data match following rules: party has document with type ‘PASSPORT’ or ‘NATIONAL_ID’

then online verification with MVS passports registry needed. Set to party verification record:

  • mvs_passport_data_id = NULL

  • mvs_passport_data_status = NULL

  • mvs_passport_synced_at = NULL

  • mvs_passport_verification_status = VERIFICATION_NEEDED

  • mvs_passport_verification_reason = ONLINE_TRIGGERED

Then party will be verified online with MVS passports registry via separate process: https://e-health-ua.atlassian.net/wiki/spaces/EDDR/pages/18051334145

If party’s data does not match rules from above – online verification with MVS passports registry is not needed. Set to party verification record:

  • mvs_passport_data_id = NULL

  • mvs_passport_data_status = NULL

  • mvs_passport_synced_at = NULL

  • mvs_passport_verification_status = VERIFICATION_NOT_NEEDED

  • mvs_passport_verification_reason = AUTO_DATA_ABSENT

DMS passport registry verification

If party’s data match following rules: party has document with type ‘PASSPORT’ or ‘NATIONAL_ID’

then online verification with DMS passports registry needed. Set to party verification record:

  • dms_passport_data_id = NULL

  • dms_passport_data_status = NULL

  • dms_passport_synced_at = NULL

  • dms_passport_verification_status = VERIFICATION_NEEDED

  • dms_passport_verification_reason = ONLINE_TRIGGERED

Then party will be verified online with DMS passports registry via separate process: https://e-health-ua.atlassian.net/wiki/spaces/EDDR/pages/18050449429

If party’s data does not match rules from above – online verification with DMS passports registry is not needed. Set to party verification record:

  • dms_passport_data_id = NULL

  • dms_passport_data_status = NULL

  • dms_passport_synced_at = NULL

  • dms_passport_verification_status = VERIFICATION_NOT_NEEDED

  • dms_passport_verification_reason = AUTO_DATA_ABSENT

Calculate cumulative verification status

Calculate parties cumulative verification status based on parties verification status in each stream: DRFO registry verification, DRACS death acts registry verification, MVS passport registry verification, DMS passport registry verification according to logic described at https://e-health-ua.atlassian.net/wiki/spaces/EDDR/pages/18048417906/Party+verification+status+model#Cumulative-verification-status

  • Set calculated status to parties.verification_status field

  • Create StatusChangeEvent for the Party in event manager with new verification status if it was changed

  • No labels