Callback механизм¶
Callback механизм предназначен для обновления данных на стороне GBooking в реальном времени.
Он поддерживает следующие операции:
- изменение расписания работника
- обновление расписания работника
- создание, изменение и удаление записи
Запросы необходимо выполнять асинхронно основной транзакции.
Изменение расписания работника¶
Запрос mis.patch_resource_timetable
.
Данный запрос берет текущее расписание работника и применяет временные отрезки, указанные самом запросе.
Формат запроса:
Название | Required | Тип | Описание |
---|---|---|---|
business.id | обязательно | string | идентификатор бизнеса |
provider | обязательно | string | Обработчик данных запроса. Передавайте ident, если нет явного указания передавать другое. |
resource | обязательно |
Тип ResourceTimetable:
Название | Required | Тип | Описание |
---|---|---|---|
id | обязательно | string | идентификатор МИС врача |
timetable | обязательно | Timetable | список слотов врача |
Тип Timetable:
Название | Required | Тип | Описание |
---|---|---|---|
start | обязательно | string (Date) | |
end | обязательно | string (Date) | |
type | string (ON|OFF) | включить/выключить время расписания (по умолчанию ON) |
Пример запроса:
{
"jsonrpc":"2.0",
"id":1,
"cred":{
"token":"[Token]",
"user":"[UserID]"
},
"method":"mis.patch_resource_timetable",
"params":{
"provider":"[Provider]",
"business":{
"id":"[BusinessID]"
},
"resource":{
"id":"extra_res_id",
"timetable":[
{
"start":"2016-10-21 09:00:00.000Z",
"end":"2016-10-21 10:00:00.000Z",
"type":"ON"
}
]
}
}
}
Пример успешного ответа:
{
"jsonrpc":"2.0",
"result":true
}
Пример ответа с ошибкой:
{
"jsonrpc":"2.0",
"id":7,
"error":{
"code":-10000,
"message":"Unknown error occurred"
}
}
Обработчик этого запроса после добавления новых временных интервалов оптимизирует внутреннее представление расписания таким образом, чтобы пересекающиеся временные интервалы вычитались друг из друга, если они имеют разные типы ON и OFF, а примыкающие и имеющие одинаковый тип объединялись в один. Таким образом, можно не бояться линейного роста данных от количества входных данных.
Данный запрос может быть использован и в случае создания, изменения, удаления записи на стороне МИС, если вы не желаете передавать на сторону GBooking свои записи через методы mis.reserve_appointment
, mis.update_appointment
, mis.cancel_appointment_by_business
. Тогда запись на стороне клиники будет отображаться как занятое время на стороне GBooking.
Создание записи¶
Запрос mis.reserve_appointment
.
Формат запроса:
Название | Required | Тип | Описание |
---|---|---|---|
business.id | обязательно | string | идентификатор бизнеса |
provider | обязательно | string | Обработчик данных запроса. Передавайте ident, если нет явного указания передавать другое. |
appointment | обязательно | Appointment | данные записи |
Тип Appointment:
Название | Required | Тип | Описание |
---|---|---|---|
active | обязательно | boolean | является эта запись активной или отмененной |
id | обязательно | string | идентификатор МИС записи |
start | обязательно | string (Date ISO8601) | время начала записи |
duration | обязательно | number | продолжительность записи |
price | обязательно | Price | цена записи |
client | обязательно | Client | данные клиента |
source | обязательно | string | источник записи (MIS_SCHEDULE_SYNC) |
taxonomy.id | обязательно | string | идентификатор МИС услуги, отделения |
resource.id | обязательно | string | идентификатор МИС врача |
Тип Price:
Название | Required | Тип | Описание |
---|---|---|---|
amount | обязательно | number | Значение цены с учетом скидки |
currency | обязательно | Currency | |
originalAmount | обязательно | number | Значение цены без учета скидки |
Тип Client:
Название | Required | Тип | Описание |
---|---|---|---|
id | обязательно | string | идентификатор клиента. Нужен для поддержания ссылочной целостности клиентской базы |
name | string | Имя пользователя | |
surname | string | Фамилия пользователя | |
middlename | string | Отчество пользователя | |
phone | обязательно | Phone | телефон пользователя |
Тип Phone:
Название | Required | Тип | Описание |
---|---|---|---|
country_code | обязательно | string | код страны |
area_code | обязательно | string | код области |
number | обязательно | string | номер |
Пример запроса:
{
"jsonrpc":"2.0",
"id":1,
"cred":{
"token":"[Token]",
"user":"[UserID]"
},
"method":"mis.reserve_appointment",
"params":{
"provider":"[Provider]",
"business":{
"id":"4000000003543"
},
"appointment":{
"active":true,
"id":"mis_appointment_id",
"start":"2017-01-26T15:45:00.000Z",
"duration":135,
"price":{
"amount":1500,
"currency":"RUB",
"originalAmount":1500
}
},
"source":"MIS_SCHEDULE_SYNC",
"taxonomy":{
"id":"mis_extra_id"
},
"resource":{
"id":"mis_extra_id"
},
"client":{
"id":"mis_client_id",
"name":"Василий",
"surname":"Пупкин",
"phone":[
{
"country_code":"7",
"area_code":"000",
"number":"0300000"
}
]
}
}
}
Пример успешного ответа:
{
"jsonrpc":"2.0",
"result":true
}
Пример ответа с ошибкой:
{
"jsonrpc":"2.0",
"id":7,
"error":{
"code":-10000,
"message":"Unknown error occurred"
}
}
Изменение записи¶
Запрос mis.update_appointment
.
Формат запроса:
Название | Required | Тип | Описание |
---|---|---|---|
business.id | обязательно | string | идентификатор бизнеса |
provider | обязательно | string | Обработчик данных запроса. Передавайте ident, если нет явного указания передавать другое. |
appointment | обязательно | Appointment | данные записи |
Тип Appointment описан выше.
В типе Appointment в данном методе обязательным полем является только поле id, остальные — опциональные.
Пример запроса:
{
"jsonrpc":"2.0",
"id":17,
"cred":{
"token":"[Token]",
"user":"[UserID]"
},
"method":"mis.update_appointment",
"params":{
"provider": "ident",
"business":{
"id":"[BusinessID]"
},
"appointment":{
"id":"app1",
"start":"2017-02-26 12:55:00.000Z"
}
}
}
Пример успешного ответа:
{
"jsonrpc":"2.0",
"result":true
}
Пример ответа с ошибкой:
{
"jsonrpc":"2.0",
"id":7,
"error":{
"code":-10000,
"message":"Unknown error occurred"
}
}
Удаление записи¶
Запрос mis.cancel_appointment_by_business
.
Формат запроса:
Название | Required | Тип | Описание |
---|---|---|---|
business.id | обязательно | string | идентификатор бизнеса |
provider | обязательно | string | Обработчик данных запроса. Передавайте ident, если нет явного указания передавать другое. |
appointment.id | обязательно | string | идентификатор МИС записи |
Пример запроса:
{
"jsonrpc":"2.0",
"id":1,
"cred":{
"token":"[Token]",
"user":"[UserID]"
},
"method":"mis.cancel_appointment_by_business",
"params":{
"provider":"[Provider]",
"business":{
"id":"12345"
},
"appointment":{
"id":"mis_appointment_id"
}
}
}
Пример успешного ответа:
{
"jsonrpc":"2.0",
"result":true
}
Пример ответа с ошибкой:
{
"jsonrpc":"2.0",
"id":7,
"error":{
"code":-10000,
"message":"Unknown error occurred"
}
}
Перевод записи в состояние не подтверждено¶
Запрос mis.set_appointment_tentative
.
Формат запроса:
Название | Required | Тип | Описание |
---|---|---|---|
business.id | обязательно | string | идентификатор бизнеса |
provider | обязательно | string | Обработчик данных запроса. Передавайте ident, если нет явного указания передавать другое. |
appointment.id | обязательно | string | идентификатор МИС записи |
Пример запроса:
{
"jsonrpc":"2.0",
"id":1,
"cred":{
"token":"[Token]",
"user":"[UserID]"
},
"method":"mis.set_appointment_tentative",
"params":{
"business":{
"id":"4000000003543"
},
"appointment":{
"id":"mis_appointment_id"
}
}
}
В случае успешного ответа запись будет переведена в состояние TENTATIVE, скрыта из бэкофиса. Если в течении 5 минут не придёт запрос на создание записи с таким же mis_appointment_id - запись будет удалена.
Пример успешного ответа:
{
"jsonrpc":"2.0",
"result":true
}
Пример ответа с ошибкой:
{
"jsonrpc":"2.0",
"id":7,
"error":{
"code":-10000,
"message":"Unknown error occurred"
}
}
Изменение статуса доставки записи¶
Запрос mis.set_appointment_delivery_status
.
В случае, если запись поступает в МИС асинхронно, необходимо обновить статус доставки при обновлении ее на платформе, предоставляющей доступ к записи.
Формат запроса:
Название | Required | Тип | Описание |
---|---|---|---|
business.id | обязательно | string | идентификатор бизнеса |
provider | обязательно | string | Обработчик данных запроса. Передавайте ident, если нет явного указания передавать другое. |
appointment | обязательно | AppointmentDelivery |
Тип AppointmentDelivery:
Название | Required | Тип | Описание |
---|---|---|---|
id | обязательно | string | идентификатор МИС записи |
exchangeID | string | новый идентификатор записи, в случае, если необходимо изменить его | |
deliveryStatus | DeliveryStatus | статус доставки записи в рабочий инстанс МИС |
Тип DeliveryStatus:
- RESERVED_DELIVERED — в случае доставки записи как резерва
- CONFIRMED_DELIVERED - в случае успешной доставки подтвержденной записи
- NOT_DELIVERED - в случае, если запись не была доставлена ни в каком виде
Пример запроса:
{
"jsonrpc":"2.0",
"id":1,
"cred":{
"token":"[Token]",
"user":"[UserID]"
},
"method":"mis.set_appointment_delivery_status",
"params":{
"business":{
"id":"[BusinessID]"
},
"appointment":{
"id":"mis_appointment_id",
"exchangeID":"new_mis_appointment_id",
"deliveryStatus":"CONFIRMED_DELIVERED"
}
}
}
Пример успешного ответа:
{
"jsonrpc":"2.0",
"result":true
}
Пример ответа с ошибкой:
{
"jsonrpc":"2.0",
"id":7,
"error":{
"code":-10000,
"message":"Unknown error occurred"
}
}
Примеры callback запросов¶
Удаление сотрудника из филиала, из сети¶
Запрос mis.update_resource
.
Должен быть указан либо идентификатор сети, либо идентификатор бизнеса.
resource.status
может принимать значения ACTIVE
, INACTIVE
.
Пример запроса:
{
"jsonrpc":"2.0",
"id":1,
"cred":{
"token":"[Token]",
"user":"[UserID]"
},
"method":"mis.update_resource",
"params":{
"business":{
"id":"[BusinessID]"
},
"network":{
"id":"[NetworkID]"
},
"resource":{
"id":"mis_extra_id",
"status":"INACTIVE"
}
}
}
Пример успешного ответа:
{
"jsonrpc":"2.0",
"result":true
}
Пример ответа с ошибкой:
{
"jsonrpc":"2.0",
"id":7,
"error":{
"code":-10000,
"message":"Unknown error occurred"
}
}
У сотрудника удалена специальность на филиале, на сети¶
Запрос mis.update_resource
.
Должен быть указан либо идентификатор сети, либо идентификатор бизнеса.
В массив resource.taxonomies
передаются операции добавления, удаления такстономий.
- Добавление таксономии:
{$add:"mis_tax_id"}
- Удаление таксономии:
{$remove:"mis_tax_id"}
В случае, если в качестве элементов массива указаны строки, то устанавливается переданный массив. Если же передано хотя бы одно действие, то массив обрабатывается как массив действий (строковый идентификатор будет интерпретироваться как операция добавления).
Пример запроса:
{
"jsonrpc":"2.0",
"id":1,
"cred":{
"token":"[Token]",
"user":"[UserID]"
},
"method":"mis.update_resource",
"params":{
"business":{
"id":"[BusinessID]"
},
"network":{
"id":"[NetworkID]"
},
"resource":{
"id":"mis_extra_id",
"taxonomies":[
"tax1",
{
"$add":"mis_tax_id2"
},
{
"$remove":"mis_tax_id3"
}
]
}
}
}
Пример успешного ответа:
{
"jsonrpc":"2.0",
"result":true
}
Пример ответа с ошибкой:
{
"jsonrpc":"2.0",
"id":7,
"error":{
"code":-10000,
"message":"Unknown error occurred"
}
}