Table of Contents |
---|
Авторизація
Перевірити валідність токену доступу
в разі помилки повернути 401
Перевірити скоупи користувача (declaration_request:write) на можливість виконання даної дії
в разі помилки повернути 403 - заборонено
Перевірити запит з використанням схеми JSON
Expand | ||
---|---|---|
|
Перевірити тип юридичної особи
Перевірити юридичну особу по токену: legal_entities.type повинен відповідати DECLARATION_REQUEST_LEGAL_ENTITY_TYPES("MSP,PRIMARY_CARE,MSP_PHARMACY") та legal_entities.status =='active'
Перевірити лікаря
...
Отримати дані співробітника
Викликати Get employee details
...
Отримати doctor_id та division_id з токену
Перевірити персону
перевірити person_id UUID
в разі помилки повернути 422
здійснити пошук персони по person_id in MPI
в разі помилки повернути 404, "Such person doesn't exist"
перевірити person.auth_method != NA
в разі помилки повернути 422, "Person must have authentication method"
перевірити person.status = ‘active’ та is_active =true
в разі помилки повернути 404, "Such person doesn't exist"
Перевірити статус верифікації персони
перевірити, що verification_status верифікації персони не дорівнює NOT_VERIFIED.
in case of error return 409, "Patient is not verified"
Перевірити authorize_with
Персона може передати id його auth_method, який потрібен для підтвердження при запиті на створення декларації. Потрібний метод автентифікації може бути отриманий при виклику Get person's auth methods
...
Якщо запит на персону не містить дане поле, то вибрати той метод, який повертається з mpi як person's default method
Перевірити первинну декларацію
перевірити, що первинна декларація існує та в статусі ‘active’
в разі помилки - повернути 404 (‘Active parent declaration was not found’)
перевірити, що первинна декларація належить вказаній персоні (person_id первинної декларації та person_id з запиту однакові)
в разі помилки - повернути 422 (‘Parent declaration does not belong to this person’)
перевірити, що юридична особа первинної декларації та поточна юридична особа знаходяться в процесі реорганізації Приєднання, Злиття, Виділ, Поділ (запит: select * from related_legal_entities where is_active=true and merged_from_id=parent_declaration_id.legal_entity_id and merged_to_id=employee_id.legal_entity_id and type in (‘ACCESSION’, ‘MERGING’, ‘DIVIDING’, ‘SEPARATING’); повертає хоча б один запис)
в разі помилки - повернути 422 (‘Legal entities of parent declaration and current are not in reorganization process’)
перевірити, що party_id співробітника з первинної декларації та party_id поточного співробітника однакові
в разі помилки - повернути 422 (‘Employee of parent declaration and current employee are not the same’)
Дане поле опційне та встановлюється для il.declaration_reques.parent_declaration_id.
Якщо parent_declaration_id передано в запиті, перевірка authorize_with та обробка не виконуються, створений запит на декларацію буде оброблено без пацієнта.
Отримати глобальні параметри
Викликати глобальні параметри для отримання наступних сутностей:
ADULT_AGE
DECLARATION_TERM
no_self_auth_ag
Розрахувати вік пацієнта
Розрахувати вік пацієнта
|
Перевірити, що спеціальність лікаря відповідає вимогам стосовно віку пацієнта
Отримати speciality_officio лікаря (об'єкт спеціальність, де speciality_officio == true)
Перевірити вимоги у відповідності до глобальних параметрів
Спеціальність посадової особи | Вік |
---|---|
FAMILY DOCTOR | Обмеження по віку відсутні |
THERAPIST | Більше або дорівнює $.data.adult_age |
PEDIATRICIAN | Меньше ніж $.data.adult_age |
Перевірити довірену особу
Якщо вік персони < prm.global_parameters.no_self_auth_age то перевірити наявність confidant_person
в разі помилки повернути 422 - повідомлення "Confidant person is mandatory for children"
Обробка
Пошук запитів на декларацію, що очікують на розгляд
Здійснити пошук декларацій для IL_DB.declaration_requests для того, щоб виключити можливість дублювання запитів:
...
|
Розрахувати дату закінчення/початку декларацій
Декларація
Дата початку:
|
...
|
Зберегти запит на декларацію
Додати запис до IL.declaration_request в статусі 'NEW'
Згенерувати посилання(URL) для завантаження
Якщо auth_method_requests.auth_method_current = OFFLINE
...
Кожне посилання генерується для документу на одну сторінку в форматі jpeg. Документ повинен бути не більше ніж 10MB.
Встановити auth_method_current
Отримати parent_declaration_id з il.declaration_requests.parent_declaration_id.
Якщо parent_declaration_id не вказано, встановити за-замовчуванням метод автентифікації персони на IL.auth_method_request.auth_method_current - використовувати function в mpi, що повертає метод автентифікації за-замовчуванням.
Якщо auth_method_current = NA - повернути помилку "person authentication method is undefined"
.
Якщо parent_declaration_id вказано, встановити auth_method_current = NA (запит опрацьовується без участі пацієнта).
Згенерувати код верифікації
Якщо auth_method_requests.auth_method_current = OTP
...
|
Згенерувати читабельний номер декларації
Використати algorithm для генерації declaration_number
Номер декларації мовинен містити 4 серійні символи та 8 числові символи та виглядати як XXXX-12H4-245D
Додати поле до ops.declarations та il.declaration_requests - declaration_number
Додати declaration_number до друкованої форми
...