#Протокол после правки врача
Пришлите протокол, который врач сохранил в карточке приёма. smartica.ai отличает этот текст от протокола, который сама отдала в МИС.
Запрос необязателен. Без него протокол по-прежнему приходит через PUT или GET. ack для этого запроса не нужен. Пришлите версию сразу после сохранения карточки.
#Пришлите версию после сохранения карточки
Пришлите версию один раз, когда врач сохраняет карточку. Не присылайте её на каждый введённый символ.
smartica.ai не создаёт новую версию, если поля, стенограмма и status совпадают с последней сохранённой версией этой ревизии. Код ответа 200. Поле version остаётся прежним. Когда последняя версия этой ревизии уже другая, повтор прежнего состояния создаёт новую версию.
Укажите status, если МИС различает черновик и итоговый протокол.
- Для промежуточного сохранения укажите
draft. - Для подписанного или закрытого протокола укажите
final.
Если вы пришлёте тот же текст сначала со статусом draft, а затем со статусом final, smartica.ai сохраняет отдельную версию. Если МИС черновик и итог не различает, поле status не указывайте.
Возьмите номер ревизии протокола, который врач правил.
- При
pushномер приходит в заголовкеX-Smartica-RevisionвходящегоPUT. - При
pullномер приходит в полеrevisionответаGET.
Сохраните этот номер вместе с протоколом. Укажите его в поле base_revision.
#Пришлите протокол целиком
В массив fields входят все поля бланка на момент сохранения, включая те, которые врач не менял.
Если id нет в массиве, поле пустое. Пустая строка и null тоже означают пустое поле. Во входящем PUT правило другое. Поле, которого нет в массиве, нужно оставить как было.
Непустой id, которого не было в отданном протоколе, тоже попадает в сохранённую версию. Порядок полей в массиве не важен.
#Запрос
POST /api/v1/integrations/{platform}/encounters/{smartica_encounter_id}/versions
Authorization: Bearer <API-ключ клиники>
Content-Type: application/json
{
"base_revision": 1,
"status": "final",
"saved_at": "2026-10-23T12:00:00+03:00",
"user_email": "doctor@clinic.ru",
"fields": [
{ "id": "complaints", "value": "Кашель три дня, по ночам" },
{ "id": "diagnosis", "value": "" }
]
}
Обязательны только base_revision и fields. Остальные поля примера можно опустить.
| Поле | Обязательно | Описание |
|---|---|---|
base_revision |
да | Ревизия протокола, который врач правил. Целое число от 0 |
fields |
да | Все поля бланка. Пустой массив означает, что полей нет. id, которого нет в массиве, считается пустым |
fields[].id |
да | Тот же id, что в бланке. В массиве каждый id встречается один раз |
fields[].value |
да | Ключ обязателен. Пустая строка и null означают пустое поле. Для числа, флажка и списка передайте значение того же типа, что пришло в протоколе. Для целого поля 72 и "72" означают одно значение |
status |
нет | draft или final |
saved_at |
нет | Момент сохранения карточки в формате ISO-8601 |
user_email |
нет | Почта сотрудника, который сохранил карточку |
transcript |
нет | Новый текст стенограммы. Укажите поле, только если стенограмму изменили. Без transcript прежняя стенограмма остаётся |
#Ответ
Код 201 означает новую версию. Код 200 означает, что запрос совпал с последней сохранённой версией этой ревизии.
{
"smartica_encounter_id": "7f3a9c2e-4b1e-4a8d-9c3f-2e1a8b4d6f0c",
"version": 2,
"base_revision": 1,
"status": "final"
}
В ответе два разных счётчика. version нумерует сохранённые состояния приёма у smartica.ai. base_revision повторяет ревизию, которую вы прислали. Если вы не передали status, в ответе это поле равно null.
#Ошибки
В ответе с ошибкой есть поле error.
| HTTP | error |
Что делать |
|---|---|---|
409 |
not_delivered |
Протокол ещё не отдавали. Дождитесь PUT или GET со статусом ready |
409 |
revision_unknown |
Этой ревизии среди отданных протоколов нет. Возьмите номер из последнего PUT или GET |
409 |
version_limit |
Для этого приёма уже сохранён максимум версий. Новая версия не записывается. Уже сохранённые остаются |
404 |
encounter_not_found |
UUID неверный или приём принадлежит другой клинике |
410 |
encounter_deleted |
Запись удалена в smartica.ai |
422 |
validation_failed |
Данные не прошли проверку. Частые причины: повтор id, status не draft и не final, значение не подходит типу поля из бланка. Число проверяется по min и max, строка string по max_length |
По умолчанию на один приём приходится не больше 100 версий. В это число входят протоколы, которые smartica.ai отдала в МИС, и версии, которые прислали вы. Подробности в статье Лимиты.
Длины полей собраны там же, в разделе Форматы и длины полей. Ошибки ключа, адреса клиники и частоты запросов описаны в статье Авторизация и ошибки.