# Backend και βάση δεδομένων ιατρικής εφαρμογής

> Τι πρέπει να διαχειρίζεται ένα backend ιατρικής εφαρμογής και η βάση δεδομένων του, ποια μέρη παρέχει η Anpheros ως διαχειριζόμενη βάση δεδομένων υγειονομικής περίθαλψης, τι παραμένει στο δικό σας backend, τρεις τρόποι σύνδεσης και πώς να παραμένετε συγχρονισμένοι με webhooks.

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

**Το backend ιατρικής εφαρμογής είναι η πλευρά του διακομιστή (server-side) μιας εφαρμογής υγειονομικής περίθαλψης: αποθηκεύει δεδομένα ασθενών, επιβάλλει ποιος μπορεί να τα δει, διατηρεί ιστορικό αλλαγών και επικοινωνεί με εργαστήρια, κλινικές και άλλες υπηρεσίες.** Με την Anpheros, το ιατρικό μέρος αυτού του backend — η βάση δεδομένων υγειονομικής περίθαλψης που περιέχει το αρχείο κάθε ασθενούς, με το ιστορικό του, τη συγκατάθεση, την προέλευση, τον έλεγχο, την εισαγωγή εργαστηριακών αποτελεσμάτων και τα συμβάντα — παρέχεται από την πλατφόρμα μέσω ενός API, και το δικό σας backend διατηρεί μόνο ό,τι είναι συγκεκριμένο για το προϊόν σας.

## Τι πρέπει να διαχειρίζεται ένα ιατρικό backend

| Ευθύνη | Γιατί είναι δύσκολο στην υγειονομική περίθαλψη | Με το Anpheros |
|---|---|---|
| Ένα ιατρικό μοντέλο δεδομένων | δεκάδες είδη δεδομένων, το καθένα με τυποποιημένους κωδικούς | HL7 FHIR R4, 26 τύποι πόρων, LOINC / ICD-10 / ATC / UCUM |
| Διαχείριση εκδόσεων | τα ιατρικά δεδομένα διορθώνονται, ποτέ δεν αντικαθίστανται σιωπηλά | κάθε ενημέρωση είναι μια νέα έκδοση· `If-Match` για υπό όρους ενημερώσεις |
| Έγγραφα | τα πρωτότυπα πρέπει να παραμένουν αμετάβλητα και ανιχνεύσιμα | αμετάβλητα πρωτότυπα με SHA-256, αποθήκευση στην ΕΕ κρυπτογραφημένη με κλειδί που διαχειρίζεται ο πελάτης |
| Έλεγχος πρόσβασης | ανά ασθενή, ανά εφαρμογή, ανά τύπο δεδομένων | απομόνωση έργου, pairwise ids, OAuth scopes με φίλτρα κατηγοριών |
| Συγκατάθεση | ο ασθενής αποφασίζει και μπορεί να αλλάξει γνώμη | χορηγήσεις για 30–365 ημέρες, ανακλητές, κατοπτρισμένες ως FHIR `Consent` |
| Έλεγχος | ασθενείς και ρυθμιστικές αρχές ρωτούν ποιος είδε τι | κάθε ανάγνωση και εγγραφή καταγράφεται και είναι ορατή στον ασθενή |
| Προέλευση | μια τιμή από ένα εργαστήριο δεν είναι μια τιμή που πληκτρολογήθηκε από έναν ασθενή | τύπος συγγραφέα, οργανισμός, επαγγελματίας υγείας και σύστημα πηγής σε κάθε εγγραφή |
| Ενσωματώσεις | τα εργαστήρια στέλνουν CSV, HL7 v2, JSON· οι εφαρμογές χρειάζονται συμβάντα | εισαγωγή εργαστηρίου, συναλλαγές FHIR, υπογεγραμμένα webhooks |
| Ασφαλείς επαναλήψεις | μια διπλή φαρμακευτική αγωγή ή αποτέλεσμα είναι κλινικό σφάλμα | `Idempotency-Key` σε κάθε δημιουργία |
| Δεδομένα δοκιμών | πραγματικοί ασθενείς δεν πρέπει ποτέ να βρίσκονται στην ανάπτυξη | μια βάση δεδομένων sandbox με συνθετικούς ασθενείς |

## Τι παραμένει στο backend σας

- οι **χρήστες και οι λογαριασμοί σας**, και η αντιστοίχιση από κάθε χρήστη στο αναγνωριστικό ασθενούς Anpheros (το αναγνωριστικό ζεύγους που βλέπει το έργο σας).
- **δεδομένα προϊόντος** που δεν είναι ιατρικά: ρυθμίσεις, συνδρομές, περιεχόμενο, προγράμματα υπενθυμίσεων.
- **επιχειρησιακοί κανόνες** — ποιο από το προσωπικό σας μπορεί να δει ποιον ασθενή στο προϊόν σας.
- το **API key**, το οποίο δεν πρέπει ποτέ να συμπεριληφθεί σε μια εφαρμογή για κινητά ή web.

## Τρεις τρόποι σύνδεσης

**1. Το backend σας κατέχει το API key (πιο συνηθισμένο).** Η εφαρμογή σας καλεί το backend σας. Το backend σας καλεί το Anpheros με ένα `sk_live_` κλειδί και βλέπει τους ασθενείς που δημιούργησε το έργο σας.

```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. Η εφαρμογή ενεργεί για τον ασθενή με OAuth.** Για άτομα που έχουν ήδη εγγραφή στο Anpheros, μια εφαρμογή κινητού ή web είναι ένας *δημόσιος* OAuth client με PKCE: το άτομο συναινεί στην φιλοξενούμενη σελίδα και η εφαρμογή λαμβάνει ένα access token 30 λεπτών και ένα περιστρεφόμενο refresh token για αυτήν τη μία εγγραφή. Τα SDK υλοποιούν τη ροή (`OAuthFlow`).

**3. Συνεργάτες server-to-server.** Ένας εμπιστευτικός client (με μυστικό, που διατηρείται σε έναν server) μπορεί να χρησιμοποιήσει τη ροή authorization-code, ή `client_credentials`, η οποία συμπεριφέρεται σαν API key για αυτό το έργο.

## Διατήρηση του backend σας σε συγχρονισμό

Εγγραφείτε σε webhooks αντί για polling. Οι παραδόσεις είναι υπογεγραμμένες (`Anpheros-Signature`, HMAC-SHA256 πάνω σε timestamp και body), τουλάχιστον μία φορά (at-least-once) και πιθανώς εκτός σειράς. Κάντε deduplication με βάση το event id και αγνοήστε παλιές εκδόσεις.

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

## Διαχείριση σφαλμάτων και ορίων

- Αντιμετωπίστε το `404` ως "μη ορατό σε εσάς", ποτέ ως απόδειξη ότι μια εγγραφή δεν υπάρχει.
- Το `403` σημαίνει ότι τα διαπιστευτήρια υπάρχουν, αλλά ενδέχεται να μην επιτρέπουν αυτήν την ενέργεια — μια ελλιπής εμβέλεια (scope) ή ένας πόρος που γράφτηκε από άλλο οργανισμό.
- Το `429` συνοδεύεται από το `Retry-After`· τα SDKs περιμένουν και επαναλαμβάνουν αυτόματα, όπως κάνουν και για το `5xx`.
- Διατηρήστε τα `Anpheros-Request-Id` των αποτυχημένων κλήσεων για υποστήριξη.

[Σφάλματα](https://developers.anpheros.com/el/guides/errors) · [Όρια και όρια ρυθμού (rate limits)](https://developers.anpheros.com/el/guides/limits)

## Συχνές ερωτήσεις

### Ποια βάση δεδομένων πρέπει να χρησιμοποιεί μια ιατρική εφαρμογή;
Μια που διατηρεί ιατρικά δεδομένα σε τυποποιημένη, εκδοτική μορφή και ελέγχει την πρόσβαση ανά ασθενή. Το Anpheros είναι μια διαχειριζόμενη βάση δεδομένων υγειονομικής περίθαλψης, χτισμένη πάνω στο HL7 FHIR R4: η εγγραφή κάθε ασθενούς έχει εκδοτική μορφή και είναι αναζητήσιμη, κάθε εγγραφή φέρει προέλευση, και μια εφαρμογή βλέπει έναν ασθενή μόνο αν δημιούργησε την εγγραφή ή αν ο ασθενής συναίνεσε. Η δική σας βάση δεδομένων διατηρεί τα υπόλοιπα δεδομένα του προϊόντος σας — λογαριασμούς, χρεώσεις, περιεχόμενο. Για τις ανταλλαγές σχεδιασμού των δικών σας πινάκων αντί αυτού, δείτε [FHIR vs. μια προσαρμοσμένη ιατρική βάση δεδομένων](https://developers.anpheros.com/el/guides/fhir-vs-custom-database).

### Υπάρχει δωρεάν βάση δεδομένων για ιατρικές εφαρμογές;
Ναι. Το sandbox του Anpheros είναι δωρεάν: συνδεθείτε με το Google, αποκτήστε ένα κλειδί με ένα κλικ, και το έργο σας αποκτά τους δικούς του 30 συνθετικούς ασθενείς και έως 10 000 εγγραφές την ημέρα. Η παραγωγή ξεκινά από €99 το μήνα για 2.500 ασθενείς, με τον πρώτο μήνα δωρεάν· η πρόσβαση στην παραγωγή είναι για επαληθευμένους οργανισμούς με υπογεγραμμένη συμφωνία επεξεργασίας δεδομένων. Δείτε [Τιμολόγηση](https://developers.anpheros.com/el/guides/pricing).

### Μπορώ να διατηρήσω πραγματικά δεδομένα ασθενών στο δωρεάν sandbox;
Όχι. Το sandbox είναι μόνο για συνθετικά δεδομένα: κάθε έργο sandbox αποκτά τους δικούς του συνθετικούς ασθενείς, και τα κλειδιά του sandbox δεν μπορούν να φτάσουν στην παραγωγή. Οι πραγματικές εγγραφές ασθενών ανήκουν σε ένα έργο παραγωγής.

## Σχετικά

- [FHIR vs. προσαρμοσμένη ιατρική βάση δεδομένων](https://developers.anpheros.com/el/guides/fhir-vs-custom-database): πότε να σχεδιάσετε τους δικούς σας πίνακες και πότε να χρησιμοποιήσετε το FHIR
- [Πώς να δημιουργήσετε ένα API υγειονομικής περίθαλψης με TypeScript](https://developers.anpheros.com/el/guides/healthcare-api-typescript): οδηγός βήμα προς βήμα με το Express
- [Πώς να δημιουργήσετε μια εφαρμογή υγειονομικής περίθαλψης με Flutter](https://developers.anpheros.com/el/guides/healthcare-app-flutter): οδηγός βήμα προς βήμα με το Dart SDK
- [Ανάπτυξη λογισμικού υγειονομικής περίθαλψης](https://developers.anpheros.com/el/guides/healthcare-software)
- [Δημιουργία εφαρμογής υγειονομικής περίθαλψης](https://developers.anpheros.com/el/guides/build-a-healthcare-app)
- [Αρχιτεκτονική](https://developers.anpheros.com/el/guides/architecture)
- [API ιατρικών δεδομένων](https://developers.anpheros.com/el/guides/medical-data-api)
- [SDKs](https://developers.anpheros.com/el/guides/sdks)
