# Создание приложения для здравоохранения

> Руководство: используйте Anpheros в качестве бэкенда медицинских данных для приложения для здравоохранения — пациенты, измерения, состояния, лекарства, документы, лабораторные исследования, согласие, веб-хуки и SDK.

Source: https://developers.anpheros.com/ru/guides/build-a-healthcare-app

Это руководство демонстрирует, как приложение для здравоохранения или медицинское приложение может использовать Anpheros Platform в качестве своего бэкенда медицинских данных: где хранятся записи пациентов, как они читаются и записываются, как подключаются другие системы и как пациент сохраняет контроль. Каждый вызов ниже является частью публичного API ([справочник](https://developers.anpheros.com/docs)).

## Что вы создаете

Типичное приложение для пациента — трекер хронических заболеваний, приложение для семейного здоровья, компаньон для удаленного мониторинга — должно:

1. вести запись для каждого пациента: измерения, состояния, лекарства, документы;
2. отображать эту запись в виде списков и временной шкалы;
3. принимать данные из других источников (устройства, лаборатории, клиники);
4. делиться частями записи с согласия пациента;
5. реагировать на изменения.

С Anpheros ваше приложение сохраняет своих собственных пользователей, экраны и бизнес-логику, а медицинскую запись делегирует платформе:

```
Mobile / web app ──► your backend ──► Anpheros Platform API ──► FHIR R4 record of each patient
                         ▲                                              │
                         └──────────── signed webhooks ◄────────────────┘
```

Ваш бэкенд хранит API-ключ; приложение общается с вашим бэкендом. (Приложения, действующие от имени пациента, у которого уже есть запись Anpheros, вместо этого используют OAuth — см. шаг 7.)

## 1. Получение ключа для песочницы

Песочница предоставляется в режиме самообслуживания: войдите на панель управления (`https://platform.anpheros.com/dashboard/`) с помощью Google и нажмите *Get a sandbox key*. Ключи для песочницы начинаются с `sk_test_` и могут обращаться только к базе данных песочницы, где ваш проект уже имеет собственную копию из 30 синтетических пациентов.

```bash
export BASE=https://platform.anpheros.com
export KEY=sk_test_…
curl $BASE/v1/patients -H "Authorization: Bearer $KEY"
```

## 2. Создание пациента

Каждый пользователь вашего приложения получает запись пациента, принадлежащую вашему проекту.

```bash
curl -X POST $BASE/v1/patients -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -H "Idempotency-Key: $(uuidgen)" \
     -d '{"given": "Elena", "family": "Ionescu", "birth_date": "1985-09-03", "gender": "female"}'
```

Ответ содержит `id` пациента (ваш собственный идентификатор для этого человека — другие проекты видят другой) и его `fhir` ссылку.

## 3. Запись измерений, состояний и медикаментов

Укажите источник данных с помощью `author_type`: `patient`, `practitioner`, `device`, `import` или `ai`. Если вы опустите это поле, платформа запишет `import`, но никогда не `patient` по умолчанию.

```bash
# a blood-pressure reading from a connected device (LOINC panel with two components)
curl -X POST $BASE/v1/patients/$PID/observations -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -H "Idempotency-Key: $(uuidgen)" -d '{
  "code": "85354-9", "display": "Blood pressure panel", "category": "vital-signs",
  "effective_at": "2026-09-28T08:00:00Z", "author_type": "device",
  "components": [
    {"code": "8480-6", "display": "Systolic", "value": 128, "unit": "mm[Hg]"},
    {"code": "8462-4", "display": "Diastolic", "value": 82, "unit": "mm[Hg]"}
  ]}'

# a diagnosis (ICD-10 by default)
curl -X POST $BASE/v1/patients/$PID/conditions -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"code": "I10", "display": "Essential hypertension", "onset": "2024-03-01", "author_type": "practitioner"}'

# a medication (ATC by default)
curl -X POST $BASE/v1/patients/$PID/medications -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"display": "Amlodipine 5 mg", "code": "C08CA01", "dosage": "1 tablet in the morning", "start": "2024-03-01", "author_type": "patient"}'
```

Категории наблюдений: `vital-signs`, `laboratory`, `symptom`, `activity`, `survey`, `exam`, `imaging`, `social-history`. Каждая запись сохраняется как ресурс FHIR и автоматически получает запись `Provenance`.

## 4. Хранение документов

```bash
# create the document, then upload the bytes
curl -X POST $BASE/v1/patients/$PID/documents -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"title": "Blood tests 2026-09-14", "kind": "lab_report", "content_type": "application/pdf", "date": "2026-09-14"}'
curl -X PUT $BASE/v1/documents/$DOC/content -H "Authorization: Bearer $KEY" -H 'content-type: application/pdf' --data-binary @report.pdf
```

Исходный документ неизменяем после загрузки; значения, которые вы извлекаете из него, могут ссылаться на него с помощью `derived_from`.

## 5. Чтение записи обратно

```bash
curl "$BASE/v1/patients/$PID/observations?category=vital-signs&limit=20" -H "Authorization: Bearer $KEY"
curl "$BASE/v1/patients/$PID/medications?status=active" -H "Authorization: Bearer $KEY"
curl "$BASE/v1/patients/$PID/timeline?from=2026-06-01" -H "Authorization: Bearer $KEY"   # everything, chronologically
```

Когда вам нужна полная модель FHIR, те же данные доступны по адресу `/fhir/R4` с теми же идентификаторами ([FHIR R4 API](https://developers.anpheros.com/ru/guides/fhir)).

## 6. Подключение лабораторий и устройств

- **Лабораторные отчеты:** `POST /v1/patients/{id}/labs/import` в форматах CSV, HL7 v2 ORU^R01 или JSON преобразуют полный отчет в лабораторные наблюдения (Observations) с кодами LOINC ([Lab connector](https://developers.anpheros.com/ru/guides/lab-connector)).
- **Устройства и носимые гаджеты:** записывают наблюдения (Observations) с `author_type: device` и кодом LOINC для измерения (частота сердечных сокращений, SpO₂, шаги, продолжительность сна и другие перечислены в [FHIR code systems](https://developers.anpheros.com/ru/guides/fhir-code-systems)).

## 7. Доступ к существующей записи пациента (OAuth)

Если у человека уже есть запись в Anpheros (например, через Anpheros Daily), ваше приложение может запросить доступ вместо создания нового пациента: зарегистрируйте приложение, отправьте человека на страницу согласия с необходимыми вам областями доступа (scopes), обменяйте код на токены и вызывайте API с токеном доступа. Пациент выбирает срок действия и может отозвать доступ в любое время. Подробности: [Аутентификация и OAuth](https://developers.anpheros.com/ru/guides/authentication).

## 8. Реагирование на изменения с помощью веб-хуков

```bash
curl -X POST $BASE/v1/webhooks -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"url": "https://your.app/anpheros/hook", "events": ["resource.created", "consent.revoked"]}'
```

Проверяйте заголовок `Anpheros-Signature` каждой доставки ([Webhooks](https://developers.anpheros.com/ru/guides/webhooks)).

## 9. Использование SDK

Тот же поток в TypeScript:

```ts
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });
const { data: patients } = await anpheros.patients.list();
const vitals = await anpheros.observations.list(patients[0].id, { category: 'vital-signs', limit: 20 });
```

Клиент Dart / Flutter той же структуры доступен как `anpheros_sdk` ([SDKs](https://developers.anpheros.com/ru/guides/sdks)).

## Перед выходом на продакшн

- Ключи для продакшна (`sk_live_`) выдаются проверенным организациям после подписания соглашения об обработке данных.
- Ознакомьтесь со страницей [Безопасность, конфиденциальность и местоположение данных](https://developers.anpheros.com/ru/guides/security) и [ограничениями](https://developers.anpheros.com/ru/guides/limits).
- Обрабатывайте ошибки по их типу и указывайте заголовок `Anpheros-Request-Id` при обращении в службу поддержки ([Ошибки](https://developers.anpheros.com/ru/guides/errors)).

## Связанные материалы

- [Как создать медицинский API с помощью TypeScript](https://developers.anpheros.com/ru/guides/healthcare-api-typescript): пошаговое руководство с Express
- [Как создать медицинское приложение с помощью Flutter](https://developers.anpheros.com/ru/guides/healthcare-app-flutter): пошаговое руководство с Dart SDK
- [Как создать приложение для ИИ в сфере здравоохранения с бэкендом FHIR](https://developers.anpheros.com/ru/guides/build-ai-healthcare-app): пошаговое руководство на TypeScript
- [Разработка с Anpheros](https://developers.anpheros.com/ru/guides/build-with-anpheros)
- [Бэкенд и база данных медицинских приложений](https://developers.anpheros.com/ru/guides/medical-app-backend)
- [API медицинских данных](https://developers.anpheros.com/ru/guides/medical-data-api)
- [Разработка программного обеспечения для здравоохранения](https://developers.anpheros.com/ru/guides/healthcare-software)
- [Как создать приложение для личной медицинской карты (PHR) с использованием FHIR](https://developers.anpheros.com/ru/guides/personal-health-record-app)
