# Aplikácia osobnej zdravotnej karty (PHR) s FHIR

> Tutoriál: backend prepojenej PHR na FHIR R4 — dáta od ľudí, laboratórií, dokumentov a zariadení, časová os, IPS na zdieľanie, súhlas. Testovaný kód.

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

**Aplikácia osobnej zdravotnej karty (PHR) uchováva zdravotné informácie jednej osoby — výsledky, merania, diagnózy, lieky, dokumenty — v zázname, ktorý osoba ovláda, zhromaždené z viacerých zdrojov namiesto z jednej nemocnice.** Náročné nie sú obrazovky: náročné je získať dáta z laboratórií, kliník a zariadení v použiteľnej forme, sledovať, odkiaľ každá položka pochádza, a umožniť osobe zdieľať záznam bez straty kontroly nad ním. Tento tutoriál buduje backend PHR na HL7 FHIR R4 s Anpheros TypeScript SDK; kód nižšie bol spustený proti lokálnej inštancii platformy s sandbox kľúčom.

## Prepojené, samostatné a pripojené PHR

| Typ | Kde sa údaje nachádzajú | Obmedzenie |
|---|---|---|
| Prepojené (portál pacienta nemocnice) | EHR poskytovateľa | Zobrazuje iba údaje daného poskytovateľa; mení sa, keď osoba zmení lekára |
| Samostatné (samostatná aplikácia alebo poznámkový blok) | Vlastná databáza aplikácie | Osoba zadáva všetko manuálne; údaje z aplikácie zriedka vychádzajú |
| Pripojené | Štandardný záznam, do ktorého aplikácie, laboratóriá a kliniky čítajú a zapisujú s povolením osoby | Vyžaduje štandardy, súhlas a pôvod pod ním |

Pripojené PHR je to, čo sa dnes oplatí budovať. Je to tiež smer, ktorým sa uberá politika: v Spojených štátoch musia certifikované EHR ponúkať pacientom prístup k ich údajom prostredníctvom API založeného na FHIR (US Core) a v Európskej únii Európsky priestor pre zdravotné údaje dáva ľuďom právo na prístup k ich elektronickým zdravotným údajom a na ich zdieľanie s poskytovateľmi podľa ich výberu, pričom sa bude zavádzať postupne od roku 2029.

## Odkiaľ pochádzajú dáta PHR

1. **Osoba:** domáce merania, symptómy, užívané lieky, známe zdravotné problémy. Označte ich ako hlásené pacientom.
2. **Laboratórne správy:** väčšina ľudí dostáva PDF; niektoré laboratóriá môžu posielať HL7 v2 alebo CSV. Každý výsledok by sa mal stať kódovaným pozorovateľom ([Lab results API](https://developers.anpheros.com/sk/guides/lab-results-api)).
3. **Dokumenty:** prepúšťacie správy, rádiologické správy, lekárske predpisy. Ponechajte pôvodný súbor, nezmenený, vedľa štruktúrovaných údajov.
4. **Zariadenia a nositeľné zariadenia:** denné kroky, srdcový tep, spánok, krvný tlak z Apple Health alebo Health Connect ([wearable data in FHIR](https://developers.anpheros.com/sk/guides/wearable-data-fhir)).
5. **Poskytovatelia:** v USA, prístupové FHIR API nemocníc a poisťovateľov pre pacientov, dosiahnuteľné pomocou SMART on FHIR; inde, prevažne dokumenty a súhrny ako International Patient Summary.

Každý zdroj zapisuje do rovnakého záznamu. Dôveryhodnosť zabezpečuje to, že každá položka zaznamenáva, kto ju zapísal a z akého systému ([medical data provenance](https://developers.anpheros.com/sk/guides/medical-data-provenance)).

## Architektúra

```
 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áva kľúč projektu (`sk_test_…` v sandboxe, nikdy v aplikácii). Vaša aplikácia prihlasuje používateľov pomocou vlastnej autentizácie a komunikuje s vaším backendom; backend mapuje každého používateľa na jeden záznam pacienta.

## Kroky

Nainštalujte SDK (`npm install @anpheros/sdk`) a získajte bezplatný kľúč do sandboxu z [dashboardu](https://platform.anpheros.com/dashboard/). Vzor používa HL7 v2 lipidový panel s dvoma výsledkami (`lipid-panel.hl7`) a ľubovoľné PDF (`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);
```

Vytlačené z tohto spustenia:

```
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šetko vyššie uvedené je uložené ako FHIR R4 — Patient, Observation, Condition, MedicationStatement, DocumentReference — takže ten istý záznam je možné prečítať pomocou ľubovoľného FHIR klienta (`GET /fhir/R4/Patient/{id}/$everything`) a presunúť ho inam v nezmenenom stave. Volania `/v1` v SDK sú zjednodušeným pohľadom na tie isté zdroje; [Medical data API](https://developers.anpheros.com/sk/guides/medical-data-api) ich uvádza.

## Zdieľanie bez straty kontroly

PHR existuje na zdieľanie, podľa podmienok osoby:

- **S lekárom:** International Patient Summary (`$summary`) je FHIR dokument vytvorený pre klinických lekárov — problémy, lieky, alergie, výsledky — ktorý vaša aplikácia môže zobraziť, vytlačiť alebo odoslať. [FHIR platform](https://developers.anpheros.com/sk/guides/fhir) popisuje `$summary` a `$everything`.
- **S inou aplikáciou:** druhá aplikácia si vyžiada súhlas prostredníctvom OAuth 2.1 a SMART on FHIR; osoba si vyberie, ktoré údaje (napríklad iba laboratórne výsledky) a na ako dlho, a môže ho kedykoľvek odvolať. [How to implement patient consent with SMART on FHIR](https://developers.anpheros.com/sk/guides/smart-on-fhir-backend) vás prevedie týmto procesom.
- **S AI asistentom:** `POST /v1/context` vytvára rozpočtovaný, označený súhrn záznamu pre model a čítanie sa zobrazí v denníku prístupu ([How to build an AI healthcare app](https://developers.anpheros.com/sk/guides/build-ai-healthcare-app)).
- **Transparentnosť:** každé čítanie a zápis, akoukoľvek aplikáciou, je zaznamenané podľa aplikácie a osoba si môže pozrieť denník a aktívne udelené povolenia.

## Rodiny

Mnohé PHR (Personal Health Records) sú spravované jednou osobou pre viacerých členov rodiny: deti, partnera, staršieho rodiča. Každá osoba by mala mať vlastný záznam a byť prepojená s opatrovníkom, namiesto miešania údajov všetkých v jednom zázname. Súhlas sa potom udeľuje pre každý záznam zvlášť. Model je popísaný v časti [Lekársky záznam pacienta](https://developers.anpheros.com/sk/guides/patient-medical-record).

## Čo si postaviť sami a čo nie

Vy budujete používateľskú skúsenosť: onboarding, spôsob vysvetlenia výsledkov, pripomienky, grafy, jazyk, ktorému osoba číta. Anpheros poskytuje záznam, štandardné formáty, súhlas, pôvod, denník prístupu a operácie pre laboratórne výsledky, dokumenty a súhrny.

Čo Anpheros dnes nerobí pre PHR: neprihlasuje sa do nemocničných pacientskych portálov ani do amerických API pre prístup pacienta v mene osoby (vaša aplikácia to dokáže pomocou klienta SMART on FHIR a zapísať to, čo prijme), nečíta PDF správy prostredníctvom API a neposkytuje lekárske rady. Vlastná PHR aplikácia Anpheros, **Anpheros Daily**, je postavená na tomto istom API.

## Často kladené otázky

### Čo je osobný zdravotný záznam (PHR)?
Záznam o zdravotných informáciách osoby, ktorý si osoba vedie a kontroluje, zhromaždený z viacerých zdrojov — vlastných záznamov, laboratórií, kliník, zariadení — namiesto toho, aby bol vedený jedným poskytovateľom.

### Aký je rozdiel medzi PHR a EHR?
EHR vedie zdravotnícka organizácia a pokrýva to, čo zaznamenali jej poskytovatelia. PHR vedie osoba a môže kombinovať údaje od všetkých svojich poskytovateľov a zariadení. Pripojený PHR je okno do EHR jedného poskytovateľa; prepojený PHR používa štandardy na spojenie viacerých zdrojov.

### Mal by PHR používať FHIR?
Ak sa údaje majú niekedy zdieľať s lekárom, inou aplikáciou alebo asistentom AI, áno: FHIR R4 poskytuje kódované, verzované zdroje, ktorým iné systémy už rozumejú, a je to formát API pre prístup pacienta v USA a európskeho súhrnu pacienta.

### Ako získa aplikácia PHR údaje z nemocníc?
V USA prostredníctvom API pre prístup pacienta FHIR, ktoré exponujú certifikované EHR a mnohí poisťovatelia, pomocou SMART on FHIR, aby osoba autorizovala aplikáciu. Inde sú to prevažne dokumenty a súhrny, importované a uložené vedľa štruktúrovaných údajov.

### Kde by mala aplikácia PHR uchovávať API kľúče?
Na vašom serveri. Kľúč projektu môže čítať každý záznam, ktorý váš projekt vytvoril, takže nikdy nesmie byť dodaný v mobilnej alebo webovej aplikácii; aplikácia komunikuje s vaším backendom a aplikácie iných ľudí používajú OAuth so súhlasom osoby.

## Súvisiace

- [Vytvorenie zdravotníckej aplikácie](https://developers.anpheros.com/sk/guides/build-a-healthcare-app): všeobecný návod
- [Lekársky záznam pacienta](https://developers.anpheros.com/sk/guides/patient-medical-record): čo záznam obsahuje a kto k nemu má prístup
- [Infraštruktúra digitálnych lekárskych záznamov](https://developers.anpheros.com/sk/guides/digital-medical-record)
- [Údaje z nositeľných zariadení vo formáte FHIR](https://developers.anpheros.com/sk/guides/wearable-data-fhir): Apple Health, Health Connect a Samsung Health
- [API pre laboratórne výsledky](https://developers.anpheros.com/sk/guides/lab-results-api)
- [SDK](https://developers.anpheros.com/sk/guides/sdks)
