Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Бэкенд и база данных медицинского приложения
Что должен обрабатывать бэкенд и база данных медицинского приложения, какие части предоставляет Anpheros как управляемую базу данных медицинских данных, что остается в вашем бэкенде, три способа подключения и как оставаться в синхронизации с помощью вебхуков.
Серверная часть медицинского приложения — это серверная сторона приложения для здравоохранения: она хранит данные пациентов, контролирует доступ к ним, ведет историю изменений и взаимодействует с лабораториями, клиниками и другими службами. С Anpheros медицинская часть этой серверной части — база данных для здравоохранения, которая хранит записи каждого пациента с его историей, согласиями, источниками данных, аудитом, импортом лабораторных данных и событиями — предоставляется платформой через API, а ваша собственная серверная часть хранит только то, что специфично для вашего продукта.
Что должен обрабатывать медицинский бэкенд
| Ответственность | Почему это сложно в здравоохранении | С Anpheros |
|---|---|---|
| Медицинская модель данных | десятки видов данных, каждый со стандартными кодами | HL7 FHIR R4, 26 типов ресурсов, LOINC / ICD-10 / ATC / UCUM |
| Версионирование | медицинские данные корректируются, никогда не перезаписываются молча | каждое обновление — новая версия; If-Match для условных обновлений |
| Документы | оригиналы должны оставаться неизменными и отслеживаемыми | неизменяемые оригиналы с SHA-256, хранилище ЕС, зашифрованное ключом, управляемым клиентом |
| Контроль доступа | на пациента, на приложение, на тип данных | изоляция проектов, парные идентификаторы, OAuth-области с фильтрами категорий |
| Согласие | пациент решает и может передумать | разрешения на 30–365 дней, отзывные, зеркалируются как FHIR Consent |
| Аудит | пациенты и регуляторы спрашивают, кто что видел | каждое чтение и запись регистрируются и видны пациенту |
| Происхождение | значение из лаборатории — это не значение, введенное пациентом | тип автора, организация, практикующий врач и исходная система при каждой записи |
| Интеграции | лаборатории отправляют CSV, HL7 v2, JSON; приложениям нужны события | импорт из лаборатории, транзакции FHIR, подписанные веб-хуки |
| Безопасные повторные попытки | дублирование лекарства или результата — клиническая ошибка | Idempotency-Key при каждом создании |
| Тестовые данные | реальные пациенты никогда не должны быть в разработке | база данных песочницы с синтетическими пациентами |
Что хранится в вашем бэкенде
- ваши пользователи и аккаунты, а также сопоставление каждого пользователя с его идентификатором пациента Anpheros (парный идентификатор, который видит ваш проект);
- данные продукта, не являющиеся медицинскими: настройки, подписки, контент, расписания напоминаний;
- бизнес-правила — кто из вашего персонала может видеть какого пациента в вашем продукте;
- API-ключ, который никогда не должен быть включен в мобильное или веб-приложение.
Три способа подключения
1. Ваш бэкенд хранит API-ключ (наиболее распространенный вариант). Ваше приложение вызывает ваш бэкенд; ваш бэкенд вызывает Anpheros с ключом sk_live_ и видит пациентов, созданных вашим проектом.
import { Anpheros, apiKey } from '@anpheros/sdk';
const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });
// GET /api/me/vitals in your backend, after your own authentication
export async function myVitals(user: { anpherosPatientId: string }) {
const page = await anpheros.observations.list(user.anpherosPatientId, { category: 'vital-signs', limit: 50 });
return page.data;
}
2. Приложение действует от имени пациента с помощью OAuth. Для людей, у которых уже есть запись в Anpheros, мобильное или веб-приложение является публичным OAuth-клиентом с PKCE: человек дает согласие на размещенной странице, и приложение получает 30-минутный токен доступа и вращающийся токен обновления для этой одной записи. SDK реализуют этот поток (OAuthFlow).
3. Партнеры "сервер-сервер". Конфиденциальный клиент (с секретом, хранящимся на сервере) может использовать поток авторизационного кода или client_credentials, который ведет себя как API-ключ для данного проекта.
Поддержание синхронизации вашего бэкенда
Подписывайтесь на веб-хуки вместо опроса. Доставки подписаны (Anpheros-Signature, HMAC-SHA256 по временной метке и телу сообщения), доставляются как минимум один раз и, возможно, не по порядку; дедуплицируйте по идентификатору события и игнорируйте устаревшие версии.
import { verifyWebhookSignature } from '@anpheros/sdk';
app.post('/anpheros/hook', express.raw({ type: 'application/json' }), async (req, res) => {
const ok = await verifyWebhookSignature({ secret: process.env.ANPHEROS_WEBHOOK_SECRET!, header: req.header('anpheros-signature'), body: req.body });
if (!ok) return res.status(400).end();
const event = JSON.parse(req.body.toString()); // ids and versions only — read the resource if you need it
res.status(204).end();
});
Обработка ошибок и ограничений
- Рассматривайте
404как "невидимый для вас", но никогда как доказательство того, что запись не существует. 403означает, что учетные данные существуют, но могут не позволять выполнить это действие — отсутствует область действия (scope) или ресурс был записан другой организацией.429сопровождаетсяRetry-After; SDK автоматически ожидают и повторяют попытки, как и в случае с5xx.- Сохраняйте
Anpheros-Request-Idнеудачных вызовов для службы поддержки.
Ошибки · Ограничения и лимиты запросов
Часто задаваемые вопросы
Какую базу данных следует использовать медицинскому приложению?
Базу данных, которая хранит медицинские данные в стандартной, версионированной форме и контролирует доступ для каждого пациента. Anpheros — это управляемая база данных для здравоохранения, построенная на основе HL7 FHIR R4: запись каждого пациента версионируется и доступна для поиска, каждая запись содержит информацию о происхождении, и приложение видит пациента только в том случае, если оно создало запись или пациент дал согласие. Ваша собственная база данных будет хранить остальные данные вашего продукта — учетные записи, биллинг, контент. О компромиссах при проектировании собственных таблиц см. FHIR против пользовательской медицинской базы данных.
Существует ли бесплатная база данных для медицинских приложений?
Да. Песочница Anpheros бесплатна: войдите через Google, получите ключ в один клик, и ваш проект получит 30 синтетических пациентов и до 10 000 записей в день. Производство начинается с 49 евро в месяц за 2500 пациентов, первый месяц бесплатно; доступ к производству предоставляется проверенным организациям с подписанным соглашением об обработке данных. См. Цены.
Могу ли я хранить реальные данные пациентов в бесплатной песочнице?
Нет. Песочница предназначена только для синтетических данных: каждый проект песочницы получает своих синтетических пациентов, а ключи песочницы не могут получить доступ к производству. Записи реальных пациентов должны храниться в производственном проекте.
Связанные материалы
- FHIR против пользовательской медицинской базы данных: когда проектировать собственные таблицы, а когда использовать FHIR
- Как создать API для здравоохранения с помощью TypeScript: пошаговое руководство с Express
- Как создать приложение для здравоохранения с помощью Flutter: пошаговое руководство с Dart SDK
- Разработка программного обеспечения для здравоохранения
- Создание приложения для здравоохранения
- Архитектура
- API медицинских данных
- SDK
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card