Table of Contents |
---|
Purpose
...
Page Properties | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Logic
...
Dictionaries
POSITION
EMPLOYEE_TYPE
GENDER
+DOCUMENT_TYPE
COUNTRY
EDUCATION_DEGREE
QUALIFICATION_TYPE
PHONE_TYPE
SPECIALITY_TYPE
SPECIALITY_LEVEL
SPEC_QUALIFICATION_TYPE
...
new_employee_request_schema.json
There is an object “<employee_type>” (“doctor”, “assistant”, “specialist” …“specialist”…) in the body of the “employee_request”; <employee_type> is the same as employee to be created (DOCTOR, ASSISTANT, SPECIALIST, etc). Required for the emloyees employees with mandatory medical education (“doctor”, “assistant”, “specialist”, “assistant”, “laborant”, “med_coordinator”, ”med_admin”, ”pharmasist”).
if employee_type == PHARMACY_EMPLOYEE_TYPES check division_id
if division_id is absent - return error 422 "division_id should be specified"
Validate request (Logic)
Check employee_type: Employee configurable validation rules and dictionaries
If employee_id is passed in the payload:
search employees by employee_id
if not found - return error 404
else check * employee_type and (* tax_id or passport_id)
If dosn't match, return error 409
If match, check that employee is active
for (employee_type = OWNER or PHARMACY_OWNER), status = APPROVED and is_active = false
for (employee_type not OWNER and not PHARMACY_OWNER), status = DISMISSED and is_active = true
if employee is active - create employee request
if employee is not active - return error 409
Check allowed employee types for legal_entity type: Legal_Entity_Type vs Employee_Type validation rules
if not found - return error 404
Validate legal entity type status for current legal entity: status should be active or suspended
Validate party
first_name, last_name, second_name have the same validation pattern - `^(?!.*[ЫЪЭЁыъэё@%&$^#])[А-ЯҐЇІЄа-яґїіє’\\'\\- ]+$`
if doesn't match, return error 422 "string does not match pattern ..."
validate birth_date
birth_date > 1900-01-01 and birth_date < current date
otherwise return error 422 "invalid birth_date value"
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])))?)?$`
if doesn't match, return error 422 "expected 'birth_date' to be a valid ISO 8601 date"
gender has one of the following values - "FEMALE", "MALE"
otherwise return error 422 "value is not allowed in enum"
validate tax_id
tax_id has validation pattern - `^([0-9]{9,10}|[А-ЯЁЇIЄҐ]{2}\\d{6})$`
if doesn't match, return error 422 "string does not match pattern ..."
email has validation pattern - `^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[A-Z0-9-]+\\.)+[A-Z]{2,6}$`
if doesn't match, return error 422 "expected 'email' to be an email address"
validate documents
documents.type has one of the following values:
"BIRTH_CERTIFICATE"
"BIRTH_CERTIFICATE_FOREIGN"
"COMPLEMENTARY_PROTECTION_CERTIFICATE"
"NATIONAL_ID"
"PASSPORT"
"PERMANENT_RESIDENCE_PERMIT"
"REFUGEE_CERTIFICATE"
"TEMPORARY_CERTIFICATE"
"TEMPORARY_PASSPORT"
otherwise return error 422 "value is not allowed in enum"
documents.number has validation pattern according to documents.type
BIRTH_CERTIFICATE - `^((?![ЫЪЭЁыъэё@%&$^#`~:,.*|}{?!])[A-ZА-ЯҐЇІЄ0-9№\\/()-]){2,25}$`
COMPLEMENTARY_PROTECTION_CERTIFICATE - `^((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{6}$`
NATIONAL_ID - `^[0-9]{9}$`
PASSPORT - `^((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{6}$`
PERMANENT_RESIDENCE_PERMIT - `^(((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{4,6}|[0-9]{9}|((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{5}\\/[0-9]{5})$`
REFUGEE_CERTIFICATE - `^((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{6}$`
TEMPORARY_CERTIFICATE - `^(((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{4,6}|[0-9]{9}|((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{5}\\/[0-9]{5})$`
TEMPORARY_PASSPORT - `^((?![ЫЪЭЁыъэё@%&$^#`~:,.*|}{?!])[A-ZА-ЯҐЇІЄ0-9№\\/()-]){2,25}$`
validate documents.issued_at
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])))?)?$`
if doesn't match, return error 422 "expected 'issued_at' to be a valid ISO 8601 date"
validate phones
phones.type has one of the following values - "LAND_LINE", "MOBILE"
otherwise return error 422 "value is not allowed in enum"
phones.number has validation pattern - `^\\+38[0-9]{10}$`
if doesn't match, return error 422 "string does not match pattern ..."
...
position can not be changed
in case of failure, return error 422 "employee position can not be changed"
Start_date can not be changed
in case of failure, return error 422 "start_date doesn't match"
If specialities.speciality_officio:true, in this object value of speciality can not be changed (with several exceptions in the item b)
in case of failure, return error 422 "main speciality can not be changed"
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 |
---|---|---|
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” |
Response structure
Example:
Expand | ||
---|---|---|
| ||
|
HTTP status codes
HTTP status code | Message | What caused the error |
---|---|---|
200 | Response |
|
401 |
| User authorization error |
404 |
| |
409 |
| |
422 |
| 8. Validate request using JSON schema failed 8. Check that DRFO in Certificate details is equal to DRFO of the user that creates employee_request in Party failed |