ЕСОЗ - публічна документація
RC_Create declaration request v3 (modified - UA)
Авторизація
Перевірити валідність токену доступу
в разі помилки повернути 401
Перевірити скоупи користувача (declaration_request:write) на можливість виконання даної дії
в разі помилки повернути 403 - заборонено
Перевірити запит з використанням схеми JSON
Перевірити тип юридичної особи
Перевірити юридичну особу по токену: legal_entities.type повинен відповідати DECLARATION_REQUEST_LEGAL_ENTITY_TYPES("MSP,PRIMARY_CARE,MSP_PHARMACY") та legal_entities.status =='active'
Перевірити лікаря
Отримати дані співробітника
Викликати Get employee details
Перевірити відповідь $.data.employee_type == DOCTOR
Отримати 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
перевірити, що auth_method.id це UUID
в разі помилки повернути 422
знайти метод автентифікації в MPI.person_authentication_method
в разі помилки повернути 422, "such authentication method doesn't exist"
знайти метод автентифікації даної персони, де MPI.person_authentication_method.person_id = $.person.id
в разі помилки повернути 422, "such authentication method does not belong to this person"
Перевірити, що auth_method.type = NA
в разі помилки повернути 422, "Сannot be confirmed by a method with type= NA. Use a different method."
Перевірити, що даний метод активний ( authentication_method.ended_at > now() and is_active = true)
Дане поле опційне та встановити для il.declaration_reques.authentication_method_current.
Якщо запит на персону не містить дане поле, то вибрати той метод, який повертається з 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
Розрахувати вік пацієнта
Розрахувати вік пацієнта
age = MONTHS_BETWEEN (now(), $.mpi.person.birth_date) / 12 |
Перевірити, що спеціальність лікаря відповідає вимогам стосовно віку пацієнта
Отримати 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 для того, щоб виключити можливість дублювання запитів:
where IL.Declaration_request.mpi_id = :($.person.id) and status in ('NEW' or 'APPROVED)
Відмінити запити на декларацію.
Змінити статус всі ризикові (фрод) декларації:
SET IL_DB.declaration_requests.status = 'CANCELED'
WHERE IL_DB.declaration_requests.id IN (:LIST)
|
Розрахувати дату закінчення/початку декларацій
Декларація
Дата початку:
Дата закінчення:
Зберегти запит на декларацію
Додати запис до IL.declaration_request в статусі 'NEW'
Згенерувати посилання(URL) для завантаження
Якщо auth_method_requests.auth_method_current = OFFLINE
URL для person.documents
В залежності від сховища даних згенерувати перелік посилань signed для завантаення скан копій документів.
Підписані URLs будуть дійсні тільки деякий період (конфігуруємий `SECRETS_TTL`). Якщо строк дії закінчиться - новий запит на декларацію повинен бути створений.
Кожне посилання генерується для документу на одну сторінку в форматі 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
Викликати Initialize OTP для генерації одноразового паролю та направити його для випадків, коли auth_method_requests.auth_method_current = OTP.
Приклад cURL
Згенерувати читабельний номер декларації
Використати algorithm для генерації declaration_number
Номер декларації мовинен містити 4 серійні символи та 8 числові символи та виглядати як XXXX-12H4-245D
Додати поле до ops.declarations та il.declaration_requests - declaration_number
Додати declaration_number до друкованої форми
Перевірити на унікальність читабельного номеру декларації
згенерувати declaration_number
здійснити пошук declaration_number в declaration_requests.declaration_number
якщо знайдено = перейти до 'generate declaration_number'
в іншому випадку зберегти declaration_number до declaration_request
ЕСОЗ - публічна документація