ЕСОЗ - публічна документація

Create Medical program provision_UA

Ціль

Даний веб-сервіс дозволяє створити забезпечення по медичній программі в частині відділень юридичної особи користувача. В результаті це визначає, які відділення працюють з програмою в рамках контракту з юридичною особою.

Основні положення

  1. Це метод REST.

  2. Тільки автифіковані та авторизовані власники юридичних осіб з відповідними скоупами можуть вказани відділення по медичній програмі.

  3. Запит повинен бути відписаний цифровим підписом.

  4. Користувач може додати кілька відділень відразу, які працюють з медичною програмою.

Специфікація

Apiary

Авторизація

  • Перевірити валідність токену доступу

    • в разі неуспішної валідації - повернути помилку 401 “Invalid access token”

  • Перевірити, що строк дії токену не сплинув

    • в разі помилки - повернути 401 “Invalid access token”

  • Перевірити скоупи користувача на можливість виконання даної дії (scope = 'medical_program_provision:write')

    • повернути помилку 403 “Your scope does not allow to access this resource. Missing allowances: medical_program_provision:write” в разі невалідних скоупів

Перевірити цифровий підпис

  • Перевірити, що запит підписано

    • в разі помилки - повернути 422 “document must be signed by 1 signer but contains 0 signatures”

  • Перевірити, що цифровий підпис валідний та дійсний

  • Перевірити, що цифровий підпис належить користувачу

    • Перевірити, що ЕДРПОУ та цифровий підпис по party.tax_id співпадають

      • в разі помилки - повернути 409 “Signer DRFO doesn't match with requester tax_id

Перевірити юридичну особу

  • Отримати client_id з токену.

  • Перевірити скоупи користувача на можливість виконання даної дії (scope = 'medical_program_provision:write')

    • в разі помилки - повернути 403 “Your scope does not allow to access this resource. Missing allowances: medical_program_provision:write”

  • Перевірити статус юридичної особи (status = ACTIVE, SUSPENDED)

    • в разі помилки - повернути 422 “Legal entity is not active”

Перевірити запит

  1. Перевірити contract_number:

    1. Отримати contract_number для договорів, де:

      1. type = REIMBURSEMENT

      2. is_active=true

      3. status = VERIFIED 

      4. contractor_legal_entity = client_id (from token)

        • в разі помилки - повернути 422 “Your legal entity has no reimbursement contract with number <contract_number> or it is not active”

  2. Перевірити medical_program_id:

    1. Перевірити, що програма існує та активна

      • в разі помилки - повернути 422 “Medical program not found”

    2. Перевірити, що медична програма включена в договір

      • в разі помилки - повернути 422 “Medical program does not belong to contract”

  3. Перевірити divisions :

    1. Перевірити, що відсутні дублі відділень в масиві

      • в разі помилки - повернути 422 “Division list has duplicated identifiers in the request

    2. Для кожного відділення в масиві:

      1. Перевірити, що відділення існує та активне (is_active = true та status = ACTIVE):

        • в разі помилки - повернути422 “Division with id <id> does not exist or not active”

      2. якщо параметр чарту DISPENSE_DIVISION_DLS_VERIFY включено, то перевірити, що від валідований по ДЛС (dls_verified=true)

        • в разі помилки - повернути422 “Division with id <id> is not verified in DLS”

      3. Перевірити, що відділення належить юридичній особі (client_id from token)

        • в разі помилки - повернути 422 “Division with id <id> does not belong to legal entity”

      4. Перевірити, що відсутні активні записи для того ж відділення, по тій же програмі та по тому ж договору

        • в разі помилки - повернути 422 “The medical program has already been provided by division with id <id> according to the contract“

Сервісна логіка

  1. Зберегти підписний контент до сховища даних. Див. більше детальну інформацію Bucket structure.

  2. Зберегти записи до бази даних у відповідності до Data model

ЕСОЗ - публічна документація