AnpherosAnpheros PlatformDevelopers

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

Crea un'app sanitaria

Tutorial: usa Anpheros come backend per i dati medici di un'app sanitaria — pazienti, misurazioni, condizioni, farmaci, documenti, esami, consenso, webhook e SDK.

Questo tutorial mostra come un'applicazione sanitaria o medica può utilizzare Anpheros Platform come suo backend di dati medici: dove vengono archiviati i dati dei pazienti, come vengono letti e scritti, come vengono collegati altri sistemi e come il paziente mantiene il controllo. Ogni chiamata seguente fa parte dell'API pubblica (riferimento).

Cosa stai costruendo

Un'app tipica rivolta al paziente — un tracker di condizioni croniche, un'app per la salute familiare, un compagno di monitoraggio remoto — deve:

  1. mantenere un record per paziente: misurazioni, condizioni, farmaci, documenti;
  2. visualizzare quel record come elenchi e una timeline;
  3. accettare dati da altre fonti (dispositivi, laboratori, cliniche);
  4. condividere parti del record, con il consenso del paziente;
  5. reagire quando qualcosa cambia.

Con Anpheros la tua app mantiene i propri utenti, schermate e logica di business, delegando il record medico alla piattaforma:

Mobile / web app ──► your backend ──► Anpheros Platform API ──► FHIR R4 record of each patient
                         ▲                                              │
                         └──────────── signed webhooks ◄────────────────┘

Il tuo backend detiene la chiave API; l'app comunica con il tuo backend. (Le app che agiscono per un paziente che ha già un record Anpheros utilizzano OAuth invece — vedi passo 7.)

1. Ottenere una chiave sandbox

La sandbox è self-service: accedi con Google nella dashboard (https://platform.anpheros.com/dashboard/) e premi Get a sandbox key. Le chiavi sandbox iniziano con sk_test_ e possono accedere solo al database sandbox, dove il tuo progetto ha già la propria copia di 30 pazienti sintetici.

export BASE=https://platform.anpheros.com
export KEY=sk_test_…
curl $BASE/v1/patients -H "Authorization: Bearer $KEY"

2. Creare un paziente

Ogni utente della tua app ottiene un record paziente di proprietà del tuo progetto.

curl -X POST $BASE/v1/patients -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -H "Idempotency-Key: $(uuidgen)" \
     -d '{"given": "Elena", "family": "Ionescu", "birth_date": "1985-09-03", "gender": "female"}'

La risposta contiene il paziente id (il tuo identificatore per questa persona — altri progetti ne vedono uno diverso) e il suo riferimento fhir.

3. Scrivere misurazioni, condizioni e farmaci

Indica chi fornisce i dati con author_type: patient, practitioner, device, import o ai. Se lo ometti, la piattaforma registra import, mai patient per presunzione.

# a blood-pressure reading from a connected device (LOINC panel with two components)
curl -X POST $BASE/v1/patients/$PID/observations -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -H "Idempotency-Key: $(uuidgen)" -d '{
  "code": "85354-9", "display": "Blood pressure panel", "category": "vital-signs",
  "effective_at": "2026-09-28T08:00:00Z", "author_type": "device",
  "components": [
    {"code": "8480-6", "display": "Systolic", "value": 128, "unit": "mm[Hg]"},
    {"code": "8462-4", "display": "Diastolic", "value": 82, "unit": "mm[Hg]"}
  ]}'

# a diagnosis (ICD-10 by default)
curl -X POST $BASE/v1/patients/$PID/conditions -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"code": "I10", "display": "Essential hypertension", "onset": "2024-03-01", "author_type": "practitioner"}'

# a medication (ATC by default)
curl -X POST $BASE/v1/patients/$PID/medications -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"display": "Amlodipine 5 mg", "code": "C08CA01", "dosage": "1 tablet in the morning", "start": "2024-03-01", "author_type": "patient"}'

Categorie di osservazione: vital-signs, laboratory, symptom, activity, survey, exam, imaging, social-history. Ogni scrittura viene memorizzata come una risorsa FHIR e ottiene automaticamente una voce Provenance.

4. Archiviazione dei documenti

# create the document, then upload the bytes
curl -X POST $BASE/v1/patients/$PID/documents -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"title": "Blood tests 2026-09-14", "kind": "lab_report", "content_type": "application/pdf", "date": "2026-09-14"}'
curl -X PUT $BASE/v1/documents/$DOC/content -H "Authorization: Bearer $KEY" -H 'content-type: application/pdf' --data-binary @report.pdf

L'originale è immutabile dopo il caricamento; i valori estratti da esso possono puntare nuovamente ad esso con derived_from.

5. Leggere nuovamente il record

curl "$BASE/v1/patients/$PID/observations?category=vital-signs&limit=20" -H "Authorization: Bearer $KEY"
curl "$BASE/v1/patients/$PID/medications?status=active" -H "Authorization: Bearer $KEY"
curl "$BASE/v1/patients/$PID/timeline?from=2026-06-01" -H "Authorization: Bearer $KEY"   # everything, chronologically

Quando hai bisogno del modello FHIR completo, gli stessi dati sono disponibili su /fhir/R4 con gli stessi ID (API FHIR R4).

6. Collega laboratori e dispositivi

7. Raggiungere un record che il paziente possiede già (OAuth)

Se la persona possiede già un record in Anpheros (ad esempio tramite Anpheros Daily), la tua app può richiedere l'accesso invece di crearne uno nuovo: registra un'applicazione, invia la persona alla pagina di consenso con gli scope di cui hai bisogno, scambia il codice per i token e chiama l'API con l'access token. Il paziente sceglie la durata e può revocare l'accesso in qualsiasi momento. Dettagli: Authentication and OAuth.

8. Reagire alle modifiche con le webhook

curl -X POST $BASE/v1/webhooks -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"url": "https://your.app/anpheros/hook", "events": ["resource.created", "consent.revoked"]}'

Verificare l'header Anpheros-Signature di ogni consegna (Webhook).

9. Utilizzare un SDK

Lo stesso flusso in TypeScript:

import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });
const { data: patients } = await anpheros.patients.list();
const vitals = await anpheros.observations.list(patients[0].id, { category: 'vital-signs', limit: 20 });

Un client Dart / Flutter con la stessa struttura è disponibile come anpheros_sdk (SDK).

Prima di andare in produzione

Correlati

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