# Backend a databáza lekárskej aplikácie

> Čo musí zvládnuť backend lekárskej aplikácie a jej databáza, ktoré časti Anpheros poskytuje ako spravovanú zdravotnícku databázu, čo zostáva vo vašom backendu, tri spôsoby pripojenia a ako zostať synchronizovaný pomocou webhookov.

Source: https://developers.anpheros.com/sk/guides/medical-app-backend

**Backend lekárskej aplikácie je serverová časť zdravotníckej aplikácie: ukladá údaje o pacientoch, vynucuje, kto ich môže vidieť, uchováva históriu zmien a komunikuje s laboratóriami, klinikami a inými službami.** S Anpheros je lekárska časť tohto backendu – zdravotnícka databáza, ktorá uchováva záznam každého pacienta s jeho históriou, súhlasom, pôvodom, auditom, importom laboratórnych výsledkov a udalosťami – poskytovaná platformou prostredníctvom API a váš vlastný backend uchováva iba to, čo je špecifické pre váš produkt.

## Čo musí zvládnuť lekársky backend

| Zodpovednosť | Prečo je to v zdravotníctve náročné | S Anpheros |
|---|---|---|
| Lekársky dátový model | desiatky druhov údajov, každý so štandardnými kódmi | HL7 FHIR R4, 26 typov zdrojov, LOINC / ICD-10 / ATC / UCUM |
| Verzovanie | lekárske údaje sa korigujú, nikdy sa ticho neprepíšu | každá aktualizácia je nová verzia; `If-Match` pre podmienené aktualizácie |
| Dokumenty | originály musia zostať nezmenené a sledovateľné | nemenné originály s SHA-256, úložisko EÚ šifrované kľúčom spravovaným zákazníkom |
| Kontrola prístupu | na pacienta, na aplikáciu, na typ údajov | izolácia projektov, párové ID, rozsahy OAuth s filtrami kategórií |
| Súhlas | pacient rozhoduje a môže zmeniť názor | povolenia na 30–365 dní, odvolateľné, zrkadlené ako FHIR `Consent` |
| Audit | pacienti a regulátori sa pýtajú, kto čo videl | každé čítanie a zápis zaznamenané a viditeľné pre pacienta |
| Pôvod | hodnota z laboratória nie je hodnota zadaná pacientom | typ autora, organizácia, praktický lekár a zdrojový systém pri každom zápise |
| Integrácie | laboratóriá posielajú CSV, HL7 v2, JSON; aplikácie potrebujú udalosti | import laboratória, transakcie FHIR, podpísané webhooky |
| Bezpečné opakovanie | duplicitný liek alebo výsledok je klinická chyba | `Idempotency-Key` pri každom vytvorení |
| Testovacie údaje | skutoční pacienti nesmú byť nikdy vo vývoji | databáza sandboxu so syntetickými pacientmi |

## Čo zostáva na vašom backend-e

- vaši **používatelia a účty** a mapovanie každého používateľa na ich Anpheros patient id (párové id, ktoré váš projekt vidí);
- **produktové dáta**, ktoré nie sú lekárske: nastavenia, predplatné, obsah, plány pripomienok;
- **obchodné pravidlá** – ktorí z vašich zamestnancov môžu vidieť ktorého pacienta vo vašom produkte;
- **API kľúč**, ktorý sa nikdy nesmie distribuovať v mobilnej alebo webovej aplikácii.

## Tri spôsoby pripojenia

**1. Váš backend drží API kľúč (najbežnejšie).** Vaša aplikácia volá váš backend; váš backend volá Anpheros s kľúčom `sk_live_` a vidí pacientov, ktorých váš projekt vytvoril.

```ts
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. Aplikácia koná v mene pacienta pomocou OAuth.** Pre ľudí, ktorí už majú záznam v Anpheros, je mobilná alebo webová aplikácia *verejným* OAuth klientom s PKCE: osoba súhlasí na hostovanej stránke a aplikácia získa 30-minútový prístupový token a rotujúci obnovovací token pre tento jeden záznam. SDK implementujú tento tok (`OAuthFlow`).

**3. Partneri typu server-na-server.** Dôverný klient (s tajným kľúčom, uchovávaným na serveri) môže použiť tok autorizačného kódu, alebo `client_credentials`, ktorý sa správa ako API kľúč pre daný projekt.

## Udržiavanie synchronizácie vášho backendu

Prihlasujte sa na odber webhookov namiesto opakovaného pýtania sa (polling). Dodávky sú podpísané (`Anpheros-Signature`, HMAC-SHA256 nad časovou značkou a telom), doručené aspoň raz a potenciálne v nesprávnom poradí; deduplikujte podľa ID udalosti a ignorujte zastarané verzie.

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

## Spracovanie chýb a limitov

- `404` považujte za „pre vás neviditeľné“, nikdy nie ako dôkaz, že záznam neexistuje.
- `403` znamená, že poverenie existuje, ale nemusí to umožňovať – chýbajúci rozsah (scope) alebo zdroj napísaný inou organizáciou.
- `429` prichádza s `Retry-After`; SDK čakajú a automaticky sa pokúšajú znova, rovnako ako pri `5xx`.
- Uchovávajte `Anpheros-Request-Id` neúspešných volaní pre podporu.

[Chyby](https://developers.anpheros.com/sk/guides/errors) · [Limity a obmedzenia rýchlosti](https://developers.anpheros.com/sk/guides/limits)

## Často kladené otázky

### Akú databázu by mala používať lekárska aplikácia?
Takú, ktorá uchováva lekárske údaje v štandardizovanej, verzii a riadi prístup na základe pacienta. Anpheros je spravovaná zdravotnícka databáza postavená na HL7 FHIR R4: záznam každého pacienta je verzovaný a vyhľadávateľný, každý zápis nesie pôvod a aplikácia vidí pacienta iba vtedy, ak vytvorila záznam alebo pacient súhlasil. Vaša vlastná databáza uchováva zvyšné údaje vášho produktu – účty, fakturáciu, obsah. O kompromisoch pri navrhovaní vlastných tabuliek namiesto toho si prečítajte [FHIR vs. vlastná lekárska databáza](https://developers.anpheros.com/sk/guides/fhir-vs-custom-database).

### Existuje bezplatná databáza pre lekárske aplikácie?
Áno. Sandbox Anpheros je bezplatný: prihláste sa pomocou Google, získajte kľúč jedným kliknutím a váš projekt získa vlastných 30 syntetických pacientov a až 10 000 zápisov denne. Produkcia začína od 99 € mesačne za 2 500 pacientov, s prvým mesiacom zdarma; prístup do produkcie je pre overené organizácie s podpísanou dohodou o spracovaní údajov. Pozrite si [Cenník](https://developers.anpheros.com/sk/guides/pricing).

### Môžem uchovávať reálne údaje pacientov v bezplatnom sandboxe?
Nie. Sandbox je určený len pre syntetické údaje: každý sandbox projekt získa svojich vlastných syntetických pacientov a sandbox kľúče sa nedostanú do produkcie. Záznamy reálnych pacientov patria do produkčného projektu.

## Súvisiace

- [FHIR vs. vlastná lekárska databáza](https://developers.anpheros.com/sk/guides/fhir-vs-custom-database): kedy navrhnúť vlastné tabuľky a kedy použiť FHIR
- [Ako vytvoriť zdravotnícke API s TypeScript](https://developers.anpheros.com/sk/guides/healthcare-api-typescript): podrobný návod s Express
- [Ako vytvoriť zdravotnícku aplikáciu s Flutterom](https://developers.anpheros.com/guides/healthcare-app-flutter): podrobný návod s Dart SDK
- [Vývoj zdravotníckeho softvéru](https://developers.anpheros.com/sk/guides/healthcare-software)
- [Vytvorenie zdravotníckej aplikácie](https://developers.anpheros.com/sk/guides/build-a-healthcare-app)
- [Architektúra](https://developers.anpheros.com/sk/guides/architecture)
- [API pre lekárske dáta](https://developers.anpheros.com/sk/guides/medical-data-api)
- [SDK](https://developers.anpheros.com/sk/guides/sdks)
