CONTA_PACIENTE_RESUMO: por que o resumo da conta pode somar duas vezes
O Tasy refaz o resumo da conta a cada recálculo. Quem carrega CONTA_PACIENTE_RESUMO como uma tabela comum acaba com itens que já não existem. O exemplo de uma conta de R$ 90 que aparece como R$ 120 ou R$ 210, e como corrigir.
CONTA_PACIENTE_RESUMO é a tabela mais usada para o faturamento num BI sobre o Tasy: tem os itens de cada conta já agrupados, com quantidade, valor e as colunas de custo. É também a origem mais comum de uma reclamação conhecida: o faturamento do mês no BI fica acima do relatório do Tasy, e a diferença cresce com o tempo. Quase sempre o motivo é o mesmo: o resumo foi carregado como se fosse uma tabela comum.
O que é o resumo da conta
Durante o atendimento, o Tasy registra cada procedimento em PROCEDIMENTO_PACIENTE e cada material ou medicamento na tabela de materiais do atendimento. O resumo é a consolidação desses lançamentos por conta, com os campos que a gestão usa:
| Campo | Para que serve |
|---|---|
| NR_INTERNO_CONTA | A conta a que o item pertence |
| NR_SEQUENCIA | A sequência do item dentro do resumo |
| CD_PROCEDIMENTO, IE_ORIGEM_PROCED | O procedimento e a tabela de origem |
| CD_MATERIAL | O material ou medicamento |
| CD_ESTRUTURA_CONTA | O grupo da estrutura da conta (diárias, taxas, mat/med, honorários) |
| CD_SETOR_ATENDIMENTO | O setor que gerou o item |
| QT_RESUMO, VL_PROCEDIMENTO, VL_MATERIAL | Quantidade e valores |
| VL_CUSTO_DIRETO, VL_CUSTO_INDIRETO, VL_CUSTO_MAO_OBRA, VL_CUSTO_VARIAVEL | Custos, quando o custeio está ativo |
| VL_REPASSE_CALC | Repasse calculado para o item |
| CD_MOTIVO_EXC_CONTA | Preenchido quando o item foi excluído da conta |
É por isso que margem por convênio, ticket médio e mat/med por paciente costumam sair daqui: valor e custo estão na mesma linha.
O ponto que muda tudo: o resumo é refeito
Quando a conta é recalculada (porque um item foi lançado, retirado, mudou de preço ou a conta trocou de convênio), o Tasy gera o resumo de novo. O resumo anterior deixa de existir e um novo aparece, com novas sequências.
Há um segundo detalhe: no Tasy, CONTA_PACIENTE_RESUMO não tem uma DT_ATUALIZACAO própria que acompanhe essas mudanças. Quem quer saber se o resumo de uma conta mudou precisa olhar a DT_ATUALIZACAO de CONTA_PACIENTE.
O exemplo: uma conta de R$ 90
A conta 50.871 foi calculada pela primeira vez às 9h com quatro itens:
| Seq. | Item | Valor |
|---|---|---|
| 1 | Diária de enfermaria | R$ 60,00 |
| 2 | Material A | R$ 20,00 |
| 3 | Material B | R$ 10,00 |
| 4 | Material lançado em duplicidade | R$ 30,00 |
| Total | R$ 120,00 |
Às 11h, a auditoria retirou o lançamento duplicado e a conta foi recalculada. O Tasy refez o resumo:
| Seq. | Item | Valor |
|---|---|---|
| 5 | Diária de enfermaria | R$ 60,00 |
| 6 | Material A | R$ 20,00 |
| 7 | Material B | R$ 10,00 |
| Total | R$ 90,00 |
O valor certo é R$ 90,00. Veja o que três formas de carga produzem:
| Forma de carga | O que fica no BI | Total no BI |
|---|---|---|
| Acrescentar as linhas novas | Sequências 1 a 7 | R$ 210,00 |
| Atualizar pela chave (conta + sequência) | Sequências 1 a 7 (as antigas não foram tocadas, então continuam) | R$ 210,00 |
| Atualizar pela chave, quando o Tasy reaproveita as sequências | Sequências 1 a 4, com 1 a 3 atualizadas e a 4 sobrando | R$ 120,00 |
| Trocar o resumo inteiro da conta | Só o resumo atual | R$ 90,00 |
Em um mês com milhares de contas recalculadas, a diferença passa facilmente de alguns por cento do faturamento. E, como depende de quantas vezes cada conta foi recalculada, não é uma diferença constante que dê para descontar.
A forma certa de carregar
- Descobrir quais contas mudaram pela DT_ATUALIZACAO de CONTA_PACIENTE, com a mesma folga das outras cargas incrementais (carga incremental do Tasy).
- Trazer o resumo inteiro dessas contas, não só linhas novas.
- No destino, apagar o resumo dessas contas e gravar o que acabou de chegar. A unidade de atualização é a conta, não o item.
No PostgreSQL de um banco intermediário, a troca fica assim:
-- contas que chegaram nesta rodada
CREATE TEMP TABLE contas_rodada AS
SELECT DISTINCT nr_interno_conta
FROM bruto.conta_paciente_resumo
WHERE _carregado_em > :ultima_execucao;
-- apaga o resumo antigo dessas contas
DELETE FROM tratado.conta_paciente_resumo t
USING contas_rodada c
WHERE t.nr_interno_conta = c.nr_interno_conta;
-- grava só o resumo da carga mais recente de cada conta
INSERT INTO tratado.conta_paciente_resumo
SELECT b.*
FROM bruto.conta_paciente_resumo b
JOIN contas_rodada c ON c.nr_interno_conta = b.nr_interno_conta
WHERE b._carga_id = (SELECT max(b2._carga_id)
FROM bruto.conta_paciente_resumo b2
WHERE b2.nr_interno_conta = b.nr_interno_conta);
A troca roda dentro de uma transação. Se falhar no meio, nada muda e a rodada seguinte tenta de novo.
Os filtros do número que o faturamento reconhece
Mesmo com a carga certa, o resumo traz linhas que não devem entrar no faturamento do mês. Os filtros que usamos no Clic Health, conferidos contra o relatório do Tasy:
- conta não cancelada: IE_CANCELAMENTO vazio em CONTA_PACIENTE (canceladas e estornadas ficam fora);
- conta em protocolo definitivo: a conta está num protocolo com status definitivo em PROTOCOLO_CONVENIO;
- item não excluído: CD_MOTIVO_EXC_CONTA vazio no resumo.
Um quarto cuidado é a data. O mês do faturamento pode ser o mês de referência da conta (DT_MESANO_REFERENCIA), o mês do protocolo ou o mês da alta. Cada um responde uma pergunta diferente. Escolha um, escreva a regra e use a mesma em todos os painéis.
No Clic Health, a tabela de faturamento traz todas as contas (canceladas, estornadas, provisórias e sem protocolo) com a situação de cada uma, e os painéis aplicam os filtros acima ao carregar. Só a tela de conta paciente mostra a tabela inteira, com os filtros já abertos nesses valores. Assim dá para investigar uma conta cancelada sem contaminar o faturamento.
Como saber se o seu BI tem o problema
- Escolha um mês fechado e some o resumo no BI por conta.
- Compare com o valor da conta no Tasy (VL_CONTA em CONTA_PACIENTE, ou o relatório de faturamento).
- Ordene pela diferença. Se as contas com diferença são as que mais foram recalculadas (as que passaram pela auditoria, as que trocaram de convênio), é o resumo acumulado.
- Conte quantas sequências por conta existem no BI e no Tasy. Mais sequências no BI confirma.
O roteiro mensal de conferência está em como conferir os números do Tasy com o BI. Para os painéis de faturamento do Clic Health, veja faturamento e glosas com os dados do Tasy.
Quem escreve
A Domínio trabalha há mais de 20 anos com hospitais que usam o Tasy, do faturamento à contabilidade. Encontramos esse problema em mais de um BI que fomos chamados para revisar. Se o seu faturamento no BI não bate com o Tasy, fale com a gente pelo WhatsApp ou por comercial@dominiocontabil.com.br. Na Comunidade Tasy, hospitais e empresas que trabalham com o sistema trocam esse tipo de diagnóstico.
Perguntas relacionadas
Por que não usar PROCEDIMENTO_PACIENTE e a tabela de materiais em vez do resumo?
Dá para usar, e o total precisa bater. O resumo é mais prático porque já traz valor, custo e repasse por item, na estrutura da conta. As tabelas de lançamento servem para conferir e para análises por médico executor e horário.
O problema acontece só em carga incremental?
Sim. Uma carga completa, que substitui a tabela inteira a cada execução, não acumula resumos antigos. Ela só é pesada demais para rodar com frequência numa tabela desse tamanho.
O valor da conta em CONTA_PACIENTE não resolve?
Resolve o total por conta, mas não o detalhe por item, setor, estrutura ou custo. O resumo continua necessário para a margem e para o mix.
Itens com CD_MOTIVO_EXC_CONTA devem ser apagados do BI?
Não precisa apagar. Mantenha-os com a marca de excluído e filtre nos painéis. Eles ajudam a medir quanto a auditoria retira das contas.
Escrito pela equipe da Domínio, que faz o Clic Health: contadores, controllers e desenvolvedores que trabalham há mais de 20 anos com hospitais que usam o Tasy. Tem uma dúvida sobre o Tasy? Participe da Comunidade Tasy ou fale com a gente pelo WhatsApp.