Pular para o conteúdo

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ída

API disponível para integrações piloto. Para operadoras, laboratórios e quem integra dados de saúde.

DOCUMENTO → DADO

01 / O DOCUMENTO

Laudo laboratorialPDF
Apolipoproteína B112 mg/dL

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
PDF, JPEG ou PNGProcessamento assíncronoFHIR R4 + LOINC quando mapeado

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

EXEMPLO FICTÍCIO · SEM DADOS DE PACIENTES

Laboratório demonstrativo

Análises clínicas · laudo de resultados

BIOQUÍMICA

Apolipoproteína B

Resultado

112 mg/dL

Valor de referência

Até 90 mg/dL

Faixa de referência reproduzida apenas para este exemplo de integração.

Documento fictício · sem validade clínicaPágina 1 de 1
PDF originalPDF digitalizadoFoto JPEG ou PNG

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

application/fhir+json
{
  "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
  }
}
BundlePatientDiagnosticReportObservation[]Specimen?

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.

260

biomarcadores modelados no catálogo

225

com código LOINC atribuído (86,5%)

203

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.

POST /v1/extractions202 Accepted

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.

01

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.

1884-6Apolipoproteína B
02

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.

PatientDiagnosticReportObservationSpecimen?
03

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.

LA6577-6260385009Negativo
04

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).

sa-east-1

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

    npmGitHub

  • @precisa-saude/fhir-pdf

    Licença Apache 2.0

    Leitura da camada de texto do PDF do laudo

    npmGitHub

  • @precisa-saude/fhir-ocr-utils

    Licença Apache 2.0

    Ancoragem de biomarcador em texto já extraído

    npmGitHub

  • @precisa-saude/fhir-rnds

    Licença Apache 2.0

    Cliente da RNDS com mTLS

    npmGitHub

  • @precisa-saude/fhir-rnds-sandbox

    Licença Apache 2.0

    Mock local da RNDS. Sem certificado ICP-Brasil, sem credenciamento no DATASUS

    npmGitHub

TypeScript
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.

PDF original, PDF digitalizado ou foto em JPEG ou PNG, em português ou inglês. Fotos contam como uma página. A cobertura varia conforme o formato do laboratório, o conteúdo disponível e a qualidade da captura: página abaixo do piso de legibilidade é recusada antes de qualquer chamada de modelo, com pedido de nova captura.

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.

Ao enviar, você concorda com nossa Política de Privacidade.