ЕСОЗ - публічна документація
AR_[NEW] (GraphQl) Create Program device_UA
Мета
Даний веб-сервіс WS дозволяє створити учасника медичної програми з типом медичного виробу.
Ключові параметри
Це метод graphQl, який використовується тільки в адміністративній панелі.
Тільки автентифіковані та авторизовані співробітники NHS з відповідним скоупом можуть створити учасника медичної програми по медвиробу.
Специфікація
Авторизація
Перевірити валідність токену доступу
повернути (401, 'Invalid access token') в разі неуспішних валідацій
Перевірити, що токен дійсний
в разі помилки - повернути (401, 'Invalid access token')
Перевірити скоупи користувача на можливість виконання даної дії (скоуп = 'program_device:write')
Повернути (403, 'Your scope does not allow to access this resource. Missing allowances: program_device:write') в разі невалідних скоупів
Перевірити юридичну особу
Отримати client_id з токену.
Перевірити статус юридичної особи (status = ACTIVE)
в разі помилки - повернути 409 ('client_id refers to legal entity that is not active')
Перевірити тип клієнта (type = NHS)
в разі помилки - повернути 403 ('You don't have permission to access this resource')
Перевірити запит
Перевірити вказаний медичний виріб в
$.deviceDefinitionId
Перевірити, що медичний виріб по id існує в таблиці device_definitions (PRM DB) та активний (is_active = true)
в разі помилки - повернути 422 ('Device definition not found')
Перевірити медичну програму, що вказана в
$.medicalProgramId
Перевірити, що медична програма по id існує в таблиці medical_programs (PRM DB) та активна (is_active = true)
в разі помилки - повернути 422 ('Medical program not found')
Перевірити, що медична програма має тип DEVICE
в разі помилки - повернути 422 ('Medical program type should be DEVICE')
Перевірити деталі реімбурсації, вказаної в
$.reimbursement
якщо
$.reimbursement.type = FIXED
, то поле$.reimbursement.reimbursementAmount
обов'язковеякщо
$.reimbursement.type = PERCENTAGE
, то поле$.reimbursement.percentageDiscount
обов'язковев разі помилки - повернути 422 ('can't be blank')
якщо вказано
$.reimbursement.percentageDiscount
, перевірити, що її значення в рангу від 0 до 100в разі помилки - повернути 422 ('expected the value to be <= 100')
Перевірити по медвиробу по програмі вказано дату початку в
$.startDate
якщо
$.endDate
вказано, перевірити по медвиробу по програмі, що дата початку меньше за дату закінченняв разі помилки - повернути 422 ('must be earlier than the end date')
Сервісна логіка
Створити сутність медвиробу по програмі в таблиці program_devices в PRM DB зі значеннями звхідних параметрів. Також, встановити значення:
id = autogenerate uuid
is_active = true
inserted_at = now()
updated_at = now()
inserted_by = user_id з токену
updated_by = user_id з токену
Відобразити відповідь у відповідності до специфікації.
ЕСОЗ - публічна документація