Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Criar uma aplicação de saúde
Tutorial: usar a Anpheros como backend de dados médicos de uma aplicação de saúde — pacientes, medições, condições, medicamentos, documentos, laboratórios, consentimento, webhooks e SDKs.
Este tutorial demonstra como uma aplicação de saúde ou médica pode utilizar a Plataforma Anpheros como o seu backend de dados médicos: onde os registos dos pacientes são armazenados, como são lidos e escritos, como outros sistemas são conectados e como o paciente mantém o controlo. Cada chamada abaixo faz parte da API pública (referência).
O que está a construir
Uma aplicação típica para o paciente — um rastreador de doenças crónicas, uma aplicação de saúde familiar, um companheiro de monitorização remota — precisa de:
- manter um registo por paciente: medições, condições, medicamentos, documentos;
- apresentar esse registo como listas e uma linha cronológica;
- aceitar dados de outras fontes (dispositivos, laboratórios, clínicas);
- partilhar partes do registo, com o consentimento do paciente;
- reagir quando algo muda.
Com o Anpheros, a sua aplicação mantém os seus próprios utilizadores, ecrãs e lógica de negócio, e delega o registo médico para a plataforma:
Mobile / web app ──► your backend ──► Anpheros Platform API ──► FHIR R4 record of each patient
▲ │
└──────────── signed webhooks ◄────────────────┘
O seu backend detém a chave da API; a aplicação comunica com o seu backend. (As aplicações que agem em nome de um paciente que já tem um registo Anpheros utilizam OAuth em vez disso — veja o passo 7.)
1. Obter uma chave de sandbox
O sandbox é self-service: inicie sessão com o Google no dashboard (https://platform.anpheros.com/dashboard/) e prima Get a sandbox key. As chaves de sandbox começam com sk_test_ e só podem aceder à base de dados do sandbox, onde o seu projeto já tem a sua própria cópia de 30 pacientes sintéticos.
export BASE=https://platform.anpheros.com
export KEY=sk_test_…
curl $BASE/v1/patients -H "Authorization: Bearer $KEY"
2. Criar um doente
Cada utilizador da sua aplicação obtém um registo de doente propriedade do seu projeto.
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"}'
A resposta contém o doente id (o seu próprio identificador para esta pessoa — outros projetos veem um diferente) e a sua referência fhir.
3. Escrever medições, condições e medicamentos
Indique a origem dos dados com author_type: patient, practitioner, device, import ou ai. Se omitir, a plataforma regista import, nunca patient por defeito.
# 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"}'
Categorias de observação: vital-signs, laboratory, symptom, activity, survey, exam, imaging, social-history. Cada escrita é armazenada como um recurso FHIR e recebe automaticamente uma entrada Provenance.
4. Armazenar documentos
# 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
O original é imutável após o carregamento; os valores que extrai dele podem apontar de volta para ele com derived_from.
5. Ler o registo de volta
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 necessitar do modelo FHIR completo, os mesmos dados estão disponíveis em /fhir/R4 com os mesmos IDs (API FHIR R4).
6. Ligar laboratórios e dispositivos
- Relatórios de laboratório:
POST /v1/patients/{id}/labs/importcom CSV, HL7 v2 ORU^R01 ou JSON transforma um relatório completo em Observações laboratoriais com códigos LOINC (Conector de laboratório). - Dispositivos e wearables: escreva Observações com
author_type: devicee o código LOINC da medição (frequência cardíaca, SpO₂, passos, duração do sono e outros estão listados em Sistemas de códigos FHIR).
7. Aceder a um registo que o paciente já possui (OAuth)
Se a pessoa já mantiver um registo no Anpheros (por exemplo, através do Anpheros Daily), a sua aplicação pode solicitar acesso em vez de criar um novo paciente: registe uma aplicação, envie a pessoa para a página de consentimento com os escopos de que necessita, troque o código por tokens e chame a API com o token de acesso. O paciente escolhe a duração e pode revogar o acesso a qualquer momento. Detalhes: Autenticação e OAuth.
8. Reaja a alterações com webhooks
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"]}'
Verifique o cabeçalho Anpheros-Signature de cada entrega (Webhooks).
9. Utilizar um SDK
O mesmo fluxo em 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 });
Um cliente Dart / Flutter com a mesma estrutura está disponível como anpheros_sdk (SDKs).
Antes de ir para produção
- As chaves de produção (
sk_live_) são emitidas para organizações verificadas com um acordo de processamento de dados assinado. - Leia a página Segurança, privacidade e residência de dados e os limites.
- Trate os erros pelo seu tipo e cite o cabeçalho
Anpheros-Request-Idquando contactar o suporte (Erros).
Relacionado
- Como criar uma API de saúde com TypeScript: tutorial passo a passo com Express
- Como criar uma aplicação de saúde com Flutter: tutorial passo a passo com o SDK Dart
- Como criar uma aplicação de saúde com IA e um backend FHIR: tutorial passo a passo em TypeScript
- Desenvolver com Anpheros
- Backend e base de dados para aplicações médicas
- API de dados médicos
- Desenvolvimento de software de saúde
- Como criar uma aplicação de registo de saúde pessoal (PHR) com FHIR
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card