API для интеграторов

Внутренний REST API: принимает цифровую запись, ставит задание в очередь и отдаёт JSON-заключение и PDF-отчёт. Один вызов на запись.

Сервис слушает только внутренний адрес 127.0.0.1:8000. Наружу его выводит ваш backend, которому выдан ключ. Ключ нельзя встраивать в JavaScript и передавать в строке запроса.

Порядок работы

  1. POST /v1/jobsЗагрузка записи. Ответ 202 с идентификатором задания и ссылками на статус, результат и PDF.
  2. GET /v1/jobs/{id}Опрос состояния: queued → processing → completed. До готовности результат отдаёт 409.
  3. GET /v1/jobs/{id}/resultJSON-заключение: светофор, срочность, основной диагноз, top-3, причины, качество входа.
  4. GET /v1/jobs/{id}/pdfГотовый отчёт с кривыми отведений и таблицей измерений.

Пример

export BASE=http://127.0.0.1:8000
export KEY=<ваш ключ>

# 1. отправить запись
curl -H "X-API-Key: $KEY" -F 'file=@record.npz' "$BASE/v1/jobs"
# {"id":"...","status":"queued","status_url":"...","result_url":"...","pdf_url":"..."}

# 2. дождаться готовности
curl -H "X-API-Key: $KEY" "$BASE/v1/jobs/$JOB"

# 3. забрать заключение и отчёт
curl -H "X-API-Key: $KEY" "$BASE/v1/jobs/$JOB/result"
curl -H "X-API-Key: $KEY" "$BASE/v1/jobs/$JOB/pdf" -o report.pdf

Необязательный опрос

Если передать interview=true, задание перейдёт в состояние awaiting_interview: до 15 адаптивных вопросов о самочувствии с вариантами «да / скорее да / не знаю / скорее нет / нет». Опрос добавляет контекст срочности и не увеличивает баллы ЭКГ. Его можно пропустить вызовом POST /v1/jobs/{id}/finish.

Формат записи

Поля файла .npz

signal — матрица 12×N без NaN и бесконечностей, 2–60 секунд.
fs — целая частота дискретизации, 100–1000 Гц.
lead_names — 12 уникальных названий отведений.
unitsmV, uV или V.

Ограничения

До 10 МиБ на файл, до 32 незавершённых заданий в очереди. Фотографии, PDF, произвольные архивы и неполные WFDB-наборы не принимаются. Повторная загрузка создаёт отдельное задание.

Коды ответов

КодКогда
202Задание принято в очередь
401Нет или неверен ключ доступа
409Результат или PDF запрошен до готовности
413Файл больше допустимого размера
415Неподдерживаемый формат файла
429Очередь заполнена
503Обработчик остановлен или мало места на диске

Что приходит в ответе

Кроме диагноза и светофора ответ содержит поля, по которым видно, насколько результату можно верить: качество входа, доступность измерений и предупреждения о расхождениях между анализаторами. Значение complete означает пригодность анализа, а не отсутствие заболеваний; пропущенный интервал не означает норму.