Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
maxLevel3

...

  1. Будь-який запит до медичних даних пацієнта повинен реєструватися у системі e-Health, із зазначенням дати та часу запиту, користувача та ЗОЗ від імені яких виконано запит, контексту запиту.
  2. Можливість виконання будь-якої дії користувачем, надання доступу до ресурсу чи даних, регулюється сукупністю:
    1. ролей та скоупів, зазначених для ролі (Scopes model#Rolesscopes[AH] Scopes model v.2 [04.09.24]#Rolesscopes)
    2. конфігурації, яка визначає набір даних, які дозволено відображати у Patient Summary
    3. поточних значень параметрів користувача, ЗОЗ, та атрибутів сутностей, до яких виконується запит згідно правилам доступу за атрибутами атрибутами 
    4. обмежень, та валідацій, діючих на рівні кожного API
    5. (підлягяє уточненню та реалізації у наступних етапах проекту) обмежень на доступ до інформації на підставі:
      1. законодавства (наприклад, mental diseases)
      2. рішення пацієнта закрити доступ до безумовного доступу до даних (Patient Summary) та/або до конкретних епізодів (що також може впливати на склад Patient Summary)

Anchor
Правила
Правила
Правила доступу за атрибутами

  1. Завжди: ЗОЗ, від імені якого виконується запит, повинне бути активним
  2. Завжди: Користувач, від імені якого виконується запит, повинен бути активним
  3. Завжди: У користувача, повинен бути хоча б один активний співробітник у ЗОЗ
  4. Якщо наведені вище правила виконуються, доступ визначається наступним чином:

...

1 - декларація вважається активною, коли (question)коли її стан дорівнює Active

2 - ЗОЗ визначається в залежності від сутності, для якої перевіряються права доступу

3 - Ланка, яка створила запис визначається в залежності від сутності:

...

4 - Направлення вважається використаним, коли воно знаходиться у стані  "Використане" (In UseQueue)

5 - Для дій можливе надання доступу на конкретну дію чи перелік дій, наприклад для направлень у разі, якщо вони підписані лікарем іншої ланки, або іншого ЗОЗ, можливе виконання тільки дій використання, відміни використання та закриття направлення через процес надання зворотнього зв'язку за направленням (закриття епізоду, який посилається на направлення)

...

Ланка визначається виходячи зі спеціальності співробітника 

Code Block
languagejs
PRM.employee.speciality ->> 'speciality'

із типу медичного закладу

Маємо наступні ланки (рівні) медичних послуг:

Ланка
Спеціальності
Тип медичного закладу
1Первинна медична допомога
  • Педіатр
  • Терапевт
  • Сімейний лікар
    PRIMARY_CARE
    2Вторинна (спеціалізована) медична допомога 
    TBD
    OUTPATIENT
    3

    Третинна (високоспеціалізована) медична допомога

    TBD
    4Паліативна допомогаTBD
    5Медична реабілітаціяTBD

    Для реалізації даного правила необхідно визначити відповідні атрибути користувача (Consumer), що звертається до ресурсу та відповідні атрибути самого ресурсу (Resource)

    ...

    Токен містить наступну інформацію

    AttributeDescription
    user_idID користувача в системі
    client_idID клієнта, через який користувач звертається до ресурсу
    client_typeТип клієнта (ЗОЗ, NHS Admin etc)


    1. Необхідно визначити пов'язаний party_id з даним user_id за допомогою party_users

    ...

    3. Визначити ланки, наявні в даного користувача виходячи з таблиці, що наведена вище

    Користувач має доступ до ресурсу через направлення

    ...

    Визначення ланки для ресурсу (Resource)

    В даному правилі та контексті маємо на увазі наступні ресурси

    ResourceRouteRelations
    episodes

    GET /api/patients/:patient_id/episodes/:id

    PATCH /api/patients/:patient_id/episodes/:id

    PATCH /api/patients/:patient_id/episodes/:id/actions/close

    PATCH /api/patients/:patient_id/episodes/:id/actions/cancel


    encountersGET /api/patients/:patient_id/encounters/:id$.episode.encounters[:id].episode
    conditionsGET /api/patients/:patient_id/conditions/:id$.conditions[:id].context
    observationsGET /api/patients/:patient_id/observations/:id$.observations[:id].context
    immunizationsGET /api/patients/:patient_id/immunizations/:id$.episode.encounters[<immunizations condition>].episode
    allergy_intolerancesGET /api/patients/:patient_id/allergy_intolerances/:id$.episode.encounters[<allergy_intolerances condition>].episode

    Дані ресурси мають наступну ієрархію:

    Code Block
    languagebash
    -- patient
    	-- episodes
    		-- encounters
    			-- conditions
    			-- observations
    			-- immunizations
    			-- allergy_intolerances

    Для визначення ланки співробітника, що створив ресурс - необхідно визначити по ієрархії епізод, до якого належить ресурс, взяти $.episodes[:id].care_manager та визначити його ланку.

    Технічний опис правил ABAC наведено на сторінці  ABAC rules.

    Питання

    QuestionAnswer

    Чи є обмеження, за яких пацієнт не зможе виключити епізод з доступних для перегляду будь-ким (наприклад, соціально-небезпечні хвороби)?

    Так

    Яким чином необхідно подовжувати права доступу, які вже не дійсні?

    Оскільки обрано модель регулювання доступів ABAC, права доступу припиняють дію одразу ж, як перестають діяти умови, які ці права надавали.Яким чином відокремити лікарів первинної ланки від лікарів вторинної ланки для надання доступів (працюють у одному чи різних ЗОЗ)? 

    Ланка лікаря визначається виходячи з спеціальності за посадою на Employee

    PRM.employee.speciality ->> 'speciality'
    Яким чином надавати права доступу, якщо пацієнт сам не в змозі це зробити? Як визначати ланку для направлення?