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

RC_Approve/Reject employee request (DMS)

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:

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

Update employee request status to APPROVED

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

See service specification

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

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