Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Ціль

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

Ключові моменти

  1. Даний сервіс на graphQl використовується лише з панелі адміністрування.

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

  3. Можуть бути додані такі види елементів: послуги, групи послуг, коди словників.

  4. Елемент слід додати з накладанням цифрового підпису.

  5. Доданий елемент повинен бути унікальним, в тому числі всі включні елементи у заборонених групах.

  6. Один або кілька елементів можна додати тільки один раз.

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

Code Block
languagegraphql
"""
Input for `createForbiddenGroupItems` mutation.
User must have a scope **forbidden_group:write**
"""
input CreateForbiddenGroupItemsInput{
    "Forbidden group identifier."
    forbiddenGroupId: ID!
    "List of service identifiers."
    serviceIds: [ID!]
    "List of service group identifiers."
    serviceGroupIds: [ID!]
    "List of dictionary codes."
    codes:[CreateForbiddenGroupCodeInput!]
}

"""
Input for `codes` in `createForbiddenGroupItems` mutation.
"""
input CreateForbiddenGroupCodeInput {
    "The name of the dictionary. Allowed names: eHealth/ICD10AM/condition_codes, eHealth/ICPC2/actions, eHealth/ICPC2/condition_codes, eHealth/ICPC2/reasons."
    system: String!
    "The value from dictionary. It should be present in the dictionary specified in `system` property"
    code: String!
}

"""
Return type for `createForbiddenGroupItems` mutation.
"""
type CreateForbiddenGroupItemsPayload {
  "Updaed `ForbiddenGroup`."
  forbiddenGroup: ForbiddenGroup
}

Валідації

При мутації даних CreateForbiddenGroupItemsMutation використовуються такі перевірки.

Авторизація

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

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

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

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

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

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

Перевірити юридичну організацію

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

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

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

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

    • у випадку помилки - повернути 409 ('client_id refers to legal entity that is not active')

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

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

    • у випадку помилки - повернути 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“)

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

  1. Перевірити, що forbidden_group_id вказано в запиті

...

  • у випадку помилки - повернути 422 ('required property creation_reason was not present')

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

Наступна логіка використовується при мутації даних CreateForbiddenGroupItemsMutation

...