Precisa Laudos Estruturados
Os dados já estão no laudo. Traga-os para o seu sistema.
Uma API disponível para estruturar laudos laboratoriais em PDF ou foto, em português ou inglês, como FHIR R4. LOINC, unidade normalizada e faixa de referência entram quando o catálogo tem o mapeamento e o laudo traz informação suficiente.
Explorar a entrada e a saídaAPI disponível para integrações piloto. Para operadoras, laboratórios e quem integra dados de saúde.
01 / O DOCUMENTO
02 / A CONEXÃO
Apo B Apolipoproteína B 1884-6
03 / OBSERVATION
FHIR R4- Biomarcador
- Apolipoproteína B
- LOINC
- 1884-6
- Valor
- 112 mg/dL
O problema
O exame que o paciente fez em outro lugar não chega até você.
Seu sistema enxerga o que foi feito na sua rede. O resto chega em PDF, ou não chega.
Negociar laboratório por laboratório
Conectar cada prestador exige acordo bilateral, e o acordo costuma ter contrapartida comercial. O dado que o paciente já tem no e-mail não depende de acordo nenhum.
Cada laboratório escreve diferente
O mesmo marcador aparece com outro nome, outra unidade e outra faixa de referência em cada prestador. Sem normalização, dois laudos não comparam.
PDF não é dado
Layout em coluna, urinálise sem formato comum, DEXA, data em posições diferentes, nome do laboratório às vezes só no logotipo. Ler o texto é a parte fácil.
O payload
O que entra, e o que sai.
Entrada
Laboratório demonstrativo
Análises clínicas · laudo de resultados
BIOQUÍMICA
Apolipoproteína B
112 mg/dL
Até 90 mg/dL
Faixa de referência reproduzida apenas para este exemplo de integração.
Laudos laboratoriais em PDF ou foto, em português ou inglês. A cobertura varia conforme o formato, o conteúdo e a qualidade da captura.
Saída
{
"category": [
{
"coding": [
{
"code": "laboratory",
"display": "Laboratory",
"system": "http://terminology.hl7.org/CodeSystem/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "1884-6",
"display": "Apolipoprotein B [Mass/volume] in Serum or Plasma",
"system": "http://loinc.org"
},
{
"code": "ApoB",
"display": "Apolipoproteína B",
"system": "http://fhir-brasil.dev/biomarker-codes"
}
],
"text": "Apolipoproteína B"
},
"effectiveDateTime": "2026-03-14",
"id": "DEMO-REPORT-001-ApoB",
"interpretation": [
{
"coding": [
{
"code": "H",
"display": "High",
"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation"
}
]
}
],
"performer": [
{
"display": "Laboratório demonstrativo"
}
],
"referenceRange": [
{
"high": {
"code": "mg/dL",
"system": "http://unitsofmeasure.org",
"unit": "mg/dL",
"value": 90
}
}
],
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/DEMO-001"
},
"valueQuantity": {
"code": "mg/dL",
"system": "http://unitsofmeasure.org",
"unit": "mg/dL",
"value": 112
}
}
O Bundle atual reúne Patient, DiagnosticReport, um Observation por biomarcador extraído e Specimen quando o material é mapeado. O JSON mostrado é um trecho, não a resposta inteira.
biomarcadores modelados no catálogo
com código LOINC atribuído (86,5%)
faixas de referência, com variantes por sexo e idade
Contagem regenerada de @precisa-saude/fhir v1.1.0 em 26 de outubro de 2026, pelo gerador que também escreve o README do catálogo: pnpm catalog:counts --json. O catálogo é público e a conferência leva um minuto: biomarkers.ts no fhir-brasil.
O caminho
O caminho do arquivo.
Referência da API
A documentação completa, com todos os códigos de resposta e exemplos em curl, está em docs.precisa-saude.com.br/api.
Etapa 01 de 04
Envio
Você envia um PDF ou uma foto pela API e recebe o identificador do trabalho. A extração continua depois que a requisição termina.
Retenção e persistência
- O serviço não retém dado clínico de forma durável.
- O documento enviado e o resultado gerado existem cifrados apenas enquanto o trabalho está em curso.
- Eles são apagados ao fim do trabalho e, em qualquer hipótese, no máximo 15 minutos após o envio.
- Não há cópia em backup, snapshot ou outra região.
- O que persiste é o registro do trabalho, sem conteúdo clínico: identificador, tenant, finalidade declarada, estado e carimbos de tempo.
Conformidade
Uma linguagem comum para a saúde.
LOINC
Códigos LOINC atribuídos a 225 dos 260 biomarcadores do catálogo (86,5%), com os nomes usados em laudos em português e em inglês. Os seis eixos de cada código são conferidos todo mês no servidor oficial do LOINC, e cada mapeamento tem um registro público de decisão. Sem conceito LOINC correspondente, o marcador permanece sem código.
FHIR R4
A saída é um Bundle com Patient, DiagnosticReport, Observation e Specimen quando mapeado. O perfil BRDiagnosticoLaboratorioClinico é uma referência de interoperabilidade, sem alegação de conformidade completa nesta etapa.
SNOMED CT
O resultado em texto sai codificado. Negativo, reagente, presente, traços e as cruzes da fita de urina, doze respostas no total, levam no mesmo valor o código de resposta do LOINC e o conceito do SNOMED CT, e quem trabalha com qualquer um dos dois lê o Bundle sem tabela de conversão. Resposta fora desse conjunto segue como o texto impresso no laudo.
Dados
Processamento em sa-east-1. O modelo configurado recebe o conteúdo necessário à interpretação sob controles de residência; logging e retenção do provedor fazem parte da validação antes de produção. Atuamos como operador, com finalidade limitada e em contrato, nos termos da LGPD (Lei nº 13.709/2018).
fhir-brasil foi apresentado na LOINC Conference, Colônia, de 6 a 9 de outubro de 2026.
Código aberto
A camada de terminologia é aberta.
O catálogo de biomarcadores, as faixas de referência e a normalização de nomes estão publicados sob Apache 2.0. Dá para auditar antes de qualquer contrato.
@precisa-saude/fhir
Licença Apache 2.0
Tipos FHIR R4, catálogo de biomarcadores com registro de decisão por mapeamento, faixas de referência, normalização de aliases
@precisa-saude/fhir-pdf
Licença Apache 2.0
Leitura da camada de texto do PDF do laudo
@precisa-saude/fhir-ocr-utils
Licença Apache 2.0
Ancoragem de biomarcador em texto já extraído
@precisa-saude/fhir-rnds
Licença Apache 2.0
Cliente da RNDS com mTLS
@precisa-saude/fhir-rnds-sandbox
Licença Apache 2.0
Mock local da RNDS. Sem certificado ICP-Brasil, sem credenciamento no DATASUS
pnpm add @precisa-saude/fhir
import { codeToLoinc, getReferenceRange } from '@precisa-saude/fhir';
codeToLoinc('ApoB');
// '1884-6'
getReferenceRange('ApoB', { sex: 'male', age: 42 });
// { min: 0, max: 90, optimalMin: 0, optimalMax: 70, unit: 'mg/dL',
// kind: 'decision-threshold', source: 'sbc-lipids-2025' }
A faixa impressa no laudo tem precedência no referenceRange. O catálogo funciona como fallback quando o biomarcador tem faixa no catálogo e há contexto suficiente de sexo, idade e gestação; sem isso, a saída não inventa uma faixa.
A extração é privada. O vocabulário não.
Escopo
Os limites, declarados.
- • Não emitimos diagnóstico nem conclusão clínica. A leitura é de quem atende o paciente.
- • Um resultado pode ser partial quando há páginas falhadas ou conteúdo pulado. Esses casos exigem revisão e não devem seguir como resultado final.
- • A resposta separa confiança de leitura e confiança de interpretação. Um código sem correspondência LOINC segura permanece sem LOINC; o serviço não inventa o código.
- • Quem integra define o roteamento, a revisão clínica e o histórico que será mantido depois da entrega.
- • Metadado administrativo que o PDF não carrega, como CNES do executante e identificador do paciente, quem preenche é você.
Perguntas
Antes da primeira reunião.
Contato
Vamos falar de integração.
Conte qual sistema recebe o dado hoje e de onde vêm os laudos que você não consegue ler. Com isso mostramos como esses laudos chegam estruturados no seu sistema.