npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@precisa-saude/datasus-sdk

v2.0.3

Published

TypeScript SDK para microdados DATASUS — FTP cliente com cache, schemas tipados (SIA-PA, CNES-ST), terminologia (IBGE, LOINC, SIGTAP, CBO), labeling e agregações.

Readme

@precisa-saude/datasus-sdk

Toolkit alto-nível para microdados abertos do DATASUS — cliente FTP com cache, schemas tipados, labeling (IBGE, TP_UNID) e agregações prontas para consumo por web apps e CLIs.

Instalação

npm install @precisa-saude/datasus-sdk

Uso (preview)

import { cnes, countBy, findMunicipio, topN } from '@precisa-saude/datasus-sdk';

// Streaming — memória constante
const counts: Record<string, number> = {};
for await (const record of cnes.streamEstabelecimentos({ uf: 'SP', year: 2024, month: 3 })) {
  counts[record.CODUFMUN] = (counts[record.CODUFMUN] ?? 0) + 1;
}

const top10 = topN(counts, 10).map(({ count, key }) => {
  const m = findMunicipio(key);
  return { estabelecimentos: count, municipio: m?.nome, uf: m?.uf };
});

console.log(JSON.stringify(top10, null, 2));

Datasets suportados

  • CNES — Cadastro Nacional de Estabelecimentos de Saúde (ST = estabelecimentos, PF = profissionais)
  • SIA-SUS — Sistema de Informações Ambulatoriais (PA = produção ambulatorial, incluindo procedimentos laboratoriais faturados via SIGTAP). Stream via sia.streamProducaoAmbulatorial + labeling/enriquecimento LOINC em labelProducaoAmbulatorial / enrichWithLoinc.

Mapeamento LOINC↔TUSS↔SIGTAP usado pelo SIA fica no módulo terminology (ver abaixo).

Terminologia LOINC ↔ TUSS ↔ SIGTAP

Módulo terminology fecha a ponte entre o catálogo de biomarcadores LOINC do @precisa-saude/fhir, o padrão TUSS da saúde suplementar (ANS) e os códigos SIGTAP faturáveis pelo SUS.

import {
  listBiomarkers,
  loincToSigtap,
  lookupSigtap,
  lookupTuss,
} from '@precisa-saude/datasus-sdk';

// Biomarcador FHIR → procedimento SUS
const m = loincToSigtap('2085-9'); // Colesterol HDL
// → { loinc: '2085-9', biomarker: { code: 'HDL', display: 'Colesterol HDL' },
//     sigtap: '0202010279', tuss: '40301583', confidence: 'high',
//     source: 'llm-refined', reasoning: '...', noMatchReason: null }

// Nome pt-BR do procedimento SUS
lookupSigtap(m!.sigtap!); // { code: '0202010279', name: 'DOSAGEM DE COLESTEROL HDL' }

// Detalhes TUSS + lista de SIGTAPs equivalentes segundo a ANS
lookupTuss(m!.tuss!);
// → { code: '40301583', name: 'Colesterol (HDL) — pesquisa e/ou dosagem',
//     sigtapEquivalents: [{ code: '0202010279', name: '...', equivalencia: '3' }] }

// Percorrer todos os 164 biomarcadores do catálogo
for (const entry of listBiomarkers()) {
  /* ... */
}

loincToSigtap aceita tanto o código LOINC canônico (2085-9) quanto o código curto do biomarcador (HDL). Quando o LLM não conseguiu decidir, sigtap/tuss vêm null e noMatchReason traz a explicação — útil pra listar biomarcadores sem procedimento SUS equivalente.

Dados derivados de fontes oficiais

Artefatos de terminologia embutidos no pacote, extraídos de fontes abertas:

| Arquivo | Localização | Conteúdo | | ------------------------------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------- | | ans-tuss-sigtap.json | src/terminology/data/ | Mapeamento oficial TUSS ↔ SIGTAP publicado pela ANS (6919 linhas) | | sigtap.json | src/terminology/data/ | Tabela SIGTAP completa (4982 procedimentos) da competência mais recente | | loinc-biomarkers.json | src/terminology/data/ | Mapeamento Biomarcador (LOINC) → TUSS → SIGTAP para os 164 biomarcadores do @precisa-saude/fhir, refinado por LLM | | loinc-tuss-sigtap.json | data/ | Mapeamento fuzzy (sem LLM) — mantido pra auditoria | | loinc-tuss-sigtap.report.md | data/ | Relatório humano-legível do mapeamento fuzzy, pra revisão manual | | loinc-tuss-sigtap.llm.report.md | data/ | Relatório do refinamento LLM (modelo, prompts, decisões) | | fhir-brasil-tuss-audit.md | data/ | Auditoria do BRTUSSProcedimentosLabVS.fsh do fhir-brasil vs ANS oficial | | BRTUSSProcedimentosLabVS.fixed.fsh | data/ | Versão corrigida do VS fhir-brasil com TUSS alinhados à ANS | | BRTUSSProcedimentosLabVS.diff.md | data/ | Diff resumido das correções aplicadas |

Fontes oficiais

  • Tabela TUSS ↔ SIGTAP — publicada pela ANS (Agência Nacional de Saúde Suplementar) em parceria com COPISS e Ministério da Saúde. Trabalho conduzido de 2015 a 2017 sob a norma ISO/TR 12300:2014. Distribuída como MAPEAMENTO TUSS x SIGTAP 2017 04.xlsx.

  • Tabela SIGTAP (Procedimentos SUS) — publicada mensalmente pelo DATASUS:

    • FTP: ftp2.datasus.gov.br:/public/sistemas/tup/downloads/ (TabelaUnificada_YYYYMM_vVVVV.zip)
    • Página: sigtap.datasus.gov.br
  • Biomarcadores LOINC — importados de @precisa-saude/fhir, ver fhir-brasil.

Regenerar

Os dados vêm de fontes externas; quando a ANS ou o DATASUS publicar nova versão, rode:

# 1. Baixa e extrai o XLSX oficial TUSS↔SIGTAP (one-shot; ANS atualiza raramente)
pnpm -F @precisa-saude/datasus-sdk run build:ans-mapping

# 2. Regenera o mapeamento biomarcador→SIGTAP (rápido — consome JSON + biomarkers.ts)
pnpm -F @precisa-saude/datasus-sdk run build:sigtap-mapping

# 3. Gera VS corrigido pra PR upstream no fhir-brasil
pnpm -F @precisa-saude/datasus-sdk run fix:fhir-brasil-tuss

# 4. (Opcional) Refina o mapeamento com LLM via OpenRouter — captura erros
#    semânticos que o fuzzy match comete (Apo A vs Apo B, sangue oculto urina
#    vs fezes, CAC vs cálcio sérico, etc.). Ver /scripts/llm-refine-mapping.ts.
#    Requer OPENROUTER_API_KEY exportada.
pnpm run llm:refine-mapping

Scripts in-package em scripts/ — TypeScript, sem deps externas além das já declaradas (basic-ftp). Parser XLSX nativo (regex sobre OOXML).

Script de refinamento por LLM fica em /scripts/llm-refine-mapping.ts na raiz do monorepo — pode ser reusado em outros contextos (não amarra a terminologia ao pacote core).

Licença

Apache-2.0