AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Додаток персональної медичної картки (PHR) з FHIR

Посібник: бекенд підключеної PHR на FHIR R4 — дані від людей, лабораторій, документів та пристроїв, хронологія, IPS для обміну, згода. Перевірений код.

Додаток особистої медичної карти (PHR) зберігає інформацію про здоров'я однієї людини — результати, вимірювання, діагнози, ліки, документи — у записі, який контролює сама людина, зібраному з багатьох джерел, а не з однієї лікарні. Складними є не екрани: це отримання даних з лабораторій, клінік та пристроїв у зручному для використання вигляді, відстеження походження кожного елемента та надання людині можливості ділитися записом, не втрачаючи над ним контролю. Цей посібник створює бекенд PHR на HL7 FHIR R4 за допомогою Anpheros TypeScript SDK; наведений нижче код було запущено на локальному екземплярі платформи з ключем пісочниці.

Прив'язані, відв'язані та підключені PHR

Тип Де зберігаються дані Обмеження
Прив'язані (портал пацієнта лікарні) EHR постачальника послуг Показує лише дані цього постачальника; змінюється, коли людина змінює лікаря
Відв'язані (самостійний додаток або блокнот) Власна база даних додатка Людина вводить усе вручну; дані рідко виходять за межі додатка
Підключені Стандартний запис, до якого додатки, лабораторії та клініки читають і записують за згодою особи Потребує стандартів, згоди та походження даних

Підключений PHR – це те, що варто створювати сьогодні. Це також те, до чого рухається політика: у Сполучених Штатах сертифіковані EHR повинні надавати пацієнтам доступ до своїх даних через API на основі FHIR (US Core), а в Європейському Союзі Європейський простір даних охорони здоров'я (European Health Data Space) надає людям право доступу до своїх електронних медичних даних та їх обміну з постачальниками послуг за їх вибором, поетапно з 2029 року.

Звідки надходять дані PHR

  1. Особа: домашні вимірювання, симптоми, прийняті ліки, відомі стани. Позначте їх як повідомлені пацієнтом.
  2. Лабораторні звіти: більшість людей отримують PDF; деякі лабораторії можуть надсилати HL7 v2 або CSV. Кожен результат має стати кодованим спостереженням (Lab results API).
  3. Документи: виписні листи, звіти про візуалізацію, рецепти. Зберігайте оригінальний файл незмінним поруч із структурованими даними.
  4. Пристрої та носимі пристрої: щоденні кроки, пульс, сон, артеріальний тиск з Apple Health або Health Connect (wearable data in FHIR).
  5. Постачальники: у США — FHIR API лікарень та страхових компаній для доступу пацієнтів, доступ до яких здійснюється за допомогою SMART on FHIR; в інших країнах — переважно документи та резюме, такі як International Patient Summary.

Кожне джерело записує дані в один і той самий запис. Надійність забезпечується тим, що кожен елемент записує, хто його створив і з якої системи (medical data provenance).

Архітектура

 person ──► your PHR app (mobile / web) ──► your backend ──► Anpheros: one FHIR R4 record per person
                                               │                 ├─ Observations, Conditions, Medications, Documents…
   lab report, PDF, device data ───────────────┘                 ├─ Provenance on every write
                                                                 ├─ access log the person can see
   other apps, doctors, AI assistants ◄── consent (OAuth) ───────┴─ $summary (IPS) to share

Ваш бекенд зберігає ключ проєкту (sk_test_… у пісочниці, ніколи в додатку). Ваш додаток реєструє користувачів за допомогою власної автентифікації та спілкується з вашим бекендом; бекенд зіставляє кожного користувача з одним записом пацієнта.

Покрокова інструкція

Встановіть SDK (npm install @anpheros/sdk) та отримайте безкоштовний ключ для пісочниці на панелі керування. Приклад використовує двохетапну панель ліпідів HL7 v2 (lipid-panel.hl7) та будь-який PDF (report.pdf).

import { readFile } from 'node:fs/promises';
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });

// 1. One record per person who signs up in your PHR app
const jane = await anpheros.patients.create({ given: 'Jane', family: 'Doe', birth_date: '1984-07-19', gender: 'female' });

// 2. Something the person measured at home
await anpheros.observations.create(jane.id, {
  code: '85354-9', category: 'vital-signs', effective_at: '2026-10-01T08:30:00-05:00', author_type: 'patient',
  components: [{ code: '8480-6', value: 128, unit: 'mm[Hg]' }, { code: '8462-4', value: 82, unit: 'mm[Hg]' }],
});

// 3. A diagnosis and a medication the person reports
await anpheros.conditions.create(jane.id, { code: 'E11.9', system: 'http://hl7.org/fhir/sid/icd-10',
  display: 'Type 2 diabetes mellitus without complications', clinical_status: 'active', onset: '2021-03-15', author_type: 'patient' });
await anpheros.medications.create(jane.id, { code: 'A10BA02', display: 'Metformin 500 mg', status: 'active',
  dosage: '500 mg twice a day', start: '2021-03-20', author_type: 'patient' });

// 4. A lab report the person received, as the lab sent it (HL7 v2)
const lab = await anpheros.labs.importHl7(jane.id, await readFile('lipid-panel.hl7', 'utf8'), { sourceSystem: 'springfield-lis' });

// 5. A PDF they want to keep with the record
const doc = await anpheros.documents.upload(jane.id,
  { title: 'Chest X-ray report', kind: 'imaging_report', content_type: 'application/pdf', date: '2026-10-03' },
  await readFile('report.pdf'));

// 6. One timeline for the home screen
const timeline = await anpheros.timeline.list(jane.id, { limit: 10 });

// 7. A summary to share with a new doctor: the International Patient Summary
const ips = await anpheros.fhir.summary(jane.id);

// 8. Who else can read this record (empty until the person consents to another app)
const grants = await anpheros.grants.of(jane.id);

Надруковано з цього запуску:

lab:       created 2, unmapped []
document:  final
timeline:  2026-10-03  document    Chest X-ray report
           2026-10-02  observation Cholesterol in HDL [Mass/volume] in Serum or Plasma
           2026-10-02  observation Cholesterol [Mass/volume] in Serum or Plasma
           2026-10-01  observation Blood pressure panel
           2021-03-20  medication  Metformin 500 mg
           2021-03-15  condition   Type 2 diabetes mellitus without complications
IPS:       Allergies, Medications, Problems, Results, Vital signs
grants:    0

Все вищезазначене зберігається як FHIR R4 — Patient, Observation, Condition, MedicationStatement, DocumentReference — тому той самий запис можна прочитати за допомогою будь-якого клієнта FHIR (GET /fhir/R4/Patient/{id}/$everything) та перемістити в інше місце без змін. Виклики /v1 в SDK є спрощеним представленням тих самих ресурсів; Medical data API перелічує їх.

Обмін без втрати контролю

PHR існує для того, щоб ним ділитися, на умовах особи:

Сім'ї

Багато PHR ведуться однією особою для кількох членів сім'ї: дітей, партнера, літнього батька. Надайте кожній особі власний запис і пов'яжіть їх з опікуном, замість того, щоб змішувати дані всіх в одному. Згода надається для кожного запису окремо. Медична карта пацієнта описує модель.

Що створювати самостійно, а що ні

Ви створюєте користувацький досвід: онбординг, пояснення результатів, нагадування, діаграми, мову, якою читає користувач. Anpheros надає запис, стандартні формати, згоду, походження даних, журнал доступу та операції з лабораторними даними, документами та резюме.

Що Anpheros не робить для PHR сьогодні: він не входить до лікарняних порталів пацієнтів або API доступу пацієнтів США від імені користувача (ваш додаток може це зробити за допомогою клієнта SMART on FHIR та записувати отримане), він не читає PDF-звіти через API і не надає медичних порад. Власний додаток PHR від Anpheros, Anpheros Daily, побудований на цьому ж API.

Часті запитання

Що таке персональна медична карта (PHR)?

Запис інформації про здоров'я особи, який веде та контролює сама особа, зібраний з кількох джерел — власних записів, лабораторій, клінік, пристроїв — а не зберігається одним постачальником послуг.

Яка різниця між PHR та EHR?

EHR ведеться медичною організацією та охоплює те, що записали її постачальники послуг. PHR ведеться особою і може об'єднувати дані від усіх її постачальників та пристроїв. Прив'язана PHR — це вікно до EHR одного постачальника; підключена PHR використовує стандарти для об'єднання кількох джерел.

Чи варто використовувати FHIR для PHR?

Якщо дані коли-небудь будуть передаватися лікарю, іншій програмі або AI-асистенту, то так: FHIR R4 надає кодовані, версіоновані ресурси, які інші системи вже розуміють, і це формат API доступу пацієнтів у США та європейського резюме пацієнта.

Як програма PHR отримує дані з лікарень?

У США — через API доступу пацієнтів FHIR, які надають сертифіковані EHR та багато страхових компаній, використовуючи SMART on FHIR, щоб дозволити особі авторизувати програму. В інших місцях це переважно документи та резюме, які імпортуються та зберігаються поруч із структурованими даними.

Де програма PHR повинна зберігати ключі API?

На вашому сервері. Ключ проєкту може читати кожен запис, створений вашим проєктом, тому він ніколи не повинен бути вбудований у мобільний або веб-додаток; додаток спілкується з вашим бекендом, а додатки інших людей використовують OAuth за згодою особи.

Пов'язані теми

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy