Interpretação de antibiograma segundo o BrCAST, para o LEPAC.
Digite os valores de CIM e o sistema devolve a interpretação colorida — Sensível, dose padrão · Sensível, aumentando exposição · Resistente — pronta para copiar no laudo. 27 microrganismos em 10 painéis, com tabelas separadas para urina e outros materiais — 420 linhas de antimicrobiano ao todo.
É um único arquivo HTML. Sem servidor, sem instalação, sem banco de dados. Abre com duplo clique e funciona.
Feito para a Dra. Andressa Sulamita Siqueira Menezes de Brito, biomédica — que faz esse trabalho todo dia no LEPAC, e cuja rotina ensinou o que este sistema precisava ser.
- Abra o
Corte-BrCAST.html - Escolha o microrganismo na lista à esquerda e o material no alto
- Digite os CIM —
Enterpula para o próximo campo,Shift+Entervolta - Copiar tabela leva a tabela formatada para colar no outro sistema
O campo aceita ≤0,25, >8, 16/2 ou só o número. Digitar <= ou >= vira ≤ / ≥ sozinho.
A coluna Corte aplicado mostra qual regra decidiu cada linha — ela não vai junto quando você copia.
Colar / importar preenche vários resultados de uma vez, colados do outro sistema.
O botão Colar / importar aceita o relatório do equipamento colado direto: abrir o PDF, selecionar tudo, copiar, colar. Não é preciso limpar cabeçalho nem recortar a tabela.
Aceita também o CSV que o equipamento exporta, escolhido como arquivo. Ele
vem com mais de cinquenta colunas por linha — número da diluição, preço,
marcadores de conflito, texto de assinatura — e o nome do antimicrobiano
repetido. O programa procura o nome primeiro e só então o CIM que vem depois
dele; é isso que impede o campo 1,00 do começo da linha, que tem cara de CIM,
de entrar como resultado.
A interpretação que vem no relatório é descartada — quem interpreta é o corte do laboratório. Só o valor de CIM é aproveitado.
O nome do antimicrobiano casa mesmo escrito diferente: separador da combinação
(piperacilina-tazobactam = Piperacilina/Tazobactam), ordem dos componentes
(sulfametoxazol-trimetoprima = Trimetoprima/Sulfametoxazol), terminação
-a/-o (ciprofloxacina = ciprofloxacino) e sinônimos (clavulanato =
ácido clavulânico).
O que não casa sozinho é a via: o equipamento manda Cefuroxima sem dizer
se é oral ou intravenosa, e os cortes são diferentes. Essas linhas caem na
prévia para escolha, e a escolha fica gravada — na importação seguinte já
casam sozinhas.
Nada entra sem a prévia, e o que entra fica marcado como não conferido.
Em alguns casos o antimicrobiano não deve ser mostrado. No fim de cada linha há um olho: aberto, o antimicrobiano sai no laudo; cortado, fica de fora do que é copiado. Um clique alterna.
O olho fica apagado até o mouse passar pela linha. Sumindo de vez, ninguém descobriria que existe; aceso o tempo todo, disputaria atenção com o resultado. Já o olho cortado fica sempre nítido.
A linha continua na tela, riscada e apagada, mas com o valor e a interpretação à vista. Esconder da tela deixaria a própria pessoa sem saber o que tirou.
Enquanto houver alguma fora, um aviso fica no topo com o botão Incluir todos de volta, e o resumo ganha a contagem. Ao copiar, a mensagem diz quantas ficaram de fora.
A escolha vale só para a amostra atual: Nova amostra e Limpar tudo devolvem todas. Guardar entre pacientes seria pior que o problema — um antimicrobiano sumiria do laudo para sempre porque alguém esqueceu de reativar, e falta de linha ninguém percebe.
Ficam abaixo do quadro, na própria tela do laudo: digita parte do texto ou
o código — sonda, ESBL, Bac 12 — escolhe as que valem para aquela amostra e elas saem coladas junto quando se clica em Copiar tabela.
Antes era preciso copiar o quadro, colar, voltar ao programa, achar a
observação, copiar de novo e colar embaixo — a cada observação.
Saem como texto corrido logo abaixo do quadro, sem moldura — observação é texto de laudo, não mais uma tabela para quem lê o resultado.
Valem só para a amostra atual, como os valores: Nova amostra e Limpar tudo zeram.
Para editar as observações, elas vivem numa segunda aba da mesma planilha,
chamada exatamente observacoes, com as colunas codigo e texto. É
opcional: sem a aba valem as que vieram no programa.
Para montar tudo, use Gerar planilha na tela Fonte dos cortes: sai um
corte-brcast.xlsx com as duas abas já criadas e nomeadas — sobe no Drive,
abre com Planilhas e pronto.
O codigo é o que amarra a observação à amostra. Mudando o código de uma
observação já escolhida, ela aparece como não encontrada em vez de trocar de
texto em silêncio.
Os CIM digitados, as marcas de não conferido e o histórico ficam no navegador daquela máquina. Não são compartilhados, não saem dali, e sincronizar não apaga amostra em andamento.
Nenhum dado de paciente sai do computador. O programa não envia nada para lugar nenhum.
Os valores de corte vêm de uma planilha do Google, para que todos os computadores interpretem igual. Sem isso, cada máquina teria sua cópia e elas divergiriam em silêncio — a mesma cepa interpretada de dois jeitos, sem ninguém perceber.
Num computador ainda sem planilha, a tela Fonte dos cortes pergunta por onde começar, porque os dois caminhos não se parecem: quem já tem o link precisa de um passo, quem vai montar a planilha precisa de quatro. Antes a tela cobrava o manual inteiro dos dois.
Para montar do zero:
- Na tela Fonte dos cortes, escolha Ainda não existe planilha e clique em Gerar planilha
- Suba o
corte-brcast.xlsxno Drive e abra com Google Planilhas - Compartilhar ▸ Acesso geral ▸ Qualquer pessoa com o link ▸ Leitor
- Copie o endereço da barra do navegador e cole na tela Fonte dos cortes
O arquivo já vem com as duas abas prontas — cortes e observacoes — e com os
cortes marcados como texto. Não há nada para criar, nomear ou formatar.
Sobre a coluna do meio. Confirmado na prática: com o
.xlsxnão é preciso formatar nada. Antes o programa gerava CSV, e havia um passo que não podia ser pulado: formatar as colunas de corte como texto. A coluna do meio mistura números (4,0,5) com texto (≤8,2 a 4), e o Google decidia que a coluna era numérica e deixava de enviar todo valor escrito com texto — 94 cortes que não chegariam. O programa detecta e recusa a sincronização nesse caso, então nunca se perdeu corte calado; mas era um passo fácil de esquecer. O.xlsxdeclara cada célula e cada coluna com formato Texto, então o passo manual não é mais necessário — inclusive para o corte que você digitar depois, numa célula hoje vazia.A rede de segurança continua no lugar de qualquer forma: se a coluna chegar como número, o programa recusa a sincronização e diz o que fazer, em vez de aceitar meia tabela.
"Qualquer pessoa com o link" libera a planilha inteira, não só a aba dos cortes. Valores de corte e nomes de antimicrobiano são informação técnica pública do BrCAST e podem ficar assim. Dado de paciente, não — se houver qualquer aba com resultado de amostra, faça uma planilha separada.
As três primeiras definem o painel: a planilha diz quais microrganismos
existem, em que material, e com que antimicrobianos. Tirar todas as linhas de
uma bactéria tira a bactéria da lista; trocar o nome dela na coluna organismo
renomeia; um nome que não estava lá aparece sozinho, sem mexer no programa. O
que vem embutido no arquivo são os cortes de fábrica — valem enquanto não
houver planilha configurada.
Duas coisas continuam vindo do arquivo, porque não são corte: a abreviação da
barra lateral (E. coli) e o grupo em que a bactéria aparece nela
(Não-fermentadores). Bactéria que só existe na planilha ganha abreviação
automática (Providencia stuartii → P. stuartii) e o grupo da própria
família.
| Coluna | Para que serve |
|---|---|
familia |
Grupo do painel — Enterobactérias, Staphylococcus… |
material |
Urina, Outros materiais, Todos os materiais |
organismo |
Nome por extenso — Escherichia coli. Acento e maiúscula não importam; abreviação sim: E. coli vira uma bactéria diferente de Escherichia coli. É esta coluna que cria, renomeia e apaga microrganismo |
ordem |
Posição da linha na tabela do laudo |
tipo |
cim, triagem ou titulo |
antimicrobiano |
Nome que aparece no laudo |
sensivel_dose_padrao |
Corte S. Ex.: ≤8 |
aumentando_exposicao |
Faixa intermediária. Ex.: 2 a 4 ou 4 |
resistente |
Corte R. Ex.: >8 |
versao (opcional) |
Edição do BrCAST — ex.: BrCAST 2024. Basta uma célula preenchida, em qualquer linha. Aparece na barra lateral |
cartao (opcional) |
Cartão do equipamento — ex.: NMIC ID 471. Uma célula por painel, em qualquer linha dele. Aparece no supratítulo |
Além dessas, a planilha pode ter uma segunda aba chamada observacoes, com
as colunas codigo e texto — veja Observações do laudo.
- O programa lê a planilha toda vez que abre
- Editou um corte? Quem já estava com o arquivo aberto clica em Sincronizar agora
- Enquanto houver planilha configurada, a tela Valores de referência fica somente leitura — editar ali recriaria a divergência que a planilha existe para eliminar
- Sem internet, o programa usa a última cópia boa e mostra a data no topo
O programa recusa a sincronização inteira e diz a linha e o motivo. Nunca aplica pela metade: um microrganismo que perde antibióticos em silêncio é pior que uma sincronização que falha visivelmente.
| Mensagem | O que fazer |
|---|---|
| "Não consegui abrir a planilha" | Compartilhamento não está em Qualquer pessoa com o link. Teste numa janela anônima |
| "a coluna … está como número" | Formate as colunas de corte como Texto simples e sincronize de novo. Os valores não se perderam — só não estavam sendo enviados |
| "tudo numa coluna só" | Um CSV foi colado sem separador. Dados ▸ Dividir texto em colunas, vírgula. Não acontece com o .xlsx |
| Bactéria repetida na lista | A mesma bactéria escrita de dois jeitos na coluna organismo. Cada grafia vira um microrganismo. A situação da tela Fonte dos cortes lista, em Só na planilha, os nomes que não vêm de fábrica |
| "Faltam colunas" | O link aponta para a aba errada, ou a primeira linha não é o cabeçalho |
Cada PC precisa do arquivo e do link colado uma vez.
Numa pasta de rede é mais prático: uma cópia só do Corte-BrCAST.html, um atalho na área de trabalho de cada máquina. Versão nova = trocar um arquivo.
Não adianta pôr a planilha na pasta de rede. Por segurança, o navegador proíbe uma página aberta do disco de ler outros arquivos — a mesma regra que impede um anexo de e-mail de varrer o seu computador. Os cortes precisam vir da planilha, que é acesso à internet e autorizado pelo servidor do Google.
Cada máquina tem a sua cópia, e uma cópia velha não avisa que é velha. Por isso, ao abrir, o programa pergunta uma vez ao site se existe versão mais nova publicada. Se existir, acende um aviso âmbar no rodapé da barra lateral, com link para baixar. Sem internet, nenhum aviso aparece — e é o comportamento certo, porque o programa continua inteiro.
Ele só pergunta. Não baixa nada, não se reescreve e não muda nenhum corte: o que decide laudo é apenas o que está dentro do arquivo que você tem na mão.
A tela Sobre o programa, na barra lateral, traz o endereço para baixar a versão nova, a autoria e o aviso de uso. Existe por causa do arquivo solto: ele viaja por pendrive e mensagem e chega em máquina onde ninguém sabe de onde veio. O pé da barra mostra o endereço o tempo todo; o resto fica nessa tela, fora do caminho de quem está laudando.
A versão instalada fica no pé da barra lateral, em cinza claro. É por ali que se confere se a atualização entrou — sem ela, o aviso some ao ser clicado e ninguém sabe dizer se algo aconteceu.
Ao publicar uma versão nova, subir o mesmo número nos três lugares:
Corte-BrCAST.html |
a constante VERSAO_APP |
version.json |
o campo versao |
sw.js |
a constante VERSAO |
Os dois primeiros comandam o aviso: se um ficar para trás, ele mente — ou some
quando devia aparecer, ou aparece para sempre em quem já está atualizado. O
terceiro comanda a troca nas máquinas instaladas: o navegador só percebe que
há versão nova porque o sw.js mudou de conteúdo. Sem mexer nele, quem
instalou continua na versão antiga.
O campo notas, no version.json, não é changelog: é a frase que aparece ao
parar o mouse sobre o aviso, e quem lê é quem usa o programa. Escrever o que
mudou na tela, com as palavras da bancada — "o olho de tirar do laudo voltou a
aparecer" —, não o que mudou no código.
Correções só na página de entrada (index.html) aparecem sem precisar de
número novo: ela é buscada da rede a cada visita, com o cache apenas como
reserva para quando não há rede. O programa é o contrário — vem do disco,
para abrir instantâneo e sem internet —, e por isso depende do número.
O Chrome instala a página como programa: vira ícone na área de trabalho,
abre em janela própria, funciona sem internet igual ao arquivo — e troca de
versão sozinho. O ícone vem do manifest.webmanifest; ninguém precisa criar
atalho nem escolher figura.
- Abrir https://eacarva.github.io/corte-brcast/
- Clicar no ícone de instalar na barra de endereço (ou menu ⋮ ▸ Transmitir, salvar e compartilhar ▸ Instalar página como app)
- Confirmar em Instalar
Precisa de internet uma vez, só para instalar. Depois disso a máquina tem tudo em disco.
Logo depois de instalar, o Chrome abre a janela do programa na página em que a pessoa estava — a de download. Não deu errado, e essa página se desvia sozinha para o programa. Nas aberturas seguintes, pelo ícone, já entra direto.
Se o Chrome do laboratório for gerenciado pela TI, o administrador consegue instalar em todas as máquinas de uma vez por política, sem ninguém clicar em nada — vale perguntar.
O botão de instalar só aparece quando a instalação é mesmo possível. Ele não aparece em janela anônima (o Chrome não instala nada ali), no Firefox do computador (não instala programas assim), nem quando o app já está instalado. Testar em anônima dá um falso negativo — foi o primeiro engano ao verificar isto.
Se nenhum caminho funcionar, o arquivo solto continua sendo a saída, e é exatamente para isso que ele existe.
Ícone apagado por engano não desinstala nada: o programa continua na
máquina, só o atalho se perdeu. Para trazer de volta, em chrome://apps,
botão direito em Corte BrCAST ▸ Criar atalhos…. A página de entrada
mostra esse caminho sozinha quando percebe que o app já está instalado.
- Deixe o
corte-brcast.icojunto do programa - Botão direito na área de trabalho → Novo ▸ Atalho → aponte para o
Corte-BrCAST.html - Botão direito no atalho → Propriedades ▸ Alterar ícone ▸ Procurar → escolha o
.ico
Corte-BrCAST.html |
O programa. É só isto que precisa ser distribuído |
version.json |
Última versão publicada. É o que o programa consulta para avisar |
sw.js |
Faz a instalação funcionar offline e trocar de versão sozinha |
manifest.webmanifest |
Nome, cores e ícones do programa instalado |
icon-*.png |
Ícones do programa instalado, gerados do .svg |
index.html |
Página de entrada em eacarva.github.io/corte-brcast |
corte-brcast.ico |
Ícone para o atalho do Windows, 7 tamanhos |
corte-brcast.svg |
Fonte do ícone, para editar |
Sem dependências, sem build, sem back-end. A única requisição de rede é a leitura da planilha, feita por <script> no endpoint gviz do Google — não por fetch, porque um arquivo aberto do disco tem origem null e o Google só devolve cabeçalho CORS quando existe uma origem para espelhar. Medido: fetch do disco é bloqueado, <script> passa. É o que permite o arquivo funcionar com duplo clique, sem servidor.
Feito para a Dra. Andressa Sulamita Siqueira Menezes de Brito, biomédica no LEPAC. O sistema existe por causa do trabalho dela, e foi a rotina dela que definiu o que ele precisava fazer.
Elisson Andrade de Carvalho — concepção e direção do projeto: definiu o que o sistema deveria fazer, reuniu os dados de referência, conduziu as decisões de arquitetura e testou cada versão contra a rotina real do laboratório.
Implementação em par com Claude (Anthropic).
Licença MIT — veja LICENSE.
Ferramenta de apoio à interpretação. A conferência e a responsabilidade pelo resultado liberado são do profissional responsável.