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

DEPRECATED_IL.Create employee request



Method is used to register new employee or to update an existing one. There is 2 different flows of registration depend on whether the employee has tax_id or doesn't have.

Authorize user

  1.  

    1. Validate MIS API Key

    2. Check MIS scopes employee_request:create in order to perform this action

      1. In case error - generate 401 response

Validate request (JSON schema)

  1.  

    1. Validate request using JSON schema

      1. In case validation fails - generate 422 error

Validate additional info

There are different validation rules for different employee types.

Validate request (Logic)

  1. If employee_id is passed in the payload:

    1. search employees by employee_id

      1. if not found - return error 404

      2. else check * employee_type and (* tax_id or passport_id), *birth_date

        1. If doesn't match, return error 409

        2. If match, check that employee is active

          for (employee_type = OWNER), status = APPROVED and is_active = false

          for (employee_type not OWNER), status = DISMISSED and is_active = true

          1. if employee is active - create employee request

          2. if employee is not active - return error 409

  2. Validate allowed employee_type for current legal entity type. Click for validation rules.

    1. if not found - return error 404

  3. Validate legal entity type status for current legal entity: status should be active or suspended

  4. Validate party

    1. first_name, last_name, second_name have the same validation pattern - `^(?!.*[ЫЪЭЁыъэё@%&$^#])[А-ЯҐЇІЄа-яґїіє’\\'\\- ]+$` 

      1. if doesn't match, return error 422 "string does not match pattern ..."

    2. validate birth_date

      1. birth_date > 1900-01-01 and birth_date < current date

        1. otherwise return error 422 "invalid birth_date value"

      2. birth_date has validation pattern - `^(\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))?)?$`

        1. if doesn't match, return error 422 "expected 'birth_date' to be a valid ISO 8601 date"

    3. gender has one of the following values - "FEMALE", "MALE"

      1. otherwise return error 422 "value is not allowed in enum"

    4. validate tax_id

      1. tax_id has validation pattern - `^([0-9]{9,10}|[А-ЯЁЇIЄҐ]{2}\\d{6})$`

        1. if doesn't match, return error 422 "string does not match pattern ..."

    5. email has validation pattern - `^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[A-Z0-9-]+\\.)+[A-Z]{2,6}$`

      1. if doesn't match, return error 422 "expected 'email' to be an email address"

    6. validate documents

      1. documents.type has one of the following values:

        1. "BIRTH_CERTIFICATE"

        2. "BIRTH_CERTIFICATE_FOREIGN"

        3. "COMPLEMENTARY_PROTECTION_CERTIFICATE"

        4. "NATIONAL_ID"

        5. "PASSPORT"

        6. "PERMANENT_RESIDENCE_PERMIT"

        7. "REFUGEE_CERTIFICATE"

        8. "TEMPORARY_CERTIFICATE"

        9. "TEMPORARY_PASSPORT"

          1. otherwise return error 422 "value is not allowed in enum"

      2. documents.number has validation pattern according to documents.type

        1. BIRTH_CERTIFICATE - `^((?![ЫЪЭЁыъэё@%&$^#`~:,.*|}{?!])[A-ZА-ЯҐЇІЄ0-9№\\/()-]){2,25}$`

        2. COMPLEMENTARY_PROTECTION_CERTIFICATE - `^((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{6}$`

        3. NATIONAL_ID - `^[0-9]{9}$`

        4. PASSPORT - `^((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{6}$`

        5. PERMANENT_RESIDENCE_PERMIT - `^(((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{4,6}|[0-9]{9}|((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{5}\\/[0-9]{5})$`

        6. REFUGEE_CERTIFICATE - `^((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{6}$`

        7. TEMPORARY_CERTIFICATE - `^(((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{4,6}|[0-9]{9}|((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{5}\\/[0-9]{5})$`

        8. TEMPORARY_PASSPORT - `^((?![ЫЪЭЁыъэё@%&$^#`~:,.*|}{?!])[A-ZА-ЯҐЇІЄ0-9№\\/()-]){2,25}$`

      3. validate documents.issued_at 

        1. documents.issued_at has validation pattern - `^(\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))?)?$`

          1. if doesn't match, return error 422 "expected 'issued_at' to be a valid ISO 8601 date"

    7. validate phones

      1. phones.type has one of the following values - "LAND_LINE", "MOBILE"

        1. otherwise return error 422 "value is not allowed in enum"

      2. phones.number has validation pattern - `^\\+38[0-9]{10}$`

        1. if doesn't match, return error 422 "string does not match pattern ..."



Alternative notation 2 of validation :

if (employee_id is passed in the payload) { result=search employees by employee_id; if (result == false) { return error 404 } else { result=check * employee_type and * tax_id and *birth_date if (result == false) { return error 409} else { if (employee is active) { if (employee_type = OWNER || employee_type = PHARMACY_OWNER) { set status = APPROVED set is_active = false} if (employee_type not OWNER && employee_type not PHARMACY_OWNER) { set status = DISMISSED set is_active = true} if (employee is active) { create employee request } else { return error 409 } } } } } } } result=search employee_type_legal_entity_type_links by employee_type+legal_entity_type if (result == false) { return error 404 }

Create employee request

Create employee request in IL_DB table - employee_request.

  1.  

    1. generate GUID and writte in id column

    2. write JSON object with employee request details

Send activation link on email

  1. Generate activation link, which contains Employee request GUID

  2. Send activation URL on user email

    1. invoke service - Send message
      See service specification 

Updating employee data

To update the data of an existing employee use the endpoint `Create Employee Request`.
It is necessary to transfer the same JSON as when creating employee request with the same id of an existing employee.

There are several rules when updating employee data:

  1. Position can not be changed

    1. in case of failure, return error 409 "employee position can not be changed"

  2. If specialities.speciality_officio:true, in this object value of speciality can not be changed (with several exceptions in the item b)

    1. in case of failure, return error 409 "employee speciality_officio can not be changed"

    2. there are following exceptions related to speciality changing for legal entity types “PRIMARY CARE” and “MSP“:

Old speciality

New speciality

Status details for existing declarations

Old speciality

New speciality

Status details for existing declarations

pediatrician

family_doctor

patient's declarations aged 0 to 18 remain status “active”

pediatrician

therapist

patient's declarations aged 0 to 18 change status to “terminated”

family_doctor

therapist

patient's declarations aged 18 and older remain status “active”

patient's declarations aged 0 to 18 change status to “terminated”

family_doctor

pediatrician

patient's declarations aged 0 to 18 remain status “active”

patient's declarations aged 18 and older change status to “terminated”

therapist

family_doctor

patient's declarations aged 18 and older remain status “active”

therapist

pediatrician

patient's declarations aged 18 and older change status to “terminated”

 

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