Table of Contents |
---|
Ціль
Даний веб-сервіс дозволяє завершити активність за умови визначення впливу лікування на рацієнта (результати активності)
Ключові положення
Статус може мінятися співробітником, у якого є дозвіл на редагування наданий пацієнтом на план лікування.
Завершення активності виконується без електронного підпису.
Статус активності міняється в асинхронний спосіб. Результом задачі має бути посилання на деталі активності в плані лікування.
Специфікація
Авторизація
Перевірити валідність токену доступу
Повернути (401, 'unauthorized'), якщо валідація неуспішна
Перевірити, що по токену не закінчився строк дії
у випадку помилки - повернути код (401, 'unauthorized')
Перевірити список скоупів користувача на можливість виконання даної дії (scope = 'care_plan:read')
Повернути (403, 'invalid scopes') в разі невалідних скоупів/scope(s)
Перевірити юридичну особу
Отримати client_id з токену
Перевірити статус юридичної особи на відповідність ACTIVE
В разі помилки - повернути код 409 ('Legal entity must be ACTIVE')
Перевірити тип юридичної особи в конфігураційних параметрах me_allowed_transactions_le_types
В разі помилки - повернути код 409 ('Action is not allowed for the legal entity type')
Перевірити користувача
Отримати ідентифікатор user_id з токену.
Перевірити, що користувач є активним, погоджениим співробітником, який:
має активний дозвіл від пацієнта на редагування плану лікування (ідентифікатор плану лікування з URL)
повернути 403 ('Access denied') у випадку, коли співробітник не має права на редагування
Перевірити консистентність даних
Впевнитись, що наданий план лікування пов'язаний з пацієнтом (з URL)
Повернути 404 (not found) у випадку помилки
Перевірити зміну статусу
Отримати активність по id
Перевірити activity.detail.status: статус активності повинен змінюватися у відповідності до activity status model.
Повернути 409 (Invalid activity status) у випадку помилки
Перевірити причини статусу
Перевірити заповненість даних в полі $.detail.status_reason
Перевірити, що тип поля відповідає концепції кодування
Перевірити, що концепція кодування відповідає значенням довідника
eHealth/care_plan_activity_complete_reasons
Перевірити значення на належність у довіднику, вказаному вище
Перевірити пов'язані сутності
Виділити запит рецепту (medication request requests) в статусах NEW,SIGNED по $.medication_request_requests.data.[].activity.value та $.data_person_id.
Додатково відфільтрований список запитів рецептів (MRR): вибрати ті, які не мають рецептів (MR) або мають рецепти (MR) в статусі ACTIVE
Повернути у випадку помилки код 409 (Unable to complete activity with NEW Medication Request requests or ACTIVE Medication Requests)
Перевірити вихідні дані
Перевірити заповненість значення в полі $.outcome_codeable_concept
Перевірити, що тип поля відповідає концепції кодування
Перевірити кожне значення в масиві:
відповідає значенням довідника
eHealth/care_plan_activity_outcomes
є в довіднику
Логіка сервісу
Оновити статус активності на завершена (completed) (також оновити updated_at, updated_by)
Встановити outcome_codeable_concept