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

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

Номер тесту

Опис

Умови

Очікуваний результат


Статус

1.Авторизація засобами kong API gateway

МВЗ-1-1

Запит на висновок - невірна авторизація

POST /patients/composition
відсутній скоуп composition:create

Повернуто помилку згідно конфігурації kong api gateway

PASSED

Див. додаток 8

МВЗ-1-2

Підписання висновку - невірна авторизація

PATCH /patients/composition/{id}

відсутній скоуп composition:sign

Повернуто помилку згідно конфігурації kong api gateway

PASSED

Див. додаток 9

МВЗ-1-3

Отримання висновку- невірна авторизація

GET /patients/{patientId}/episode/{episodeId}/encounter/{encounterId}/composition/{compositionId}

відсутній скоуп заголовок composition:get

Повернуто помилку згідно конфігурації kong api gateway

PASSED

Див. додаток 10

2. Робота з асинхронними задачами

МВЗ-2-1

Отримання статусу асинхронної задачі

GET /patient/composition/jobs/{asyncJobId}

Успішно отримано поточний статус, відповідь згідно специфікації

PASSED

Див. додаток 1

МВЗ-2-2

Отримання статусу асинхронної задачі, що закінчилась помилкою

GET /patient/composition/jobs/{asyncJobId}

Успішно отримано поточний статус, відповідь згідно специфікації

PASSED

Див. додаток 2

3. Пошук і отримання медвисновків

МВЗ-3-1

Пошук медвисновків - загальна логіка

GET /patients/{patientId}/composition

Знайдені висновки повертаються у відповідь згідно специфікації

PASSED

Див додаток 3

МВЗ-3-2

Пошук медвисновків - пейджинація

GET/patients/{patientId}/composition?offset=&limit=

Надано параметри
offset
limit

Паджинація працює згідно offset/limit

PASSED

Див додаток 4

МВЗ-3-3

Отримання існуючого медвисновку невідповідним користувачем

GET /patients/{patientId}/episode/{episodeId}/encounter/{encounterId}/composition/{compositionId}

Висновок не отримано
Перевірка виконується засобами ABAC згідно сконфігурованих правил для Composition

PASSED

Див додаток 7

МВЗ-3-4

Успішне отримання мед висновку

GET /patients/{patientId}/encounter/{encounterId}/composition/{compositionId}

Висновок успішно отримано згідно специфікації

PASSED
Див додаток 5

4. Перевірка доступу до даних при створенні запиту на медвисновок (згідно процесу https://cawemo.com/share/80bb90b6-efe5-41c7-ba17-3d6dff789dc9)

МВЗ-4-1

Створення запиту на висновок невідповідним автором (EGW2)

POST /patients/composition
+
значення Composition.author не віповідає Encounter.care_manager

Висновок не створено

повертається помилка 401

PASSED

Див. додаток 6

МВЗ-4-2

Створення запиту на висновнок з невідповідним типом діагнозу (EGW3)

POST /patients/composition
+
значення Encounter.diagnoses не відповідає сконфігурованим

Висновок не створено

повертається помилка 400

PASSED

Task ID: bed55d59-437e-48fc-8695-c736ae9e6757

{"attempts":1,"error":{"code":1036,"description":"PRIMARY diagnosis code not allowed","details":{}}}

МВЗ-4-3

Створення запиту на висновнок з невідповідним типом екаунтеру (EGW4)

POST /patients/composition
+
значення Encounter.type не відповідає сконфігурованим

Висновок не створено

повертається помилка 400

PASSED

Task ID: 97bacf37-32e9-496d-ab99-f2b9aa355ddc

{"attempts":1,"error":{"code":1038,"description":"Encounter type is not allowed for composition type","details":{}}}

МВЗ-4-4

Створення запиту на висновнок з невідповідною кваліфікацією ліккаря(EGW5)

POST /patients/composition
+
значення Employee.doctor.specialities не відповідає сконфігурованим

Висновок не створено

повертається помилка 400

PASSED

Task id

c13b298c-5d8d-4c6c-a3c7-30d0dbefede4

{"attempts":1,"error":{"code":1033,"description":"Doctor does not have required specialities","details":{}}}

МВЗ-4-5

Успішне створення запиту на мед висновнок

POST /patients/composition

Висновок створено в БД, документ медвисновку сгенеровано згідно шаблону

PASSED

title = 0PK2-AM6P-ABM4-PPPE

task ID: 47889ced-5e8a-4c22-bc10-a80c20734f43

5. Перевірки, що виконуються для підписаних запитів на створення медвисновку (згідно процесу https://cawemo.com/share/80bb90b6-efe5-41c7-ba17-3d6dff789dc9)

МВЗ-5-1

Перевірка валідності підпису (EGW7)

Надкладено валідний цифровий підпис. Перевірка відбувається засобами існуючого сервісу DS

Висновок успішно створено

PASSED

Title = 0PK2-AM6P-ABM4-PPPE

Task ID = 47889ced-5e8a-4c22-bc10-a80c20734f43

МВЗ-5-2

Перевірка належності підпису відповідному співробітнику згідно РНОКПП (EGW8+EGW10)

Надкладено валідний цифровий підпис, в якому РНОКПП не відповідає зареєстрованому для Employee в Composition.author

Перевірка відбувається засобами існуючого сервісу DS

Підписання не дозволено для даного автора

PASSED

Task ID = a55bfff7-b764-4ccd-a59b-a2c87c32af42

{"attempts":1,"error":{"code":1025,"description":"Verification failed (DRFO does not match)","details":{}}}

МВЗ-5-3

Перевірка належності підпису відповідному співробітнику згідно номеру документу (EGW9)

Надкладено валідний цифровий підпис, в якому вказано номер документа, який не відповідає зареєстрованому для даного Employee номеру документу зі списку

Employee.Party.Documents

Підписання не дозволено для даного автора

PASSED

Task ID = 533c5d44-95cf-4ff9-b473-e2b7a64e293c

{"attempts":1,"error":{"code":1024,"description":"Verification failed (documents don't match)","details":{}}}

МВЗ-5-4

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

Те ж що і МВЗ-5-1
Підпис накладено вірним способом, де дані надані в одному контейнері разом з підписом і при цьому тіло підписаного запиту не відповідає початковому тілу в Composition.section.text

Підписання не дозволено - невірне тіло підписаного запиту

Тест виконується тільки для створення медичних висновків обох типів, але не виконується для підписаних листів-пояснень, які використовуються для відміни медичних висновків.

PASSED

Task ID 865c1fd8-21ee-4a76-bf20-55ec307b146f

{"attempts":1,"error":{"code":1018,"description":"Signature verification failed (probably invalid format)","details":{}}}

Артефакти тестування:

  1. МВЗ-2-1 Отримання статусу асинхронної

    {
        "data": {
            "doneAt": "2020-09-21T11:13:04.481Z",
            "eta": "2020-09-21T11:13:04.481Z",
            "id": "772c28ff-f817-4edc-92a6-c7d3ed6242dc",
            "links": [
                {
                    "entity": "eHealth/composition",
                    "href": "composition/c8a962d9-be39-4ca5-b02a-cf1a6921a159"
                }
            ],
            "status": "DONE"
        }
    }

2. МВЗ-2-2 Отримання статусу асинхронної задачі, що закінчилась помилкою

{
    "data": {
        "eta": "2020-09-21T11:25:20.737Z",
        "id": "f39c9d15-40d4-422c-b3d3-5099f915dae3",
        "links": [
            {
                "entity": "eHealth/composition",
                "error": "1006: Can't cancel composition: integration tasks are already running",
                "href": "composition/33637998-b7f4-41c2-9930-a1c94084988c"
            }
        ],
        "status": "FAILED"
    }
}

3. Пошук МВ для пацієнта


GET http://localhost:8080/api/patients/f2a36339-3282-42ff-84c1-dd0c2c756838/composition?limit=1

[
    {
        "date": "2020-09-17T17:38:05.408Z",
        "encounter": {
            "type": {
                "coding": [
                    {
                        "code": "encounter",
                        "system": "eHealth/resources"
                    }
                ],
                "text": "string"
            },
            "value": "872e068b-7f77-4001-bacd-b968c3162f05"
        },
        "episodeOfCare": {
            "type": {
                "coding": [
                    {
                        "code": "episode",
                        "system": "eHealth/resources"
                    }
                ]
            },
            "value": "b61c775e-5428-4619-a17e-168ba8ee3bbf"
        },
        "identifier": {
            "type": {
                "coding": [
                    {
                        "code": "composition",
                        "system": "eHealth/composition"
                    }
                ]
            },
            "value": "33637998-b7f4-41c2-9930-a1c94084988c"
        },
        "status": "FINAL",
        "title": "0PK2-AM6P-ABM4-PPPE",
        "type": {
            "coding": [
                {
                    "code": "NEWBORN",
                    "system": "eHealth/composition_types"
                }
            ]
        }
    }
]

4.

GET 'http://localhost:8080/api/patients/f2a36339-3282-42ff-84c1-dd0c2c756838/composition?offset=1&limit=1' \

[]

5.

curl --location --request GET 'http://localhost:8080/api/patients/f2a36339-3282-42ff-84c1-dd0c2c756838/composition/33637998-b7f4-41c2-9930-a1c94084988c/episode/b61c775e-5428-4619-a17e-168ba8ee3bbf/encounter/872e068b-7f77-4001-bacd-b968c3162f05' \
--header 'x-consumer-id: a747cd78-b7e5-11ea-b351-f319bc42050d' \
--header 'api-key: {{mis_api_key}}' \
--header 'x-consumer-metadata: {"client_id": "6f05764a-cfd2-11ea-8072-5f4cd5d18d20"}' \
--header 'x-request-id: 27829e56-cfd2-11ea-bb26-73efbd32573f' \
--header 'Authorization: Bearer V1dVcWxRbWJQTzQxZE1OQWxkMEJRUT09'



{
    "author": {
        "type": {
            "coding": [
                {
                    "code": "employee",
                    "system": "eHealth/resources"
                }
            ],
            "text": "string"
        },
        "value": "8862183e-bacd-41b6-87d6-40b87ec3c186"
    },
    "category": {
        "coding": [
            {
                "code": "LIVE_BIRTH",
                "system": "eHealth/composition_categories"
            }
        ]
    },
    "custodian": {
        "type": {
            "coding": [
                {
                    "code": "legal_entity",
                    "system": "eHealth/resources"
                }
            ]
        },
        "value": "0dccb76f-3ed0-40f4-8f73-e95e2f91ea29"
    },
    "date": "2020-09-17T17:38:05.408Z",
    "encounter": {
        "type": {
            "coding": [
                {
                    "code": "encounter",
                    "system": "eHealth/resources"
                }
            ],
            "text": "string"
        },
        "value": "872e068b-7f77-4001-bacd-b968c3162f05"
    },
    "event": [
        {
            "code": {
                "coding": [
                    {
                        "code": "COMPOSITION_VALIDITY_PERIOD",
                        "system": "eHealth/composition_events"
                    }
                ]
            },
            "period": {
                "start": "2020-09-17T17:55:00.969Z"
            }
        }
    ],
    "extension": [
        {
            "valueCode": "NEWBORN_PROCESSING_STATUS",
            "valueString": "DONE"
        }
    ],
    "identifier": {
        "type": {
            "coding": [
                {
                    "code": "composition",
                    "system": "eHealth/composition"
                }
            ]
        },
        "value": "33637998-b7f4-41c2-9930-a1c94084988c"
    },
    "section": {
        "focus": {
            "type": {
                "coding": [
                    {
                        "code": "person",
                        "system": "eHealth/resources"
                    }
                ],
                "text": "string"
            },
            "value": "925df840-21e2-4381-83fa-49e67aa3501a"
        },
        "text": {
            "div": "<!DOCTYPE html>\n     <html lang=\"en\">\n     <head>\n         <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n         <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n         <meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\">\n         <title>МЕДИЧНИЙ ВИСНОВОК</title>\n         <style> * { padding: 0; margin: 0; font-family: Calibri, sans-serif; font-size: 12px; } html { border: 1px solid #000; width: 134mm; } body { margin: 5mm; } .container { margin: auto; width: 122mm; } .header { display: flex; justify-content: space-between; align-items: center; } .bar { width: 70mm; height: 10mm; } h1 { font-size: 16px; font-weight: bold; } h1 span { font-weight: normal; } h2 { font-size: 14px; font-weight: bold; padding-bottom: 10px; } .table-about { padding-top: 10px; padding-bottom: 10px; } .table-about tr:nth-child(2n + 1) { background: #eee; padding-bottom: 7px; } .table-about tr { padding-bottom: 7px; } .table-about tr>td { min-width: 195px; } .text-bold { font-size: 14px; font-weight: bold; } .comments { margin: 10px 0; } .comments p { font-size: 10px; } .code { border-top: 1px dashed #000; } .code p { font-size: 17px; padding-top: 10px; text-transform: uppercase; } @media print { body { -webkit-print-color-adjust: exact; } }</style>\n     </head>\n     <body>\n     <div class=\"container\">\n         <table class=\"table-about\">\n             <tbody>\n             <tr>\n                 <td><h1>МЕДИЧНИЙ ВИСНОВОК №</h1><b>0PK2-AM6P-ABM4-PPPE</b></td>\n                 <td><img class=\"bar\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiAAAABkCAAAAACatNSTAAAAAklEQVR4nGKkkSsAAAFZSURBVO3SSw6AIAwFwN7/0n4WRpAWxfWYQEwb8QETEdvxnHNEO9+j6vS1vpp9fb2Na2S1cbWv/fY/zzRV6j8J6t3Ps2VnMkswS73eqe+i2gUggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAvJ7wD/XFMCKsWOQwAAAAASUVORK5CYII=\" alt=\"barcode\" /></td>\n             </tr>\n             <tr>\n                 <td>Категорія</td>\n                 <td>пологи, живонароджена дитина</td>\n             </tr>\n             <tr>\n                 <td>Тип</td>\n                 <td>Медичний висновок про народження<br /></td>\n             </tr>\n             <tr>\n                 <td><h2>ІНФОРМАЦІЙНА ДОВІДКА</h2></td>\n                 <td></td>\n             </tr><tr>\n                <td>Дата реєстрації висновку</td>\n                 <td>2020-09-17</td>\n             </tr>\n             <tr>\n                 <td>Мати (законний представник)</td>\n                 <td>925df840-21e2-4381-83fa-49e67aa3501a</td>\n             </tr>\n             <tr>\n                 <td>Дитина</td>\n                 <td>f2a36339-3282-42ff-84c1-dd0c2c756838</td>\n             </tr>\n             <tr>\n                 <td>Дата народження дитини</td>\n                 <td>2020-07-23</td>\n             </tr>\n             <tr>\n                 <td>Стать дитини</td>\n                 <td>чоловіча</td>\n             </tr>\n             <tr>\n                 <td>Лікар</td>\n                 <td>\n                    8862183e-bacd-41b6-87d6-40b87ec3c186\n                    Лікар-акушер-гінеколог\n                    Вячеслав\n                    Сирський\n                </td>\n             </tr>\n             <tr>\n                 <td>Найменування закладу охорони здоров'я або ПІБ ФОП</td>\n                 <td>СИРСЬКИЙ ВЯЧЕСЛАВ ВІКТОРОВИЧ</td>\n             </tr>\n             <tr>\n                 <td>Код за ЄДРПОУ / РНОКПП* </td>\n                 <td>2799207815</td>\n             </tr>\n             </tbody>\n         </table>\n         <div class=\"comments\">\n             <p>* Для фізичних осіб, які через свої релігійні переконання відмовились від прийняття реєстраційного номера облікової картки платника податків та повідомили про це відповідний контролюючий орган і мають відмітку у паспорті, зазначаються серія (за наявності) та номер паспорта.</p>\n         </div>\n     </div>\n     </body>\n     </html>\n",
            "status": "generated"
        }
    },
    "status": "FINAL",
    "subject": {
        "type": {
            "coding": [
                {
                    "code": "preperson",
                    "system": "eHealth/resources"
                }
            ],
            "text": "string"
        },
        "value": "f2a36339-3282-42ff-84c1-dd0c2c756838"
    },
    "title": "0PK2-AM6P-ABM4-PPPE",
    "type": {
        "coding": [
            {
                "code": "NEWBORN",
                "system": "eHealth/composition_types"
            }
        ]
    }
}

6. МВЗ-4-1 Створення запиту на висновок невідповідним автором (EGW2)

{
    "data": {
        "eta": "2020-09-21T12:17:16.554Z",
        "id": "0af37861-4b4a-489d-be67-61a4ab0509ce",
        "links": [
            {
                "entity": "eHealth/composition",
                "error": "1030: Invalid encounter performer"
            }
        ],
        "status": "FAILED"
    }
}

7. Отримання МВ невідповідним користувачем

{
    "meta": {
        "url": "http://api-preprod.ehealth.gov.ua:8000/api/patients/6986e2c5-b7c9-4fbb-9371-61041a78264d/composition/cd5123aa-1dc6-4353-b9ac-76804f9178b0/episode/b61c775e-5428-4619-a17e-168ba8ee3bbf/encounter/5748a5dd-3be6-4613-8746-948453c595e0",
        "code": 403,
        "request_id": "27829e56-cfd2-11ea-bb26-73efbd32573f",
        "type": "object"
    },
    "error": {
        "message": "Access denied",
        "type": "forbidden"
    }
}

8. Створення МВ без відповідного доступу

{
    "meta": {
        "url": "http://api-preprod.ehealth.gov.ua:8000/api/patients/composition",
        "code": 403,
        "type": "object"
    },
    "error": {
        "message": "Your scope does not allow to access this resource. Missing allowances: composition:create",
        "type": "forbidden"
    }
}

9. Підписання МВ без відповідного доступу

{
    "meta": {
        "url": "http://api-preprod.ehealth.gov.ua:8000/api/patients/composition/cd5123aa-1dc6-4353-b9ac-76804f9178b0/sign",
        "code": 403,
        "request_id": "27829e56-cfd2-11ea-bb26-73efbd32573f",
        "type": "object"
    },
    "error": {
        "message": "Your scope does not allow to access this resource. Missing allowances: composition:sign",
        "type": "forbidden"
    }
}

10. Отримання МВ без відповідних доступів

{
    "meta": {
        "url": "http://api-preprod.ehealth.gov.ua:8000/api/patients/6986e2c5-b7c9-4fbb-9371-61041a78264d/composition/cd5123aa-1dc6-4353-b9ac-76804f9178b0/episode/b61c775e-5428-4619-a17e-168ba8ee3bbf/encounter/5748a5dd-3be6-4613-8746-948453c595e0",
        "code": 403,
        "request_id": "27829e56-cfd2-11ea-bb26-73efbd32573f",
        "type": "object"
    },
    "error": {
        "message": "Your scope does not allow to access this resource. Missing allowances: composition:read",
        "type": "forbidden"
    }
}

  • No labels