# Aplikace osobní zdravotní karty (PHR) s FHIR

> Návod: backend propojené PHR na FHIR R4 — data od lidí, laboratoří, dokumentů a zařízení, časová osa, IPS pro sdílení, souhlas. Testovaný kód.

Source: https://developers.anpheros.com/cs/guides/personal-health-record-app

**Aplikace osobní zdravotní karty (PHR) uchovává zdravotní informace jedné osoby — výsledky, měření, diagnózy, léky, dokumenty — v záznamu, který osoba kontroluje, shromážděné z mnoha zdrojů, nikoli z jedné nemocnice.** Obtížné nejsou obrazovky: obtížné je získat data z laboratoří, klinik a zařízení v použitelné formě, sledovat, odkud každá položka pochází, a umožnit osobě sdílet záznam bez ztráty kontroly nad ním. Tento návod sestavuje backend PHR na HL7 FHIR R4 s Anpheros TypeScript SDK; níže uvedený kód byl spuštěn proti lokální instanci platformy s sandbox klíčem.

## Propojené, nepodporované a připojené PHR

| Typ | Kde data žijí | Omezení |
|---|---|---|
| Propojené (nemocniční portál pacienta) | EHR poskytovatele | Zobrazuje pouze data daného poskytovatele; mění se, když osoba změní lékaře |
| Nepodporované (samostatná aplikace nebo poznámkový blok) | Vlastní databáze aplikace | Osoba vše zadává ručně; data z aplikace zřídka odcházejí |
| Připojené | Standardní záznam, do kterého aplikace, laboratoře a kliniky čtou a zapisují se souhlasem osoby | Vyžaduje standardy, souhlas a původ pod sebou |

Připojené PHR je to, co se dnes vyplatí budovat. Je to také směr, kterým se ubírá politika: ve Spojených státech musí certifikované EHR nabízet pacientům přístup k jejich datům prostřednictvím API založeného na FHIR (US Core) a v Evropské unii Evropský prostor pro zdraví poskytuje lidem právo přistupovat ke svým elektronickým zdravotním údajům a sdílet je s poskytovateli dle vlastního výběru, postupně od roku 2029.

## Odkud pocházejí data PHR

1. **Osoba:** domácí měření, symptomy, léky, které užívá, stavy, o kterých ví. Označte je jako hlášené pacientem.
2. **Laboratorní zprávy:** většina lidí dostává PDF; některé laboratoře mohou posílat HL7 v2 nebo CSV. Každý výsledek by se měl stát kódovaným pozorováním ([API pro laboratorní výsledky](https://developers.anpheros.com/cs/guides/lab-results-api)).
3. **Dokumenty:** propouštěcí zprávy, zprávy z zobrazovacích vyšetření, předpisy. Ponechte původní soubor, nezměněný, vedle strukturovaných dat.
4. **Zařízení a nositelná elektronika:** denní kroky, srdeční tep, spánek, krevní tlak z Apple Health nebo Health Connect ([data z nositelné elektroniky ve FHIR](https://developers.anpheros.com/cs/guides/wearable-data-fhir)).
5. **Poskytovatelé:** v USA, FHIR API nemocnic a pojišťoven s přístupem pro pacienta, dosažitelné pomocí SMART on FHIR; jinde, převážně dokumenty a souhrny, jako je International Patient Summary.

Každý zdroj zapisuje do stejného záznamu. Co jej činí důvěryhodným, je to, že každá položka zaznamenává, kdo ji zapsal a z jakého systému ([původ lékařských dat](https://developers.anpheros.com/cs/guides/medical-data-provenance)).

## Architektura

```
 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
```

Váš backend uchovává klíč projektu (`sk_test_…` v sandboxu, nikdy v aplikaci). Vaše aplikace přihlašuje uživatele pomocí vlastní autentizace a komunikuje s vaším backendem; backend mapuje každého uživatele na jeden záznam pacienta.

## Kroky

Nainstalujte SDK (`npm install @anpheros/sdk`) a získejte bezplatný klíč pro sandbox z [dashboardu](https://platform.anpheros.com/dashboard/). Ukázka používá dvouvýsledkový HL7 v2 lipidový panel (`lipid-panel.hl7`) a libovolný PDF soubor (`report.pdf`).

```ts
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);
```

Vytištěno z tohoto běhu:

```
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
```

Vše výše uvedené je uloženo jako FHIR R4 — Patient, Observation, Condition, MedicationStatement, DocumentReference — takže stejný záznam lze číst pomocí libovolného FHIR klienta (`GET /fhir/R4/Patient/{id}/$everything`) a beze změny přenést jinam. Volání `/v1` v SDK jsou zjednodušeným pohledem na stejné zdroje; [Medical data API](https://developers.anpheros.com/cs/guides/medical-data-api) je uvádí.

## Sdílení bez ztráty kontroly

PHR existuje proto, aby mohl být sdílen, a to podle podmínek dané osoby:

- **S lékařem:** International Patient Summary (`$summary`) je dokument FHIR vytvořený pro kliniky — problémy, léky, alergie, výsledky — který vaše aplikace může zobrazit, vytisknout nebo odeslat. [FHIR platform](https://developers.anpheros.com/cs/guides/fhir) popisuje `$summary` a `$everything`.
- **S jinou aplikací:** druhá aplikace požádá o souhlas prostřednictvím OAuth 2.1 a SMART on FHIR; osoba si vybere, která data (například pouze laboratorní výsledky) a na jak dlouho, a může jej kdykoli odvolat. [How to implement patient consent with SMART on FHIR](https://developers.anpheros.com/cs/guides/smart-on-fhir-backend) vás tím provede.
- **S AI asistentem:** `POST /v1/context` sestaví rozpočtovaný souhrn záznamu s označením zdroje pro model a čtení se objeví v přístupovém logu ([How to build an AI healthcare app](https://developers.anpheros.com/cs/guides/build-ai-healthcare-app)).
- **Transparentnost:** každé čtení a zápis, provedené jakoukoli aplikací, je zaznamenáno pro každou aplikaci zvlášť a osoba si může prohlédnout log a aktivní oprávnění.

## Rodiny

Mnoho PHR (Personal Health Records) spravuje jedna osoba pro více osob: děti, partnera, staršího rodiče. Každé osobě vytvořte samostatný záznam a propojte jej s opatrovníkem, místo abyste míchali data všech dohromady. Souhlas je pak udělován pro každý záznam zvlášť. Model je popsán v části [Zdravotní záznam pacienta](https://developers.anpheros.com/cs/guides/patient-medical-record).

## Co si postavit sami a co ne

Zážitek si budujete vy: onboarding, způsob vysvětlení výsledků, připomínky, grafy, jazyk, kterému osoba čte. Anpheros poskytuje záznam, standardní formáty, souhlas, původ dat, protokol přístupu a operace pro laboratoř, dokumenty a souhrny.

Co Anpheros dnes pro PHR nedělá: nepřihlašuje se jménem osoby do nemocničních pacientských portálů ani do amerických API pro přístup pacienta (vaše aplikace to může udělat pomocí klienta SMART on FHIR a zapsat, co obdrží), nečte PDF zprávy přes API a neposkytuje lékařské rady. Vlastní PHR aplikace Anpheros, **Anpheros Daily**, je postavena na stejném API.

## Často kladené dotazy

### Co je to osobní zdravotní záznam (PHR)?
Záznam o zdravotních informacích osoby, který si tato osoba vede a spravuje, shromážděný z několika zdrojů — vlastních záznamů, laboratoří, klinik, zařízení — namísto toho, aby byl veden jedním poskytovatelem.

### Jaký je rozdíl mezi PHR a EHR?
EHR je veden zdravotnickou organizací a pokrývá to, co zaznamenali její poskytovatelé. PHR je veden osobou a může kombinovat data od všech jejích poskytovatelů a zařízení. Propojený PHR je okno do EHR jednoho poskytovatele; připojený PHR využívá standardy k propojení několika zdrojů.

### Měl by PHR používat FHIR?
Pokud mají být data někdy sdílena s lékařem, jinou aplikací nebo asistentem AI, pak ano: FHIR R4 poskytuje kódované, verzované zdroje, kterým jiné systémy již rozumí, a je to formát API pro přístup pacienta v USA a evropského souhrnu pacienta.

### Jak získá aplikace PHR data z nemocnic?
V USA prostřednictvím API pro přístup pacienta FHIR, které zpřístupňují certifikované EHR a mnoho pojišťoven, s využitím SMART on FHIR, aby osoba autorizovala aplikaci. Jinak se jedná většinou o dokumenty a souhrny, které jsou importovány a uloženy vedle strukturovaných dat.

### Kde by měla aplikace PHR uchovávat API klíče?
Na vašem serveru. Klíč projektu může číst každý záznam, který váš projekt vytvořil, takže nikdy nesmí být součástí mobilní nebo webové aplikace; aplikace komunikuje s vaším backendem a aplikace jiných osob používají OAuth se souhlasem osoby.

## Související

- [Vytvoření zdravotnické aplikace](https://developers.anpheros.com/cs/guides/build-a-healthcare-app): obecný návod
- [Zdravotní záznam pacienta](https://developers.anpheros.com/cs/guides/patient-medical-record): co záznam obsahuje a kdo k němu má přístup
- [Infrastruktura digitálních zdravotních záznamů](https://developers.anpheros.com/cs/guides/digital-medical-record)
- [Data z nositelných zařízení ve FHIR](https://developers.anpheros.com/cs/guides/wearable-data-fhir): Apple Health, Health Connect a Samsung Health
- [API pro laboratorní výsledky](https://developers.anpheros.com/cs/guides/lab-results-api)
- [SDK](https://developers.anpheros.com/cs/guides/sdks)
