Ціль
Даний веб-сервіс (WS) дозволяє створити налаштування бізнес-правила з адміністративної панелі. Налаштування бізнес-правила буде використовуватися, як додаткова валідація при створенні відповідного медичного запису.
Основні положення
Це метод graphQl, який використовується тільки в адміністративній панелі.
Тільки автентифіковані та авторизовані співробітники НСЗУ з відповідним скоупом може створювати налаштування бізнес-правил.
Налаштування бізнес-правил повинні бути підписані цифровим підписом (DS).
Специфікація
""" Input for `createRuleEngineRule` mutation. User must have a scope **rule_engine_rule:write** """ input CreateRuleEngineRuleInput { "Signed data to create rule engine set" signedContent: SignedContent! } """ Return type for `createRuleEngineRule` mutation. """ type CreateRuleEngineRulePayload { "Created `RuleEngineRule`." ruleEngineRule: RuleEngineRule }
Авторизація
Перевірити валідність токену доступу
в разі помилки - повернути 401 (“Invalid access token”) про неуспішність валідації
Перевірити, що токен дійсний
в разі помилки - повернути 401 (“Invalid access token”)
Перевірити скоупи користувача на можливість виконання даної дії (scope = 'rule_engine_rule:write')
повернути 403 (“Your scope does not allow to access this resource. Missing allowances: rule_engine_rule:write”) в разі невалідних скоупів
Перевірити юридичну особу
Отримати client_id з токену.
Перевірити скоупи клієнта на можливість виконання даної дії (scope = 'rule_engine_rule:write')
в разі помилки - повернути 403 (“Your scope does not allow to access this resource. Missing allowances: rule_engine_rule:write”)
Перевірити статус юридичної особи (status = ACTIVE)
в разі помилки - повернути 409 ('client_id посилається на юридичну особу, яка не активна')
Перевірити цифровий підпис
Перевірити, що запит підписано
в разі помилки - повернути 422 (“document must be signed by 1 signer but contains 0 signatures”)
Перевірити, що цифровий підпис (DS) валідний та дійсний
Перевірити, що цифровий підпис (DS) належить користувачу
Перевірити, що EDRPOU з DS та legal_entities.edrpou для client_id відповідають
в разі помилки - повернути 422 (“Signer edrpou doesn’t match with requester edrpou”)
Перевірити, що DRFO з DS та party.tax_id співпадають
в разі помилки - повернути 409 (“Signer DRFO doesn't match with requester tax_id“)
Перевірити запит
Перевірити
name
,code
таvalue
блоки вказанов разі помилки - повернути 422 ('очікувана властивість <property> не була вказана')
Перевірити, що налаштування бізнес-правил з
code
унікальна (отримати активну rule_engine_rule з тим самим code.system та code.value)в разі помилки - повернути 409 ("Rule engine rule with such code and system already exists")
Сервісна логіка
Зберегти підписаний контент до сховища даних
Зберегти дані до колекції rule_engine_rules (Mongo DB) у відповідності до https://e-health-ua.atlassian.net/wiki/spaces/PCR/pages/16954327098