Сервер iClinic може відправляти інформацію про створення, зміну чи видалення пацієнтів, відвідувань, рахунків або оплат на ваш сервер в режимі реального часу. Це дозволить ефективніше інтегрувати МІС iClinic в ваш робочий процес: наприклад, побудувати додаткову аналітику або інтегруватись з бухгалтерським застосунком.
Важливо: це бета-версія публічного API, в якій можуть бути зміни.
Оскільки iClinic є медичною інформаційною системою, ми не можемо передавати персональні дані ваших пацієнтів в зовнішню систему (бо це може порушувати вимоги КСЗІ та ЗУ Про персональні дані), тому ми передаємо лише частину даних пацієнта (ім'я, по-батькові та геш його телефону).
Дані по кожній окремій події передаються лише раз, якщо ваш сервер недоступний, то іншої спроби надіслати дані про подію не буде.
Власник облікового запису має звернутись до технічної підтримки та отримати Secret, який використовується для верифікації запитів.
Додайте REST-endpoint для отримання подій від наших серверів.
Перейдіть на сторінку Налаштування › Додатково
, далі вкладка API та інтеграції
, впишіть адресу вашого серверу, який буде приймати запити та оберіть ті події, про які ви бажаєте дізнаватись.
Всі події передаються на ваш сервер методом POST
з таймаутом в 10 секунд.
Ці заголовки передаються разом з запитом:
Content-Type=application/json
;Signature=XXX
, значення заголовку обчіслюється як base64(sha256(clientSecret + stringPayload))
, sha256 повертає байти, не hex.Номер телефону пацієнта загешовано методом base64(sha256(firstName + phone))
.
Використовуйте цей набір даних для перевірки своєї реалізації механізму підпису:
DemoScrt{"name":"Пацієнт","date":"2020-01-15","time":"10:00","phone":"000000","comments":"Коментарі"}
PvvBzd7q7Nmqa+CZB6xqZFs0lWEtvQVjRDnELD+k0p0=
Приклад формування сигнатури на мові php:
$signature = base64_encode(hash('sha256', $secret . $payload, true));
Файл зі схемами даних в форматі OpenAPI 3.1
Приклади подій, які можуть відправлятись на ваш сервер наведені нижче.
Зверніть увагу: тут та далі текст запиту відформатовано, проте всі запити відправляються неформатованими.
{
"name":"PatientSaved",
"initiator":"admin@gmail.com",
"resourceId":"Isc3IOUiwvC8sW1B+IM8UhAY9I4pqJX0P7Hj0Oax2F8=",
"resource":{
"patient":{
"id":"Isc3IOUiwvC8sW1B+IM8UhAY9I4pqJX0P7Hj0Oax2F8=",
"firstName":null,
"patronymicName":null,
"gender":"M",
"phoneHash":null
},
"cardNumber":"tmp-12345"
"source":null,
"categories":[],
"curator":"doctor@gmail.com"
}
}
{
"name":"PatientSaved",
"initiator":"admin@gmail.com",
"resourceId":"Isc3IOUiwvC8sW1B+IM8UhAY9I4pqJX0P7Hj0Oax2F8=",
"resource":{
"patient":{
"id":"Isc3IOUiwvC8sW1B+IM8UhAY9I4pqJX0P7Hj0Oax2F8=",
"firstName":"Артем",
"patronymicName":"Ігоревич",
"gender":"M",
"phoneHash":"sz78gpPTBPzhqisGKqe+WgKccxhEA0ywVYRBHPp/01Q="
},
"cardNumber":"00551"
"source":"інтернет",
"categories":["імплантація"],
"curator":"doctor@gmail.com"
}
}
{
"name":"PatientDeleted",
"initiator":"director@gmail.com",
"resourceId":"Isc3IOUiwvC8sW1B+IM8UhAY9I4pqJX0P7Hj0Oax2F8=",
"resource":{
"patient":{
"id":"Isc3IOUiwvC8sW1B+IM8UhAY9I4pqJX0P7Hj0Oax2F8=",
"firstName":"Артем",
"patronymicName":"Ігоревич",
"gender":"M",
"phoneHash":"sz78gpPTBPzhqisGKqe+WgKccxhEA0ywVYRBHPp/01Q="
}
}
}
Ця ж подія відправляється при оновленні існуючого відвідування.
{
"name":"ReceptionSaved",
"initiator":"admin@gmail.com",
"resourceId":"7Teu9PkpD9HA64kHKHbUw46XS/Cfy++IYqC6+CneI34=",
"resource":{
"patient":{
"id":"Isc3IOUiwvC8sW1B+IM8UhAY9I4pqJX0P7Hj0Oax2F8=",
"firstName":"Артем",
"patronymicName":"Ігоревич",
"gender":"M",
"phoneHash":"sz78gpPTBPzhqisGKqe+WgKccxhEA0ywVYRBHPp/01Q="
},
"clinicId":"a4ayc/80/OGda4BO/1o/V0etpOqiLx1JwB5S3beHW0s=",
"doctor":"doctor@gmail.com",
"date":"2023-11-26",
"timeFrom":540,
"timeTo":570,
"comments":"первинний огляд",
"cancelled":false
}
}
{
"name":"ReceptionDeleted",
"initiator":"director@gmail.com",
"resourceId":"7Teu9PkpD9HA64kHKHbUw46XS/Cfy++IYqC6+CneI34=",
"resource":{
"patient":{
"id":"Isc3IOUiwvC8sW1B+IM8UhAY9I4pqJX0P7Hj0Oax2F8=",
"firstName":"Артем",
"patronymicName":"Ігоревич",
"gender":"M",
"phoneHash":"sz78gpPTBPzhqisGKqe+WgKccxhEA0ywVYRBHPp/01Q="
}
}
}
Ця ж подія відправляється при оновленні існуючого рахунка.
{
"name":"PaymentOrderSaved",
"initiator":"admin@gmail.com",
"resourceId":"mh+gM5OeR+UdEGHPH6uC8xYloytAdFc+QvoQCbhXAA4=",
"resource":{
"patient":{
"id":"Isc3IOUiwvC8sW1B+IM8UhAY9I4pqJX0P7Hj0Oax2F8=",
"firstName":"Артем",
"patronymicName":"Ігоревич",
"gender":"M",
"phoneHash":"sz78gpPTBPzhqisGKqe+WgKccxhEA0ywVYRBHPp/01Q="
},
"date":"2023-11-26",
"amount":255.00,
"discount":45.00,
"doctor":"doctor@gmail.com",
"notes": "Медичні послуги",
"internalNotes": "Оплата буде з урахуванням vip-знижки"
"clinicId":"a4ayc/80/OGda4BO/1o/V0etpOqiLx1JwB5S3beHW0s=",
"receptionId":"7Teu9PkpD9HA64kHKHbUw46XS/Cfy++IYqC6+CneI34="
}
}
{
"name":"PaymentOrderDeleted",
"initiator":"director@gmail.com",
"resourceId":"mh+gM5OeR+UdEGHPH6uC8xYloytAdFc+QvoQCbhXAA4=",
"resource":{
"patient":{
"id":"Isc3IOUiwvC8sW1B+IM8UhAY9I4pqJX0P7Hj0Oax2F8=",
"firstName":"Артем",
"patronymicName":"Ігоревич",
"gender":"M",
"phoneHash":"sz78gpPTBPzhqisGKqe+WgKccxhEA0ywVYRBHPp/01Q="
}
}
}
Якщо створюється передоплата за майбутнє лікування, то поле paymentOrderId
матиме значення null
. Якщо попередньо створена передоплата за лікування використовується в рахунку, то поле paymentOrdeerId
матиме ідентифікатор рахунка.
{
"name":"PaymentItemSaved",
"initiator":"admin@gmail.com",
"resourceId":"UiYgLwW1d7PvSGeCYE4mrvctHHcqnzhAtPXUzUYlJ0k=",
"resource":{
"patient":{
"id":"Isc3IOUiwvC8sW1B+IM8UhAY9I4pqJX0P7Hj0Oax2F8=",
"firstName":"Артем",
"patronymicName":"Ігоревич",
"gender":"M",
"phoneHash":"sz78gpPTBPzhqisGKqe+WgKccxhEA0ywVYRBHPp/01Q="
},
"date":"2023-11-26",
"amount":100,
"cashless":true,
"upfront":false,
"bonus":false,
"insurance":false,
"method":"фоп 1",
"internalNotes": "З урахуванням попередньої знижки",
"clinicId":"a4ayc/80/OGda4BO/1o/V0etpOqiLx1JwB5S3beHW0s=",
"paymentOrderId":"mh+gM5OeR+UdEGHPH6uC8xYloytAdFc+QvoQCbhXAA4="
}
}
{
"name":"FinanceItemSaved",
"initiator":"director@gmail.com",
"resourceId":"qba4IO3abQC1sA1A+IM8UhQQ1I4ppJX0P7Hj0Oxy3D2=",
"resource":{
"patient":null,
"date":"2023-11-26",
"amount":500,
"cashless":true,
"insurance":false,
"internalNotes":"внутрішні замітки",
"method":"фін. рахунок ФОП 1",
"clinicId":"a4ayc/80/OGda4BO/1o/V0etpOqiLx1JwB5S3beHW0s="
}
}
{
"name":"FinanceItemDeleted",
"initiator":"director@gmail.com",
"resourceId":"qba4IO3abQC1sA1A+IM8UhQQ1I4ppJX0P7Hj0Oxy3D2=",
"resource":{
"patient":null
}
}
{
"name":"PriceListItemSaved",
"initiator":"director@gmail.com",
"resourceId":"qba4IO3abQC1sA1A+IM8UhQQ1I4ppJX0P7Hj0Oxy3D2=",
"resource":{
"code":"001",
"description":"Консультація",
"price":500,
"currency":"uah",
"categoryName":"1. Терапія"
}
}
{
"name":"PriceListItemDeleted",
"initiator":"director@gmail.com",
"resourceId":"qba4IO3abQC1sA1A+IM8UhQQ1I4ppJX0P7Hj0Oxy3D2=",
"resource":{
"code":"001"
}
}