ЕСОЗ - публічна документація
RC_PIS. Confidant patient sign-up (OAUTH-196)
Purpose
This WS is designed to show user login sign-up that is used to create person and persons user in the system.
Key points
Applications must redirect users to this endpoint to perform patient and user registration process.
After person and its user is created in the system, method reditects to ‘Accept scopes’ page to obtain oAuth Code Grant (which is later exchanged to Access Token).
User will see rendered registration page, which structure differ by a list of requested scopes and security measures applied by DevOps team.
For security purposes, set
X-Frame-Options: deny
header will be set to disallow opening this page in an iframe.In case of error (except invalid
redirect_uri
orclient_id
) and VITE_REDIRECT_ERRORS config param = true - user will be redirected to theredirect_uri
with error and description according to RFC 6749: The OAuth 2.0 Authorization Framework
Specification
Input parameters
Input parameter | M/O | Type | Description |
---|---|---|---|
client_id | M | String | Client id issued after legal entity or PIS registration. Used to identify the context of the MSP/Pharmacy/PIS |
redirect_uri | M | String | URL where user will be redirected after registration and authentification. This url will receive |
scope | M | String | List of scopes that is required in application business logic, separated by space. Different login forms will be shown based on scopes that you requested |
user_data | M | Base 64 String | Encoded signed content with person registration data |
state | O | String | Randomly generated, opaque, and non-guessable string generated by client that will be transferred to client with grant code |
Service logic
Render sign-up page based on input parameters and configuration parameters:
proceed to ‘Approve person details’ page.
In case of error and VITE_REDIRECT_ERRORS config param = true - redirect user to
redirect_uri
with error, error_description and state (RFC 6749: The OAuth 2.0 Authorization Framework)
Errors mapping
BE error | Error to redirect | Error description to redirect |
---|---|---|
message: user_data missing |
| user_data missing |
message: Invalid signed content. |
| Invalid signed content. |
message: Invalid signature |
| Invalid signature |
message: Invalid access token |
| Invalid access token |
message: JWT is invalid. |
| JWT is invalid. |
message: Unable to authenticate signer. |
| Unable to authenticate signer |
message: expected true but got false for attribute patient_signed |
| expected true but got false for attribute patient_signed |
message: expected true but got false for attribute process_disclosure_data_consent |
| expected true but got false for attribute process_disclosure_data_consent |
message: It is impossible to uniquely identify the person. |
| It is impossible to uniquely identify the person. |
message: Relationship not confirmed. |
| Relationship not confirmed |
message: Submitted document type is not allowed. |
| Submitted document type is not allowed |
message: Submitted document type '#{type}' is not allowed. |
| Submitted document type '#{type}' is not allowed |
message: User is blocked. |
| User is blocked. |
message: Person not found. |
| Person not found. |
message: Person who initiates registration of patient must be submitted as confidant person. |
| Person who initiates registration of patient must be submitted as confidant person |
message: Person with cumulative verification status NOT_VERIFIED can not be submitted as confidant. |
| Person with cumulative verification status NOT_VERIFIED can not be submitted as confidant |
message: Person with cumulative verification status VERIFICATION_NEEDED can not be submitted as confidant. |
| Person with cumulative verification status VERIFICATION_NEEDED can not be submitted as confidant |
message: Confidant person must have active authentication method with type "OTP" where ended_at is equal to or greater than current date. |
| Confidant person must have active authentication method with type "OTP" where ended_at is equal to or greater than current date |
message: Only THIRD_PERSON authentication method can be created for person. |
| Only THIRD_PERSON authentication method can be created for person |
message: Person who initiates registration of patient must be submitted as THIRD_PERSON. |
| Person who initiates registration of patient must be submitted as THIRD_PERSON |
message: Applicant user not found. |
| Applicant user not found. |
message: Applicant user is blocked. |
| Applicant user is blocked. |
message: Applicant person not found. |
| Applicant person not found. |
message: Incorrect applicant person age for such an action. |
| Incorrect applicant person age for such an action. |
type: validation_failed message: Validation failed. You can find validators description at our API Manifest: Nebo #15 API Manifest · Apiary . |
| Validation failed |
All other errors not mapped in list above must be redirected with error
= server_error
without description
Errors
Business logic errors
Error | Translation |
---|---|
message: user_data missing | Відсутні дані для реєстрації |
message: Invalid signed content. | Підписаний контент некоректний або прострочений. |
message: Invalid signature | Підписаний контент некоректний або прострочений. |
message: Invalid access token | Не вдалося автентифікувати користувача |
message: JWT is invalid. | Підписаний контент некоректний або прострочений. |
message: Unable to authenticate signer | Не вдалося ідентифікувати підписанта |
message: expected true but got false for attribute patient_signed | Користувач повинен погодитись з підписанням даних |
message: expected true but got false for attribute process_disclosure_data_consent | Користувач повинен погодитись з передачею даних в ЕСОЗ |
message: It is impossible to uniquely identify the person. | Не вдалося ідентифікувати персону. Зверніться до служби підтримки |
message: Relationship not confirmed | Звʼязок між авторизованою особою і довіреною особою не підтверджено |
message: Submitted document type is not allowed | Некоректний тип документу |
message: User is blocked. | Користувача заблоковано |
message: Person not found. | Не вдалося ідентифікувати персону. Зверніться до служби підтримки |
message: Person who initiates registration of patient must be submitted as confidant person | Особа що створює запит на реєстрацію має бути вказана як законний представник |
message: Person with cumulative verification status NOT_VERIFIED can not be submitted as confidant | Особа яка вказана як законний представник не верифікована |
message: Person with cumulative verification status VERIFICATION_NEEDED can not be submitted as confidant | Особа яка вказана як законний представник потребує верифікації |
message: Confidant person must have active authentication method with type "OTP" where ended_at is equal to or greater than current date | Не коректний метод авторизації особи що вказана як законний представник |
message: Only THIRD_PERSON authentication method can be created for person | Дозволена авторизація тільки через законного представника |
message: Person who initiates registration of patient must be submitted as THIRD_PERSON | Не коректний ідентифікатор особи що автенторизує дії |
message: Applicant user not found. | Користувача довіреної особи не знайдено |
message: Applicant user is blocked. | Користувача довіреної особи заблоковано |
message: Applicant person not found. | Персону довіреної особи не знайдено |
message: Incorrect applicant person age for such an action. | Для вказаного віку довіреної особи авторизація в системі не дозволена |
Schema validation errors
Required property missing
Error structure
"invalid": [
{
"entry": "$.person.birth_date",
"entry_type": "json_data_property",
"rules": [
{
"description": "required property birth_date was not present",
"params": {
"property": "birth_date"
},
"raw_description": "required property %{property} was not present",
"rule": "required"
}
]
}
]
Translation
Обовʼязковий атрибут "%{property}" відсутній
Value in the field is not allowed by enum
Error structure
"invalid": [
{
"entry": "$.person.confidant_person.documents_relationship.[0].type",
"entry_type": "json_data_property",
"rules": [
{
"description": "value is not allowed in enum",
"params": {
"values": [
"BIRTH_CERTIFICATE",
"BIRTH_CERTIFICATE_FOREIGN",
"CONFIDANT_CERTIFICATE",
"COURT_DECISION",
"DOCUMENT"
]
},
"raw_description": "value is not allowed in enum",
"rule": "inclusion"
}
]
}
]
Translation
Недопустиме значення для поля "%{property}"
Value in the field does not correspond to regular expression
Error structure
"invalid": [
{
"entry": "$.person.documents.[0].number",
"entry_type": "json_data_property",
"rules": [
{
"description": "string does not match pattern \"^((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{6}$\"",
"params": {
"pattern": "^((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{6}$"
},
"raw_description": "string does not match pattern \"%{pattern}\"",
"rule": "format"
}
]
}
]
Translation
Недопустиме значення для поля "%{property}"
Entry | Translation |
---|---|
$.person.first_name | Імʼя |
$.person.last_name | Прізвище |
$.person.second_name | По-батькові |
$.person.birth_date | Дата народження |
$.person.birth_country | Країна народження |
$.person.birth_settlement | Місце народження |
$.person.gender | Стать |
$.person.email | Адреса електронної пошти |
$.person.no_tax_id | Ознака відсутності ІПН |
$.person.secret | Кодове слово |
$.person.documents | Документи |
$.person.documents.[0].type | Тип документу |
$.person.documents.[0].number | Номер документу |
$.person.documents.[0].issued_by | Місце видачі документу |
$.person.documents.[0].issued_at | Дата видачі документу |
$.person.documents.[0].expiration_date | Дата закінчення дії документу |
$.person.addresses | Адреса |
$.person.addresses.[0].type | Тип адреси |
$.person.addresses.[0].country | Країна прописки (проживання) |
$.person.addresses.[0].area | Область прописки (проживання) |
$.person.addresses.[0].region | Район прописки (проживання) |
$.person.addresses.[0].settlement | Населений пункт прописки (проживання) |
$.person.addresses.[0].settlement_type | Тип населеного пункту прописки (проживання) |
$.person.addresses.[0].settlement_id | Ідентифікатор населеного пункту прописки (проживання) |
$.person.addresses.[0].street_type | Тип вулиці прописки (проживання) |
$.person.addresses.[0].street | Вулиця прописки (проживання) |
$.person.addresses.[0].building | Будинок прописки (проживання) |
$.person.addresses.[0].apartment | Квартира прописки (проживання) |
$.person.addresses.[0].zip | Поштовий індекс прописки (проживання) |
$.person.phones | Телефони |
$.person.phones.[0].type | Тип телефону |
$.person.phones.[0].number | Номер телефону |
$.person.authentication_methods | Методи автентифікації |
$.person.authentication_methods.[0].type | Тип методу автентифікації |
$.person.authentication_methods.[0].value | Значення методу автентифікації |
$.person.authentication_methods.[0].alias | Найменування методу автентифікації |
$.person.preferred_way_communication | Бажаний спосіб комунікації |
$.person.confidant_person | Довірена особа |
$.person.confidant_person.person_id | Ідентифікатор довіреної особи |
$.person.confidant_person.documents_relationship | Документ що підтверджує звʼязок з довіреною особою |
$.person.confidant_person.documents_relationship.[0].type | Тип документу довіреної особи |
$.person.confidant_person.documents_relationship.[0].number | Номер документу довіреної особи |
$.person.confidant_person.documents_relationship.[0].issued_by | Місце видачі документу довіреної особи |
$.person.confidant_person.documents_relationship.[0].issued_at | Дата видачі документу довіреної особи |
$.person.emergency_contact | Контактна особа для екстрених випадків |
$.person.emergency_contact.first_name | Імʼя контактної особи для екстрених випадків |
$.person.emergency_contact.last_name | Прізвище контактної особи для екстрених випадків |
$.person.emergency_contact.second_name | По-батькові контактної особи для екстрених випадків |
$.person.emergency_contact.phones | Телефони контактної особи для екстрених випадків |
$.person.emergency_contact.phones.[0].type | Тип телефону контактної особи для екстрених випадків |
$.person.emergency_contact.phones.[0].number | Номер телефону контактної особи для екстрених випадків |
$.patient_signed | Ознака підпису запиту пацієнтом |
$.process_disclosure_data_consent | Згода з передачею даних в ЕСОЗ |
Number of items in list
Error structure
Translation
Entry | Translation |
---|---|
$.person.documents | Мінімум один документ особи що реєструється має бути вказаний |
$.person.addresses | Мінімум одна адреса має бути вказана |
$.person.phones | Мінімум один телефон має бути вказаний |
$.person.authentication_methods | Мінімум один метод автентифікації має бути вказаний |
$.person.confidant_person.documents_relationship | Мінімум один документ законного представника має бути вказаний |
$.person.emergency_contact.phones | Мінімум один телефон контактної особи для екстрених випадків має бути вказаний |
ЕСОЗ - публічна документація