Table of Contents |
---|
Мета
Надати можливість адміністратору НСЗУ/Дата стюарту (співробітник НСЗУ з відповідними скоупи) зберегти оновлення персональних даних персон, на основі отриманих від персон офіційних звернень в НСЗУ, які по факту є легальною авторизацією на зміну персональних даних пацієнтів.
Схема
...
Дизайн
Expand | ||
---|---|---|
| ||
Почати редагування, гляхом вибору 'Редагування' Ввести зміни Порівняння змін перед підписом |
Специфікація
Expand | ||
---|---|---|
| ||
|
...
Expand | ||
---|---|---|
| ||
|
Ключові положення
Процес ініціюється співробітником НСЗУ (тільки через адміністративну панель НСЗУ) з відповідними скоупами та ініціює передачу (за допомогою graphQL мутації) підписного контенту (signed_content)
. Це включає JSON з персональними даними, де id існуючої персони та no ключів та параметрів методів аутентифікації.
...
Процес є синхронним. Якщо всі валідації пройдено, синхронний процес по оновленню персони починається з обробки запиту.
Скоупи та ролі
Назва скоупу | Ролі | Опис |
---|---|---|
Новий
|
| Скоуп для створеня запису |
Пов'язані статті
# | Шлях | Посилання та стаття |
---|---|---|
1 | E-Health > Persons > Ідентифіковані персони > Person Requests Technical Requirements | IL.Create/Update person request (w/o declaration) |
2 | Public. Medical Service Provider Integration Layer > Person Requests |
Авторизація
Перевірити валідність токену доступу
Повернути помилку 401 в разі неуспішної валідації
Перевірити скоупи користувача
person_request:write_nhs
Повернути помилку 403 в разі невалідних скоупів
Цифровий підпис
Декодувати контент: що зашивровано в цифровому підписі.
Використати цифровий підпис запиту. Метод перевіряє цифровий підпис та повертає результат.
Див сервіс specification
Перевірити ДРФО
Перевірити, що DRFO в деталях сертифікату присутній в запиті
Перевірити, що DRFO в деталях сертифікату відповідає DRFO для Party
Отримати party.tax_id використовуючи employee_id в даних персони
Порівняти DRFO в сертифікаті з party.tax_id
Змінити DRFO та TAX_ID на великі літери
Порівняти DRFO та TAX_ID на літери кирилиці
Змінити DRFO на кирилицю та перевірити на коректність
В разі неуспішних валідацій - віддати помилку 422
Співвідношення латиниці та кирилиці
|
Перевірка підписного контенту
Отримати глобальні параметри
Для подальших перевірок, викликати Global parameters для отримання:
no_self_auth_age
cURL приклад
Code Block |
---|
curl -X GET \ {:host}/api/global_parameters |
Валідації | |
---|---|
1 | Перевірка на одночасні корегування даних (нове)Якщо дані персони не змінювались іншими користувачами (MSP, NHS) в системі НСЗУ. Шляхом попереднього збереження
|
2 | Перевірити статус персони в базі даних та інструментах дедублікації
|
3 | Перевірити “patient_signed” признак.Дане поле не повинно передаватися. І тому BE не повинен здійснювати пошук його в DB |
4 | Перевірити “process_disclosure_data_consent” признак.Дане поле не повинно передаватися. І тому BE не повинен здійснювати пошук його в DB |
5 | Перевірити довірену особу
Перевірити вік довіреної персони >= prm.global_parameters.no_self_auth_age:
перевірити наявність секретного слова:
|
6 | Перевірити "tax_id"
|
7 | Перевірити признак "no_tax_id"
|
8 | Перевірити документи персони
|
9 | Перевірити поля запиту NHS
|
Схема валідації JSON
Перелік додаткових вимог для панелі адміністрування НСЗУ
Основною приймається дана схема JSON Schema validator (https://e-health-ua.atlassian.net/wiki/spaces/EH/pages/589266986#Update-person-request ). Окрім:
...
Expand | ||||
---|---|---|---|---|
| ||||
|
Виконання
Оновлення пошуку person_requests в IL.person_requests
Пошук запиту персони в IL.person_requests для попередження випадків одночасного оновлення даних:
Code Block |
---|
WHERE IL.person_requests.person_id = :($.person.id) AND IL.person_requests.status IN ('NEW', 'APPROVED') |
Відмінити person_requests records в IL.person_requests
Змінити статус всіх знайдених запитів персони:
Code Block |
---|
SET IL.person_requests.status = 'CANCELED' WHERE IL.person_requests.id IN (:LIST of Search results) |
Створити новий запис в IL.person_requests
Додати
[new record]
доIL.person_requests
:Встановити
status = 'SIGNED
'.Встановити id персони,
person_id = $.person.id
Встановити
inserted_at= now()
(отримати поточні дату та час)Встановити
inserted_by
- user_id (отримати користувача з токену)Встановити
channel
,IL.person_request.(newrecord).channel = 'NHS'
Встановити
printout_form
= null
Зберегти signed_content
у відповідному бакеті Person_request
Оновити персону в MPI.persons
Оновити дані персони в
MPI.persons.(id = $.person.id)
з вказаними новими даними$
(включно два$.nhsRequestNumber
та$.nhsRequestComment
).Встановити
updated_at
- now() (Отримати поточну дату та час)Встановити
updated_by
- user_id (Отримати користувача з токену)Створити відповідний запис на основі вказаних нових даних
$
(включно два$.nhsRequestNumber
та$.nhsRequestComment
) в:MPI.person_documents
MPI.person_phones
MPI.person_addresses
Направити персону на верифікацію
Створити або оновити існуючий запис в таблиці person_verifications для персони у відповідності до логікив секції нижче. Також, встановити:
updated_at = now()
updated_by = user uuid
inserted_at = now() (для нових записів)
inserted_by = user uuid (для нових записів)
Мануальна верифікація NHS
Встановити верифіцію персони у відповідності до логіки https://e-health-ua.atlassian.net/wiki/spaces/DRACS/pages/17249206422/IL.Sign+person+request+modified#Manual-NHS-verification
Верифікація по реєстру DRFO
Встановити верифіцію персони у відповідності до логіки https://e-health-ua.atlassian.net/wiki/spaces/DRACS/pages/17249206422/IL.Sign+person+request+modified#DRFO-registry-verification
Верифікація по актам смерті з реєстру DRACS
Встановити верифіцію персони у відповідності до логіки https://e-health-ua.atlassian.net/wiki/spaces/DRACS/pages/17249206422/IL.Sign+person+request+modified#DRACS-death-acts-registry-verification
Розрахувати кумулятивний статус верифікації
Розрахувати кумулятивний статус верифікації у відповідності до логіки https://e-health-ua.atlassian.net/wiki/spaces/DRACS/pages/17249206422/IL.Sign+person+request+modified#Calculate-cumulative-verification-status