Sobre esta análise

Nota metodológica

Este documento apresenta a análise de suporte desenvolvida para o case do Hospital Vértice. Seu objetivo é complementar a apresentação executiva, registrando de forma rastreável as análises, premissas e cálculos utilizados para chegar às principais conclusões.

A análise foi desenvolvida em R, ferramenta escolhida pela familiaridade da autora e pela facilidade de manipular, cruzar e validar as diferentes bases disponibilizadas no case. O uso de código também permite manter uma trilha reproduzível entre os dados originais e os resultados apresentados.

As bases fornecidas foram utilizadas sem alteração dos dados de origem. Ao longo do documento, são diferenciados:

  • resultados observados, calculados diretamente a partir das bases fornecidas;
  • estimativas e contrafactuais, construídos a partir de premissas explicitadas na análise;
  • referências externas, identificadas e acompanhadas de suas respectivas fontes.

Este documento deve ser lido como memória analítica de suporte à apresentação, e não como substituto da recomendação executiva. O código completo utilizado na análise está disponibilizado ao final para facilitar a reprodução dos resultados.


1. Contexto do problema

O Hospital Vértice apresentou crescimento da despesa com materiais e medicamentos (ex-OPME) de 14,1% entre FY25 e FY26, passando de R$ 77,8 milhões para R$ 88,8 milhões.

No mesmo período, a receita líquida cresceu 6,8%, enquanto a margem EBITDA caiu de 14,5% para 11,6%.

O objetivo da análise é entender os principais fatores por trás do crescimento da despesa, separando os efeitos de:

DIAGNÓSTICO

2. (VOLUME) Evolução da atividade hospitalar

Antes de analisar preços ou padrões de consumo, avaliamos se o crescimento da despesa poderia ser explicado pelo aumento da atividade hospitalar.

Metodologia

Base utilizada: aba Volumetria da base de dados fornecida no case.

A aba contém, em frequência mensal, os indicadores de atividade das diferentes unidades assistenciais do hospital: pacientes-dia das unidades de internação, cirurgias realizadas, atendimentos no Pronto-Socorro e sessões de quimioterapia.

Para cada indicador de atividade, foram somados os volumes mensais dos 12 meses de cada período fiscal:

  • FY25: setembro/2024 a agosto/2025;
  • FY26: setembro/2025 a agosto/2026.

Em seguida, foi calculada a variação percentual da atividade total entre os dois períodos:

Crescimento (%) = (Atividade FY26 / Atividade FY25 - 1) × 100

Essa análise busca avaliar em que medida o crescimento da despesa com materiais e medicamentos pode ser explicado pelo aumento da atividade hospitalar.

Unidade assistencial Crescimento FY25 → FY26 (%)
Pacientes-dia UTI 1 4.1
Pacientes-dia UTI 2 5.2
Pacientes-dia Clínica Médica 4.6
Pacientes-dia Clínica Cirúrgica 4.6
Pacientes-dia Pediatria 5.5
Cirurgias (Centro Cirúrgico) 5.6
Atendimentos Pronto-Socorro 5.9
Sessões de quimioterapia (Oncologia) 10.7
Média (%) Mediana (%) Mínimo (%) Máximo (%)
5.8 5.3 4.1 10.7

Conclusão

Os oito indicadores de atividade cresceram entre 4,1% e 10,7% no FY26, com mediana de aproximadamente 5,3%. Mesmo o maior crescimento observado ficou abaixo do aumento de 14,1% da despesa com materiais e medicamentos (ex-OPME).

Portanto, o aumento da atividade hospitalar, isoladamente, não parece suficiente para explicar o crescimento da despesa, indicando a necessidade de investigar intensidade de consumo, preços e modalidades de compra.

3. (CONSUMO POR PACIENTE) Intensidade de consumo

Metodologia

Bases utilizadas: abas Consumo por Unidade e Volumetria da base de dados fornecida no case.

A aba Consumo por Unidade informa, mensalmente, a quantidade dispensada de cada item para cada unidade assistencial. A aba Volumetria fornece a atividade mensal correspondente de cada unidade.

Para separar o efeito do crescimento da atividade de uma possível mudança no padrão de utilização dos materiais e medicamentos, foi calculada a intensidade de consumo de cada item em cada unidade assistencial:

Intensidade de consumo = Quantidade dispensada / Atividade assistencial

A medida de atividade utilizada depende da unidade analisada. Por exemplo:

  • nas UTIs e demais unidades de internação: pacientes-dia;
  • no Centro Cirúrgico: número de cirurgias;
  • no Pronto-Socorro: número de atendimentos;
  • na Oncologia Ambulatorial: número de sessões de quimioterapia.

Para a comparação anual, foram somadas separadamente a quantidade dispensada e a atividade dos 12 meses de cada período. Em seguida, calculou-se a intensidade anual:

Intensidade anual = Quantidade total dispensada no ano / Atividade total no ano

Por fim, foi calculada a variação da intensidade entre FY25 e FY26 para cada combinação de item e unidade assistencial:

Variação da intensidade (%) = (Intensidade FY26 / Intensidade FY25 - 1) × 100

Etapas da análise

A análise de intensidade de consumo foi construída em quatro etapas:

1. Reorganização da volumetria

A tabela de Volumetria originalmente apresenta cada unidade assistencial em uma coluna diferente. Ela foi reorganizada para que cada linha representasse uma combinação de mês e unidade assistencial.

Essa transformação permite relacionar diretamente a atividade de cada unidade com os registros da tabela Consumo por Unidade.

2. Integração entre consumo e atividade

Os dados de Consumo por Unidade foram combinados com os dados de Volumetria utilizando o mês e a unidade assistencial como chaves.

Com isso, para cada combinação de item, mês e unidade, passou-se a observar conjuntamente:

  • a quantidade dispensada do item;
  • a atividade realizada naquela unidade.

A partir dessas informações, tornou-se possível medir o consumo em relação à atividade assistencial.

3. Agregação por período fiscal

Os dados mensais foram agrupados em FY25 e FY26.

Para cada combinação de item e unidade assistencial, foram somados:

  • o consumo dos 12 meses;
  • a atividade dos 12 meses.

A intensidade anual foi então calculada dividindo o consumo total pela atividade total do período.

4. Comparação entre FY25 e FY26

Por fim, para cada item dentro de cada unidade assistencial, foram comparadas as intensidades de consumo de FY25 e FY26.

A variação percentual foi calculada como:

Variação da intensidade (%) = (Intensidade FY26 / Intensidade FY25 - 1) × 100

Os resultados foram então consolidados por unidade assistencial para identificar onde estavam concentradas as maiores alterações no padrão de consumo.

Resultados

Unidade assistencial Nº de itens Média (%) Mediana (%) Máximo (%)
UTI 2 46 15.2 1.0 88.7
Clínica Cirúrgica 45 0.7 0.8 6.3
UTI 1 46 0.6 0.6 6.3
Clínica Médica 45 0.2 0.6 4.6
Centro Cirúrgico 46 -0.1 -0.4 5.1
Pediatria 45 -0.3 0.1 9.4
Oncologia Ambulatorial 26 -0.5 -0.4 3.7
Pronto-Socorro 39 -0.8 -0.9 4.1

Investigação da UTI 2

A UTI 2 se destaca das demais unidades: enquanto a mediana da variação da intensidade foi de apenas 1,0%, a média atingiu 15,2% e o maior crescimento chegou a 88,7%.

A diferença relevante entre média e mediana sugere que o aumento não ocorreu de forma generalizada entre os itens, mas está concentrado em um grupo específico. Por isso, a análise foi aprofundada no nível de item dentro da UTI 2.

Dos 46 itens analisados na UTI 2, 9 apresentaram aumentos de intensidade superiores a 20%, com crescimentos entre aproximadamente 70% e 89%. Em contraste, todos os demais itens apresentaram crescimento inferior a 5%, evidenciando uma separação clara entre esse grupo de 9 itens e o restante.

Dessa forma, os 9 itens foram selecionados para uma investigação mais detalhada.

Itens com maior aumento de intensidade

Código do item Intensidade FY25 Intensidade FY26 Variação (%)
MAT-1005 23.15 43.67 88.7
MAT-1001 46.52 85.09 82.9
MAT-1502 9.04 16.15 78.7
MAT-1003 14.39 25.24 75.4
MAT-1004 7.10 12.37 74.1
MAT-1201 3.34 5.79 73.6
MAT-1006 1.43 2.47 73.0
HIG-6003 4.55 7.87 72.8
MAT-1007 0.19 0.31 69.9

Evolução mensal dos itens anormais

Após identificar os 9 itens com aumento atípico de intensidade na UTI 2, foi analisada sua evolução mensal para identificar quando ocorreu a mudança no padrão de consumo.

Para cada item, foi calculado mensalmente o consumo por paciente-dia da UTI 2:

Intensidade mensal = Quantidade dispensada no mês / Pacientes-dia da UTI 2 no mês

Essa análise permite distinguir um crescimento gradual de uma mudança abrupta de comportamento.

Conclusão da análise de intensidade

Os 9 itens identificados apresentam uma mudança abrupta e simultânea de patamar entre agosto e setembro de 2025. Após essa quebra, a intensidade de consumo permanece elevada ao longo do FY26.

O padrão observado sugere que o aumento não decorre de uma tendência gradual de crescimento do consumo, mas de uma mudança concentrada no tempo e específica a um grupo de itens da UTI 2.

A hipótese de que a mudança tenha sido causada pela implantação do novo sistema de prescrição eletrônica não é consistente com a sequência temporal observada. O sistema foi implantado nas unidades de internação em fevereiro de 2026, aproximadamente cinco meses após o início da mudança de patamar.

Assim, a análise permite localizar a anomalia — 9 itens da UTI 2, com mudança a partir de setembro de 2025 —, mas ainda não permite determinar sua causa. A origem da mudança deverá ser investigada a partir das demais informações disponíveis na base.

Comparação entre UTI 1 e UTI 2

Como a UTI 1 e a UTI 2 atendem pacientes com o mesmo perfil, a UTI 1 foi utilizada como benchmark interno para avaliar se o aumento observado nos 9 itens refletia uma mudança geral no consumo de pacientes de UTI ou um comportamento específico da UTI 2.

Foram comparadas as variações da intensidade de consumo entre FY25 e FY26 para os mesmos 9 itens nas duas unidades.

Código do item Variação UTI 1 (%) Variação UTI 2 (%)
MAT-1005 -0.3 88.7
MAT-1001 1.2 82.9
MAT-1502 -1.0 78.7
MAT-1003 -0.6 75.4
MAT-1004 0.8 74.1
MAT-1201 3.2 73.6
MAT-1006 -0.1 73.0
HIG-6003 -1.2 72.8
MAT-1007 2.4 69.9

Nos 9 itens analisados, a intensidade de consumo da UTI 1 permaneceu praticamente estável, com variações entre aproximadamente -1,2% e +3,2%. Na UTI 2, os mesmos itens apresentaram aumentos entre aproximadamente +69,9% e +88,7%.

Além disso, no FY25 as intensidades de consumo desses itens eram semelhantes entre as duas UTIs, enquanto no FY26 ocorre um forte distanciamento entre elas.

Como as duas UTIs atendem pacientes com o mesmo perfil, esse resultado reforça que a anomalia não parece representar uma mudança geral no padrão de consumo de pacientes de UTI, mas um fenômeno especificamente concentrado na UTI 2.

Caracterização dos itens com consumo anormal

Metodologia

Base utilizada: aba Cadastro de Itens da base de dados fornecida no case.

Após a identificação dos 9 itens com aumento anormal de intensidade na UTI 2, o cadastro de itens foi analisado para verificar se esses produtos compartilhavam características que pudessem ajudar a explicar o comportamento observado.

Foram avaliadas a descrição do produto, fabricante, categoria, subcategoria e fornecedor contratado.

Código Descrição Categoria Subcategoria Fornecedor contratado
MAT-1001 Luva de procedimento não estéril M Higiene e EPI EPI Protege EPI
MAT-1003 Máscara cirúrgica tripla Higiene e EPI EPI Protege EPI
MAT-1004 Avental descartável manga longa Higiene e EPI EPI Protege EPI
MAT-1005 Compressa de gaze 7,5x7,5 estéril Materiais médico-hospitalares Curativos Distrimed Brasil
MAT-1006 Curativo transparente com borda 10x12 Materiais médico-hospitalares Curativos Distrimed Brasil
MAT-1007 Cobertura espuma com prata 10x10 Materiais médico-hospitalares Curativos Cirúrgica Planalto
MAT-1201 Equipo para bomba de infusão (macro) Materiais médico-hospitalares Equipos InfusaMed
MAT-1502 Eletrodo descartável para monitorização Materiais médico-hospitalares Monitorização Hospsul Distribuidora
HIG-6003 Fralda geriátrica G Higiene e EPI Higiene do paciente LimpMax Higiene

Conclusão

Os 9 itens pertencem a diferentes subcategorias — incluindo EPI, curativos, equipos, monitorização e higiene do paciente — e estão associados a diferentes fornecedores contratados.

Embora exista alguma concentração em EPI (3 itens) e curativos (3 itens), não foi identificado um único fornecedor, fabricante ou subcategoria comum capaz de explicar o aumento simultâneo observado.

Um padrão comum é que os 9 produtos são materiais hospitalares, e não medicamentos. A caracterização dos itens, portanto, não revela uma causa única para a anomalia identificada na UTI 2.

4. (PREÇO) Evolução dos preços de compra

Após analisar o crescimento da atividade hospitalar e a intensidade de consumo, o próximo passo é avaliar se o aumento das compras também foi provocado por reajustes nos preços de referência dos itens adquiridos.

Metodologia

Base utilizada: aba Pedidos de Compra.

A base contém, para cada pedido, a quantidade adquirida, o preço efetivamente pago e o preço contratual de referência.

Como o preço efetivamente pago pode variar conforme a modalidade de compra, utilizar diretamente esse preço misturaria dois efeitos distintos:

  • mudança do preço-base do item;
  • mudança da modalidade de compra.

Por isso, para isolar o efeito preço, foi utilizado o preço contratual médio ponderado pela quantidade:

\[ P^{contrato} = \frac{\sum Q_i \times P^{contrato}_i} {\sum Q_i} \]

Essa abordagem permite analisar a evolução dos preços de referência sem incorporar o prêmio eventualmente pago em compras spot ou emergenciais.

Preparação da base

Inicialmente, as variáveis da base de pedidos foram renomeadas para facilitar a análise e cada pedido foi classificado entre FY25 e FY26.

Evolução dos preços contratuais por item

Para cada item e período fiscal, foi calculado o preço contratual médio ponderado pelas quantidades adquiridas.

Em seguida, os preços contratuais de FY25 e FY26 foram comparados para cada um dos 54 itens.

A distribuição dos reajustes contratuais entre os itens é apresentada abaixo.

Média (%) Mediana (%) Mínimo (%) Máximo (%)
4.5 4.6 3.9 4.9

A análise dos preços contratuais permite identificar a parcela da pressão de preços que decorre efetivamente de reajustes da referência de compra, separando esse efeito da mudança na modalidade utilizada pelo hospital.

Impacto financeiro do aumento dos preços

Além da variação percentual, foi estimado quanto o reajuste dos preços contratuais representou em reais.

Para isso, foi mantida a quantidade efetivamente comprada em FY26 e calculada apenas a diferença entre o preço contratual de FY26 e o preço contratual de FY25.

Para cada item:

\[ Efeito\ preço = Q_{FY26} \times (P^{contrato}_{FY26} - P^{contrato}_{FY25}) \]

Assim, o cálculo mantém constante a quantidade comprada em FY26 e isola o impacto da mudança do preço-base, sem incorporar o efeito da modalidade de compra.

O efeito preço total estimado para os 54 itens foi de aproximadamente R$ 1,76 milhão.

Em outras palavras, se o Hospital Vértice tivesse comprado exatamente as mesmas quantidades de FY26, mas mantido os preços contratuais de FY25, teria gasto aproximadamente R$ 1,76 milhão a menos.

Os itens de maior impacto financeiro não são necessariamente aqueles com maior reajuste percentual. O impacto depende simultaneamente da variação do preço contratual e da quantidade adquirida.

Os três maiores impactos foram:

Item Efeito preço estimado (R$)
MED-4002 342.978
MED-4001 213.440
MAT-1201 159.137

Comparação com o preço efetivamente pago

Uma análise inicial utilizando os preços efetivamente pagos indicava um impacto de aproximadamente R$ 3,51 milhões.

Esse valor, entretanto, não representa um efeito preço puro. O preço efetivamente pago também é influenciado pela modalidade de compra, principalmente quando o hospital realiza compras emergenciais acima da referência contratual.

Por isso, o valor de R$ 1,76 milhão é utilizado como estimativa do efeito de reajuste de preços na decomposição financeira, enquanto o impacto associado à mudança na forma de comprar é analisado separadamente.

Essa separação evita dupla contagem entre preço e modalidade.

Conclusão

O aumento dos preços foi um driver relevante do crescimento das compras de materiais e medicamentos.

Mantendo constantes as quantidades adquiridas em FY26, os reajustes dos preços contratuais entre FY25 e FY26 adicionaram aproximadamente R$ 1,76 milhão ao custo dos 54 itens analisados.

A diferença em relação aos R$ 3,51 milhões observados quando se utilizam os preços efetivamente pagos indica que parte da deterioração inicialmente atribuída a preço está, na realidade, relacionada à forma como o hospital passou a realizar suas compras.

Por isso, o próximo passo é analisar separadamente as modalidades contrato, spot e emergencial.

5. (FORMA DE COMPRAR) Evolução das modalidades de compra

Após analisar volume, intensidade de consumo e preços, o próximo passo é avaliar se houve uma mudança na forma como o Hospital Vértice realiza suas compras.

Segundo a base, existem três modalidades:

A análise busca responder duas perguntas principais:

  1. O hospital passou a utilizar mais modalidades potencialmente mais caras?
  2. Essa mudança gerou um prêmio relevante em relação aos preços contratuais?

Participação das modalidades no valor comprado

Inicialmente, foi calculado o valor total adquirido em cada modalidade e sua participação nas compras de FY25 e FY26.

## # A tibble: 6 × 4
##   periodo tipo_compra  valor_comprado participacao
##   <chr>   <chr>                 <dbl>        <dbl>
## 1 FY25    Contrato          29275620.        85.3 
## 2 FY25    Cotação spot       3386120.         9.87
## 3 FY25    Emergencial        1640123.         4.78
## 4 FY26    Contrato          30876968.        69.4 
## 5 FY26    Cotação spot       4191488.         9.42
## 6 FY26    Emergencial        9435178.        21.2

Para facilitar a comparação entre os dois períodos:

Modalidade FY25 (%) FY26 (%) Variação (p.p.)
Contrato 85.3 69.4 -16.0
Cotação spot 9.9 9.4 -0.5
Emergencial 4.8 21.2 16.4

A composição das compras mudou de forma relevante entre os dois períodos.

As compras por contrato passaram de aproximadamente 85,3% para 69,4% do valor comprado, enquanto as compras emergenciais aumentaram de 4,8% para 21,2%.

A participação das compras spot permaneceu relativamente estável, próxima de 10%.

Portanto, a principal mudança no mix foi uma redução relativa das compras contratuais acompanhada por forte crescimento das compras emergenciais.

Crescimento das compras emergenciais em valor

Além da participação percentual, foi analisado o valor absoluto adquirido por cada modalidade.

Modalidade FY25 (R\()| FY26 (R\)) Crescimento (%)
Contrato 29.275.620 30.876.968 5
Cotação spot 3.386.120 4.191.488 24
Emergencial 1.640.123 9.435.178 475

O valor das compras emergenciais passou de aproximadamente R$ 1,64 milhão em FY25 para R$ 9,44 milhões em FY26, um aumento de aproximadamente 5,8 vezes.

Esse crescimento é muito superior ao observado nas demais modalidades.

Participação das emergenciais em quantidade

Como as compras emergenciais podem apresentar preços maiores, o crescimento em valor poderia refletir apenas um efeito de preço.

Por isso, também foi analisada a participação de cada modalidade nas quantidades adquiridas.

Modalidade FY25 (%) FY26 (%)
Contrato 85 68.6
Cotação spot 10 10.0
Emergencial 5 21.4

As compras emergenciais passaram de aproximadamente 5,0% para 21,4% das unidades adquiridas.

Portanto, o crescimento das emergenciais não é apenas consequência de preços mais altos: houve uma mudança efetiva na forma de abastecimento, com uma parcela muito maior das quantidades sendo adquirida emergencialmente.

Evolução mensal das compras emergenciais

Para identificar quando ocorreu essa mudança, foi calculada a participação das compras emergenciais no valor total comprado em cada mês.

O gráfico abaixo evidencia uma quebra no padrão de compras a partir de setembro de 2025, início de FY26.

Durante FY25, a participação das compras emergenciais permaneceu relativamente estável, em torno de 5% do valor mensal comprado.

Em setembro de 2025, essa participação salta para aproximadamente 16,6% e continua crescendo ao longo de FY26, chegando a aproximadamente 24,8% em agosto de 2026.

O comportamento indica uma quebra estrutural no padrão de compras no início de FY26, e não apenas oscilações pontuais ao longo dos dois anos.

A quebra ocorre no mesmo período em que foi identificada a mudança de intensidade de consumo na UTI 2. A coincidência temporal é relevante, mas, isoladamente, não permite estabelecer causalidade entre os dois fenômenos.

Prêmio das modalidades em relação ao preço contratual

O próximo passo foi avaliar se as diferentes modalidades apresentam preços superiores ou inferiores ao preço contratual de referência.

Para cada pedido, foi calculado quanto seria gasto caso a quantidade adquirida fosse comprada ao preço contratual vigente.

\[ Prêmio = Valor\ efetivamente\ pago - (Q \times P^{contrato}) \]

## # A tibble: 6 × 6
##   periodo tipo_compra  valor_pago valor_referencia    premio premio_percentual
##   <chr>   <chr>             <dbl>            <dbl>     <dbl>             <dbl>
## 1 FY25    Contrato      29275620.        29275633.     -12.9        -0.0000439
## 2 FY25    Cotação spot   3386120.         3414280.  -28161.         -0.825    
## 3 FY25    Emergencial    1640123.         1208224.  431899.         35.7      
## 4 FY26    Contrato      30876968.        30877003.     -34.8        -0.000113 
## 5 FY26    Cotação spot   4191488.         4241322.  -49834.         -1.17     
## 6 FY26    Emergencial    9435178.         7169400. 2265778.         31.6

Para visualizar os resultados de FY26:

Modalidade Diferença vs. contrato (%) Diferença vs. contrato (R$)
Contrato 0,0 -34,8
Cotação spot -1,2 -49.834,1
Emergencial 31,6 2.265.778,1

As compras realizadas por contrato ocorreram, como esperado, praticamente no preço contratual.

As compras spot ficaram ligeiramente abaixo da referência contratual, indicando que compras fora do contrato não são necessariamente mais caras.

O principal problema está nas compras emergenciais, que em FY26 apresentaram preço aproximadamente 31,6% superior à referência contratual.

Em termos financeiros, as compras emergenciais de FY26 custaram aproximadamente R$ 2,27 milhões a mais do que as mesmas quantidades teriam custado aos preços contratuais vigentes.

As compras emergenciais ocorrem por falta de contrato?

Uma possível explicação seria que o hospital recorre às compras emergenciais porque determinados itens não possuem alternativa contratada.

Para testar essa hipótese, foi verificado se os itens comprados emergencialmente em FY26 também apresentaram compras por contrato no mesmo período.

Teve compra por contrato Teve compra emergencial Número de itens
TRUE TRUE 54

Os 54 itens analisados tiveram tanto compras contratuais quanto compras emergenciais em FY26.

Portanto, os dados não sustentam a hipótese de que o aumento das emergenciais seja explicado simplesmente pela ausência de contratos para determinados itens.

O hospital continuou realizando compras contratuais desses produtos, mas passou a recorrer simultaneamente e com muito maior frequência às compras emergenciais.

O crescimento das emergenciais está concentrado em poucos itens?

Para verificar se o problema era restrito a poucos produtos, foi calculada a variação do valor comprado emergencialmente por item entre FY25 e FY26.

Todos os 54 itens apresentaram aumento do valor adquirido emergencialmente entre FY25 e FY26.

Os dez itens com maior crescimento explicam aproximadamente 54,5% do aumento das compras emergenciais, indicando alguma concentração financeira, mas um problema disseminado por todo o portfólio analisado.

Relação com os itens anormais da UTI 2

Como a mudança das emergenciais ocorre no mesmo momento da anomalia de consumo da UTI 2, foi avaliado se os 9 itens identificados anteriormente explicam o crescimento das compras emergenciais.

Grupo FY25 (%) FY26 (%)
9 itens anormais UTI 2 21.9 22.7
Demais itens 78.1 77.3

Os 9 itens anormais da UTI 2 representavam aproximadamente 21,9% das compras emergenciais em FY25 e 22,7% em FY26.

A participação permaneceu, portanto, praticamente estável.

Isso mostra que o crescimento das emergenciais não está concentrado nos mesmos itens que explicam a anomalia de consumo da UTI 2.

Enquanto o problema de intensidade é localizado, o crescimento das compras emergenciais é um fenômeno muito mais disseminado pelo portfólio.

Conclusão

A forma de comprar sofreu uma mudança relevante entre FY25 e FY26.

A participação das compras emergenciais aumentou de 4,8% para 21,2% do valor adquirido, enquanto sua participação nas quantidades passou de aproximadamente 5,0% para 21,4%.

Além de mais frequentes, essas compras foram mais caras: em FY26, as emergenciais apresentaram um prêmio de aproximadamente 31,6% em relação aos preços contratuais, equivalente a cerca de R$ 2,27 milhões.

A ruptura ocorre a partir de setembro de 2025 e se intensifica ao longo de FY26.

Como todos os 54 itens continuaram apresentando compras por contrato e o crescimento das emergenciais ocorreu de forma disseminada, os dados não apontam para uma simples falta de contratos ou para um problema restrito a poucos produtos.

O padrão é compatível com uma possível deterioração no planejamento de compras, reposição ou gestão de estoques. Essa interpretação é particularmente relevante considerando que a política de estoque mínimo e ponto de reposição do hospital não é revisada desde 2023.

Entretanto, a base disponível permite identificar o padrão e seu impacto, mas não é suficiente para estabelecer definitivamente qual processo operacional causou o aumento das compras emergenciais.

6. Decomposição financeira do aumento das compras

Após analisar separadamente quantidade, preços e modalidade de compra, o próximo passo é consolidar esses efeitos em uma ponte financeira.

O objetivo é explicar o aumento do valor comprado dos 54 itens entre FY25 e FY26 sem dupla contagem entre os diferentes drivers.

Evolução do valor comprado

Na base analisada, o valor total dos pedidos passou de aproximadamente R$ 34,30 milhões em FY25 para R$ 44,50 milhões em FY26.

Isso representa um aumento de aproximadamente:

\[ R\$44,50\ mi - R\$34,30\ mi = \mathbf{R\$10,20\ milhões} \]

Periodo Valor comprado (R$)
FY25 34.301.863
FY26 44.503.634

Metodologia da decomposição

O aumento das compras foi separado em três componentes:

  1. Quantidade: quanto o gasto aumentaria apenas porque o hospital comprou quantidades diferentes, mantendo os preços contratuais de FY25;
  2. Preço: quanto o gasto aumentou devido ao reajuste dos preços contratuais, utilizando as quantidades de FY26;
  3. Modalidade: quanto mudou o prêmio pago acima ou abaixo dos preços contratuais em função da forma de compra.

A decomposição utiliza o preço contratual como referência, evitando que o prêmio das compras emergenciais seja contabilizado novamente como aumento de preço.

1. Efeito quantidade

O efeito quantidade é calculado mantendo o preço contratual de FY25 constante:

\[ Efeito\ quantidade = (Q_{FY26}-Q_{FY25}) \times P^{contrato}_{FY25} \]

O efeito quantidade foi de aproximadamente R$ 6,63 milhões.

Portanto, esse é o maior componente do aumento observado na base de compras.

2. Efeito preço

O efeito preço mantém as quantidades de FY26 constantes e altera apenas o preço contratual:

\[ Efeito\ preço = Q_{FY26} \times (P^{contrato}_{FY26}-P^{contrato}_{FY25}) \]

Esse cálculo já foi realizado anteriormente e resultou em aproximadamente R$ 1,76 milhão.

3. Efeito modalidade

Por fim, foi calculado o prêmio total associado às modalidades de compra em cada período.

O prêmio corresponde à diferença entre o valor efetivamente pago e o valor que seria pago utilizando o preço contratual vigente:

\[ Prêmio = Valor\ pago - (Q \times P^{contrato}) \]

## # A tibble: 2 × 2
##   periodo premio_total
##   <chr>          <dbl>
## 1 FY25         403726.
## 2 FY26        2215909.

Em FY25, o prêmio líquido associado às modalidades era de aproximadamente R$ 0,40 milhão.

Em FY26, esse valor aumentou para aproximadamente R$ 2,22 milhões.

O efeito modalidade na ponte corresponde à variação desse prêmio entre os dois períodos:

\[ Efeito\ modalidade = Prêmio_{FY26} - Prêmio_{FY25} \]

O efeito modalidade foi de aproximadamente R$ 1,81 milhão.

Esse valor captura a deterioração do prêmio total associado à forma de comprar entre os dois períodos.

Consolidação da decomposição

Os três efeitos podem agora ser consolidados:

Driver Impacto (R$) % do aumento
Quantidade 6.631.152 65,0
Preco 1.758.435 17,2
Modalidade 1.812.184 17,8

A decomposição indica:

Driver Impacto aproximado Participação
Quantidade R$ 6,63 mi 65%
Preço R$ 1,76 mi 17%
Modalidade R$ 1,81 mi 18%
Total R$ 10,20 mi 100%

Assim, aproximadamente 65% do aumento das compras está associado à maior quantidade adquirida, enquanto reajustes de preço e deterioração da modalidade explicam, respectivamente, cerca de 17% e 18%.

Validação da ponte

Como teste de consistência, a soma dos três efeitos deve ser igual ao aumento efetivamente observado nas compras.

Medida Valor (R$)
Aumento real das compras 10.201.771
Soma dos efeitos 10.201.771
Diferenca 0

A soma dos efeitos reconcilia o aumento observado de aproximadamente R$ 10,20 milhões, confirmando que a decomposição não apresenta dupla contagem entre quantidade, preço e modalidade.

Relação com a análise de consumo

O efeito quantidade de R$ 6,63 milhões é calculado a partir das quantidades compradas e, portanto, não deve ser interpretado automaticamente como aumento de consumo dos pacientes.

A análise da base de consumo mostrou separadamente que:

  • aproximadamente R$ 2,45 milhões do aumento esperado de consumo são explicados pelo crescimento da atividade hospitalar;
  • aproximadamente R$ 0,96 milhão decorre de mudanças na intensidade de consumo;
  • desse efeito de intensidade, aproximadamente R$ 0,90 milhão está concentrado na UTI 2.

Esses valores não são somados diretamente à ponte financeira porque as duas análises medem momentos diferentes do fluxo:

\[ Compra \rightarrow Estoque/Farmácia \rightarrow Consumo \]

Assim, diferenças entre quantidade comprada e quantidade consumida podem refletir, entre outros fatores, variações de estoque e timing de reposição.

Conclusão

O aumento de R$ 10,20 milhões nas compras dos 54 itens analisados não pode ser atribuído exclusivamente à inflação de fornecedores.

O maior componente é o aumento das quantidades compradas, responsável por aproximadamente 65% da variação. Além disso, os reajustes dos preços contratuais explicam cerca de 17%, enquanto a deterioração do prêmio associado à modalidade de compra responde por aproximadamente 18%.

A análise de consumo mostra ainda que o crescimento da atividade explica apenas parte do aumento esperado das necessidades assistenciais e identifica uma anomalia de intensidade fortemente concentrada na UTI 2.

Portanto, os dados apontam para uma combinação de crescimento da demanda, mudança de intensidade de consumo, reajustes de preços e deterioração do processo de compras, em vez de uma única causa para o aumento observado.

TESTE DAS HIPÓTESES DA DIRETORIA

A partir do diagnóstico, foram avaliadas as hipóteses levantadas pelo Diretor de Suprimentos e pelo Diretor Financeiro, além da proposta de exclusividade apresentada pela Distrimed.

7. Hipótese do Diretor de Suprimentos

O Diretor de Suprimentos atribui o aumento dos gastos principalmente à pressão de fornecedores, inflação e escassez de mercado.

7.1. Quanto do aumento é explicado por preços?

A decomposição do aumento de R$ 10,20 milhões nas compras dos 54 itens mostra que a pressão de preços existe, mas não é o principal fator.

# ============================================================
# DECOMPOSICAO DO AUMENTO DAS COMPRAS
# ============================================================
#
# Valores calculados e validados anteriormente:
# - Quantidade: R$ 6,63 mi
# - Preco-base: R$ 1,76 mi
# - Modalidade: R$ 1,81 mi
#
# A soma reconcilia com o aumento total de R$ 10,20 mi.
# ============================================================

hipotese_suprimentos <- data.frame(
  Driver = c(
    "Quantidade",
    "Preco-base",
    "Modalidade de compra"
  ),
  Valor_milhoes = c(
    6.631152,
    1.758435,
    1.812184
  )
)

hipotese_suprimentos <- hipotese_suprimentos %>%
  mutate(
    Participacao = Valor_milhoes /
      sum(Valor_milhoes) * 100
  )

hipotese_suprimentos
##                 Driver Valor_milhoes Participacao
## 1           Quantidade      6.631152     65.00001
## 2           Preco-base      1.758435     17.23657
## 3 Modalidade de compra      1.812184     17.76343

O aumento dos preços de referência explica aproximadamente R$ 1,76 milhão, ou 17% do aumento total.

Portanto, embora exista pressão externa de preços, ela não é suficiente para explicar a deterioração observada. Aproximadamente 65% do aumento está associado à quantidade e outros 18% à mudança na modalidade de compra.

7.2. Há evidência compatível com problemas de fornecimento?

Para investigar a hipótese de escassez, foi comparado o fornecedor utilizado nas compras contratuais com o fornecedor utilizado nas compras emergenciais em FY26.

# ============================================================
# FORNECEDORES - CONTRATO VS EMERGENCIAL
# ============================================================

fornecedores_modalidade <- pedidos_limpo %>%
  filter(
    periodo == "FY26",
    tipo_compra %in% c("Contrato", "Emergencial")
  ) %>%
  distinct(
    item,
    tipo_compra,
    fornecedor
  )

comparacao_fornecedores <- fornecedores_modalidade %>%
  mutate(
    presente = TRUE
  ) %>%
  pivot_wider(
    names_from = tipo_compra,
    values_from = presente,
    values_fill = FALSE
  )

fornecedor_por_item <- comparacao_fornecedores %>%
  group_by(item) %>%
  summarise(
    mesmo_fornecedor = any(Contrato & Emergencial),
    .groups = "drop"
  )

fornecedor_por_item %>%
  count(mesmo_fornecedor)
## # A tibble: 2 × 2
##   mesmo_fornecedor     n
##   <lgl>            <int>
## 1 FALSE               49
## 2 TRUE                 5

Em 49 dos 54 itens (91%), o fornecedor utilizado nas compras emergenciais é diferente daquele utilizado nas compras contratuais.

O resultado é compatível com situações em que o fornecedor habitual não consegue atender à necessidade no momento da emergência. Entretanto, não permite concluir que exista escassez de mercado. A troca de fornecedor também pode decorrer de pedidos realizados com pouca antecedência ou de falhas internas de planejamento e reposição.

Conclusão sobre a hipótese de Suprimentos

A hipótese é parcialmente suportada.

Existe pressão de preços e há evidência compatível com restrições de fornecimento, dada a utilização de fornecedores alternativos nas emergências. Entretanto, fatores externos não explicam a maior parte do aumento das compras.

O diagnóstico também identificou crescimento de quantidade, aumento anormal da intensidade de consumo na UTI 2 e forte expansão das compras emergenciais. Assim, o aumento de gastos não pode ser atribuído predominantemente a inflação, fornecedores ou escassez de mercado.


8. Hipótese do Diretor Financeiro

O Diretor Financeiro sugere consolidar as compras em um único distribuidor, estimando que essa estratégia poderia gerar uma redução de preços de pelo menos 15%.

A proposta concreta disponível é da Distrimed, que oferece:

  • 6% de desconto sobre os preços atuais dos itens que distribui;
  • 60 dias de prazo de pagamento;
  • exclusividade das compras dos itens cobertos.

8.1. Cobertura da Distrimed

A Distrimed é caracterizada como distribuidor de linha ampla, mas não fornece:

  • medicamentos oncológicos;
  • equipos InfusaMed;
  • grampeadores e cargas Covidien.

Na base analisada, essas exceções correspondem a 8 itens.

# ============================================================
# COBERTURA DA DISTRIMED
# ============================================================

itens_excluidos_distrimed <- c(
  "MAT-1201",
  "MAT-1202",
  "MAT-1403",
  "MAT-1404",
  "MED-4001",
  "MED-4002",
  "MED-4003",
  "MED-4004"
)

# Valor total comprado em FY26
valor_total_fy26 <- pedidos_limpo %>%
  filter(periodo == "FY26") %>%
  summarise(
    valor = sum(valor_total, na.rm = TRUE)
  ) %>%
  pull(valor)

# Itens e valor cobertos pela Distrimed
cobertura_distrimed <- pedidos_limpo %>%
  filter(
    periodo == "FY26",
    !item %in% itens_excluidos_distrimed
  ) %>%
  summarise(
    itens = n_distinct(item),
    valor_compras = sum(valor_total, na.rm = TRUE)
  )

# Participacao da cobertura no valor total
participacao_cobertura <-
  cobertura_distrimed$valor_compras /
  valor_total_fy26 * 100

cobertura_distrimed
## # A tibble: 1 × 2
##   itens valor_compras
##   <int>         <dbl>
## 1    46     21138909.
participacao_cobertura
## [1] 47.49929

A proposta cobre 46 dos 54 itens analisados.

Apesar da elevada cobertura em número de itens, esses produtos correspondem a aproximadamente R$ 21,14 milhões, ou 47,5% do valor das compras em FY26, pois alguns dos itens não distribuídos pela Distrimed possuem alto valor, especialmente os medicamentos oncológicos.

8.2. Benefício de preço da proposta

Aplicando o desconto proposto de 6% sobre as compras cobertas:

# ============================================================
# ECONOMIA COM DESCONTO DE 6%
# ============================================================

economia_distrimed_6 <-
  cobertura_distrimed$valor_compras * 0.06

# Comparacao com a hipotese de 15% do Diretor Financeiro
economia_15 <-
  cobertura_distrimed$valor_compras * 0.15

economia_distrimed_6
## [1] 1268335
economia_15
## [1] 3170836

O desconto de 6% representa uma economia estimada de aproximadamente R$ 1,27 milhão por ano, com impacto direto em EBITDA, mantidos constantes volume e mix de compras.

Já uma redução de 15% sobre a mesma base representaria aproximadamente R$ 3,17 milhões por ano.

Portanto, a proposta disponível não sustenta a expectativa do Diretor Financeiro de redução de preços de pelo menos 15%. O desconto efetivamente oferecido é de 6%.

8.3. Benefício de prazo e capital de giro

Além do desconto, a Distrimed oferece prazo de pagamento de 60 dias.

Para avaliar esse benefício, os prazos atuais dos fornecedores foram ponderados pelo valor comprado em FY26 nos 46 itens cobertos.

# ============================================================
# PRAZO MEDIO ATUAL DOS ITENS COBERTOS
# ============================================================

contratos_limpo <- contratos %>%
  select(
    fornecedor = Fornecedor,
    prazo_dias = `Prazo de pagamento (dias)`
  )

# Compras FY26 dos itens que poderiam migrar para a Distrimed
compras_cobertas <- pedidos_limpo %>%
  filter(
    periodo == "FY26",
    !item %in% itens_excluidos_distrimed
  )

# Valor comprado de cada fornecedor e seu prazo de pagamento
prazo_atual <- compras_cobertas %>%
  group_by(fornecedor) %>%
  summarise(
    valor_compras = sum(valor_total, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  left_join(
    contratos_limpo,
    by = "fornecedor"
  )

# Prazo medio ponderado pelo valor comprado
prazo_medio_atual <- sum(
  prazo_atual$valor_compras * prazo_atual$prazo_dias
) / sum(prazo_atual$valor_compras)

# Dias adicionais proporcionados pela Distrimed
ganho_dias <- 60 - prazo_medio_atual

prazo_medio_atual
## [1] 38.30995
ganho_dias
## [1] 21.69005

O prazo médio atual é de aproximadamente 38,3 dias. A proposta da Distrimed elevaria esse prazo para 60 dias, adicionando aproximadamente 21,7 dias de prazo de pagamento.

O capital de giro liberado é estimado por:

# ============================================================
# CAPITAL DE GIRO LIBERADO
# ============================================================

capital_giro_liberado <-
  cobertura_distrimed$valor_compras *
  ganho_dias / 365

capital_giro_liberado
## [1] 1256176

A extensão do prazo representa aproximadamente R$ 1,26 milhão de capital de giro liberado.

Esse valor representa benefício de caixa e não aumento de EBITDA.

8.4. Valor financeiro do capital de giro

Considerando uma Selic de 13,75% a.a. como referência para o custo de oportunidade do capital:

# ============================================================
# BENEFICIO FINANCEIRO DO CAPITAL DE GIRO
# ============================================================

selic <- 0.1375

beneficio_financeiro <-
  capital_giro_liberado * selic

beneficio_financeiro
## [1] 172724.1

O benefício financeiro associado ao capital de giro é de aproximadamente R$ 173 mil por ano.

Assim, os impactos da proposta devem ser interpretados separadamente:

  • R$ 1,27 milhão/ano: economia operacional pelo desconto de 6%, com impacto em EBITDA;
  • R$ 1,26 milhão: capital de giro liberado, com impacto em caixa;
  • R$ 173 mil/ano: valor financeiro aproximado do capital de giro adicional, considerando a Selic como custo de oportunidade.

Os valores de EBITDA e capital de giro não devem ser somados como economia anual, pois representam impactos de naturezas diferentes.

Conclusão sobre a hipótese do Diretor Financeiro

A hipótese é parcialmente suportada.

A consolidação possui benefício econômico relevante, mas a expectativa de redução de preços de pelo menos 15% não é sustentada pela proposta disponível.

A Distrimed oferece 6% de desconto, equivalente a aproximadamente R$ 1,27 milhão por ano de impacto em EBITDA, além de aproximadamente R$ 1,26 milhão de liberação de capital de giro.


9. A proposta de exclusividade da Distrimed deve ser aceita?

A proposta apresenta benefícios financeiros relevantes, mas a exclusividade introduz riscos operacionais que precisam ser considerados.

9.1. Benefícios

  • R$ 1,27 milhão/ano de economia pelo desconto de 6%, com impacto em EBITDA;
  • R$ 1,26 milhão de capital de giro liberado;
  • aproximadamente R$ 173 mil/ano de benefício financeiro associado ao capital de giro;
  • consolidação de grande parte dos itens em um único distribuidor.

9.2. Riscos

O principal risco é operacional.

MedLog e Rápida Med, por exemplo, oferecem pronta entrega em até 6 horas e 4 horas, respectivamente, inclusive em fins de semana e feriados. Não há informação equivalente sobre o nível de serviço da Distrimed.

Esse risco é especialmente relevante porque o diagnóstico identificou forte crescimento das compras emergenciais em FY26. A exclusividade pode reduzir preços, mas também aumentar a exposição a rupturas caso o fornecedor único não consiga garantir disponibilidade e velocidade de entrega.

Além disso, alguns fornecedores possuem condições comerciais específicas. A FarmaCentro, por exemplo, oferece 2% de desconto adicional para pedidos programados com 15 dias de antecedência. Assim, o desconto nominal de 6% da Distrimed não necessariamente representa uma melhoria líquida de 6% frente à melhor condição comercial disponível para todos os itens.

A exclusividade também aumenta a dependência de um único fornecedor, concentrando aproximadamente 47,5% do valor das compras analisadas na Distrimed.

9.3. Recomendação

Não aceitar a exclusividade nos termos atuais sem condicionantes operacionais.

A proposta da Distrimed possui valor econômico relevante, mas a exclusividade deveria ser negociada condicionada a:

  • SLAs mínimos de disponibilidade e prazo de entrega;
  • mecanismos de contingência que permitam compras alternativas em caso de ruptura;
  • manutenção do desconto de 6% e do prazo de 60 dias;
  • acompanhamento periódico dos preços frente a referências de mercado.

Assim, a Distrimed pode ser utilizada como fornecedor preferencial, capturando benefícios de preço e capital de giro, sem expor o hospital desnecessariamente ao risco de dependência de um único fornecedor.

ALAVANCAS DE VALOR

A partir do diagnóstico, foram identificadas três principais alavancas de captura de valor:

  1. normalização do consumo anormal da UTI 2;
  2. redução das compras emergenciais;
  3. captura dos benefícios econômicos da proposta da Distrimed.

Para evitar superestimar o potencial, as alavancas foram avaliadas de forma sequencial e com ajustes para evitar dupla contagem.

10. Normalização do consumo da UTI 2

O diagnóstico identificou 9 itens com aumento anormal de intensidade de consumo na UTI 2. Utilizando a UTI 1 como benchmark interno e preços de referência de FY25, o excesso estimado corresponde a aproximadamente R$ 940 mil por ano.

Esse valor representa um teto teórico: não é possível afirmar que 100% do excesso seja eliminável. Por isso, foram construídos três cenários de captura.

# ============================================================
# ALAVANCA 1 - NORMALIZACAO DO CONSUMO DA UTI 2
# ============================================================

excesso_uti2_valor <- 939620.6

cenarios_uti2 <- data.frame(
  Cenario = c(
    "Conservador - 50%",
    "Base - 75%",
    "Maximo - 100%"
  ),
  Captura = c(
    0.50,
    0.75,
    1.00
  )
) %>%
  mutate(
    Economia_anual = excesso_uti2_valor * Captura
  )

cenarios_uti2
##             Cenario Captura Economia_anual
## 1 Conservador - 50%    0.50       469810.3
## 2        Base - 75%    0.75       704715.4
## 3     Maximo - 100%    1.00       939620.6

Os cenários resultam em uma oportunidade anual entre aproximadamente R$ 470 mil e R$ 940 mil.

No cenário-base, considerando captura de 75% do excesso identificado, a oportunidade é de aproximadamente R$ 705 mil por ano.


11. Redução das compras emergenciais

O diagnóstico também identificou forte deterioração das modalidades de compra em FY26.

A oportunidade não é calculada assumindo a eliminação completa das compras emergenciais, pois algum nível de emergência é inerente à operação hospitalar.

O contrafactual utilizado estima quanto do prêmio adicional de modalidade poderia ser evitado caso FY26 tivesse mantido o padrão observado em FY25, controlando pelo crescimento das quantidades.

A deterioração adicional estimada é de aproximadamente R$ 1,75 milhão.

# ============================================================
# ALAVANCA 2 - NORMALIZACAO DAS COMPRAS EMERGENCIAIS
# ============================================================

oportunidade_emergencial <- 1747000

cenarios_emergencial <- data.frame(
  Cenario = c(
    "Conservador - 50%",
    "Base - 75%",
    "Maximo - 100%"
  ),
  Captura = c(
    0.50,
    0.75,
    1.00
  )
) %>%
  mutate(
    Economia_anual = oportunidade_emergencial * Captura
  )

cenarios_emergencial
##             Cenario Captura Economia_anual
## 1 Conservador - 50%    0.50         873500
## 2        Base - 75%    0.75        1310250
## 3     Maximo - 100%    1.00        1747000

No cenário-base de 75%, a oportunidade bruta seria de aproximadamente R$ 1,31 milhão por ano.

11.1. Ajuste para evitar dupla contagem com a UTI 2

Parte da deterioração das compras emergenciais está concentrada nos mesmos 9 itens que apresentam consumo anormal na UTI 2.

A análise mostrou que:

  • aproximadamente R$ 458 mil, ou 26,2% da deterioração de modalidade, está nos 9 itens da UTI 2;
  • aproximadamente R$ 1,289 milhão, ou 73,8%, está nos outros 45 itens.

Como a base de pedidos não identifica a unidade assistencial de destino, não é possível provar que as compras emergenciais dos 9 itens foram causadas pela UTI 2.

Por prudência, entretanto, esses itens são excluídos da segunda alavanca para evitar potencial dupla contagem.

# ============================================================
# ALAVANCA 2 AJUSTADA - SEM OS 9 ITENS DA UTI 2
# ============================================================

oportunidade_emergencial_sem_uti2 <- 1289205

cenarios_emergencial_ajustado <- data.frame(
  Cenario = c(
    "Conservador - 50%",
    "Base - 75%",
    "Maximo - 100%"
  ),
  Captura = c(
    0.50,
    0.75,
    1.00
  )
) %>%
  mutate(
    Economia_anual =
      oportunidade_emergencial_sem_uti2 * Captura
  )

cenarios_emergencial_ajustado
##             Cenario Captura Economia_anual
## 1 Conservador - 50%    0.50       644602.5
## 2        Base - 75%    0.75       966903.8
## 3     Maximo - 100%    1.00      1289205.0

No cenário-base, a oportunidade independente associada à redução das compras emergenciais é de aproximadamente R$ 967 mil por ano.


12. Proposta da Distrimed após as melhorias operacionais

A situação atual deve ser distinguida da proposta futura:

  • atualmente, a Distrimed aparece como fornecedora de 6 itens;
  • na proposta de exclusividade, 46 dos 54 itens seriam elegíveis para migração;
  • 8 itens permanecem fora da proposta: oncológicos, equipos InfusaMed e grampeadores/cargas Covidien.

Em FY26, os 46 itens elegíveis representam aproximadamente R$ 21,14 milhões em compras.

Entretanto, não é adequado aplicar os 6% de desconto diretamente sobre esse valor e somar o resultado às alavancas operacionais. Parte das reduções de consumo e de compras emergenciais ocorre justamente nos itens que seriam elegíveis à Distrimed.

12.1. Ajuste da base elegível

No cenário-base:

  • R$ 365 mil da economia de consumo da UTI 2 ocorre em itens elegíveis à Distrimed;
  • R$ 742 mil da economia de emergenciais ocorre em itens elegíveis à Distrimed.

Assim, aproximadamente R$ 1,107 milhão das melhorias operacionais reduz a base futura sobre a qual incidiria o desconto da Distrimed.

# ============================================================
# BASE DISTRIMED APOS MELHORIAS OPERACIONAIS
# ============================================================

# Valor FY26 dos 46 itens elegiveis a proposta
base_distrimed_original <- 21138909

# Economias operacionais do cenario-base que ocorrem
# nos itens elegiveis a Distrimed
economia_uti2_elegivel <- 365217
economia_emergencial_elegivel <- 741584

economia_operacional_elegivel <-
  economia_uti2_elegivel +
  economia_emergencial_elegivel

# Base remanescente apos melhorias operacionais
base_distrimed_ajustada <-
  base_distrimed_original -
  economia_operacional_elegivel

base_distrimed_ajustada
## [1] 20032108

A base ajustada da proposta cai de R$ 21,14 milhões para aproximadamente R$ 20,03 milhões.

12.2. Economia de preço da Distrimed

Aplicando o desconto de 6% sobre a base remanescente:

# ============================================================
# ECONOMIA DISTRIMED - BASE AJUSTADA
# ============================================================

economia_distrimed_ajustada <-
  base_distrimed_ajustada * 0.06

economia_distrimed_ajustada
## [1] 1201926

A oportunidade adicional é de aproximadamente R$ 1,20 milhão por ano de EBITDA.


13. Potencial consolidado de EBITDA

No cenário-base, as três alavancas podem ser consolidadas da seguinte forma:

# ============================================================
# POTENCIAL CONSOLIDADO DE EBITDA - CENARIO BASE
# ============================================================

economia_uti2_base <- 939620.6 * 0.75

economia_emergencial_base <-
  1289205 * 0.75

economia_distrimed_base <-
  base_distrimed_ajustada * 0.06

alavancas_base <- data.frame(
  Alavanca = c(
    "Normalizacao do consumo da UTI 2",
    "Reducao de compras emergenciais",
    "Desconto Distrimed"
  ),
  EBITDA_anual = c(
    economia_uti2_base,
    economia_emergencial_base,
    economia_distrimed_base
  )
)

alavancas_base <- alavancas_base %>%
  mutate(
    EBITDA_milhoes = EBITDA_anual / 1e6,
    Participacao = EBITDA_anual /
      sum(EBITDA_anual) * 100
  )

alavancas_base
##                           Alavanca EBITDA_anual EBITDA_milhoes Participacao
## 1 Normalizacao do consumo da UTI 2     704715.4      0.7047154     24.52425
## 2  Reducao de compras emergenciais     966903.8      0.9669037     33.64846
## 3               Desconto Distrimed    1201926.5      1.2019265     41.82730
potencial_ebitda_base <-
  sum(alavancas_base$EBITDA_anual)

potencial_ebitda_base
## [1] 2873546

O cenário-base indica aproximadamente R$ 2,87 milhões por ano de potencial de melhoria de EBITDA, sem dupla contagem:

  • R$ 0,70 milhão/ano com normalização do consumo da UTI 2;
  • R$ 0,97 milhão/ano com redução das compras emergenciais nos demais itens;
  • R$ 1,20 milhão/ano com o desconto da Distrimed sobre a base remanescente elegível.

Esse valor representa um potencial estimado, e não uma economia garantida. O cenário pressupõe captura de 75% das duas oportunidades operacionais e implementação do desconto de 6% da Distrimed.


14. Impacto adicional em caixa

Além do impacto em EBITDA, a proposta da Distrimed oferece prazo de pagamento de 60 dias.

Após as melhorias operacionais, a base elegível remanescente é de aproximadamente R$ 20,03 milhões.

Considerando o prazo médio atual de 38,3 dias, a migração para 60 dias adicionaria aproximadamente 21,7 dias de prazo.

# ============================================================
# CAPITAL DE GIRO - BASE DISTRIMED AJUSTADA
# ============================================================

prazo_medio_atual <- 38.30995
prazo_distrimed <- 60

ganho_dias <-
  prazo_distrimed - prazo_medio_atual

capital_giro_ajustado <-
  base_distrimed_ajustada *
  ganho_dias / 365

capital_giro_ajustado
## [1] 1190404

O aumento do prazo de pagamento representa aproximadamente R$ 1,19 milhão de capital de giro liberado.

Esse valor corresponde a impacto em caixa e não EBITDA.

Considerando Selic de 13,75% a.a. como custo de oportunidade:

# ============================================================
# BENEFICIO FINANCEIRO DO CAPITAL DE GIRO
# ============================================================

selic <- 0.1375

beneficio_financeiro_ajustado <-
  capital_giro_ajustado * selic

beneficio_financeiro_ajustado
## [1] 163680.5

O valor financeiro aproximado do capital de giro adicional é de R$ 164 mil por ano.


15. Síntese das alavancas

No cenário-base, o Hospital Vértice possui aproximadamente:

R$ 2,87 milhões/ano de potencial de melhoria de EBITDA, provenientes de:

  • normalização do consumo anormal da UTI 2;
  • redução das compras emergenciais;
  • desconto da Distrimed sobre a base remanescente elegível.

Adicionalmente, a extensão do prazo de pagamento da Distrimed pode gerar aproximadamente R$ 1,19 milhão de liberação de capital de giro, com valor financeiro estimado em R$ 164 mil por ano.

A captura deve ser sequenciada: primeiro corrigir consumo e processo de compras, reduzindo a base de gastos; depois aplicar a negociação comercial sobre a base remanescente. Essa abordagem evita dupla contagem e impede que uma solução comercial seja utilizada para mascarar problemas operacionais.

16. Avaliação qualitativa das alavancas

A quantificação das oportunidades deve ser complementada pela avaliação de viabilidade operacional, riscos e trade-offs. Nem todo o potencial identificado deve ser interpretado como economia automaticamente capturável.

16.1. Normalização do consumo da UTI 2

Prós Contras / riscos
Benchmark interno robusto: UTI 1 e UTI 2 possuem perfil de pacientes semelhante A base não permite identificar diretamente a causa clínica ou operacional do aumento
Anomalia concentrada em apenas 9 itens Podem existir diferenças clínicas entre as UTIs não observadas nos dados
Ruptura temporal clara a partir de set/25 Redução indiscriminada de consumo pode gerar risco assistencial
Potencial de até R$ 0,94 mi/ano antes da aplicação dos cenários de captura Requer validação com equipes clínica, farmácia e enfermagem antes da captura

Implicação: a oportunidade é relevante, mas não deve ser implementada como uma meta direta de corte. O primeiro passo deve ser investigar dispensação, estoque, protocolos e práticas assistenciais dos 9 itens na UTI 2, utilizando a UTI 1 como benchmark interno.


16.2. Redução das compras emergenciais

Prós Contras / riscos
O aumento das emergenciais é amplo e não restrito a poucos itens Algum nível de compra emergencial é inerente à operação hospitalar
Todos os 54 itens apresentaram compras contratuais e emergenciais em FY26 Parte das emergências pode decorrer de indisponibilidade externa, e não apenas de falhas internas
Compras emergenciais apresentam prêmio relevante frente ao preço contratual Fornecedores de pronta entrega oferecem flexibilidade importante em situações críticas
Estoques mínimos e pontos de reposição não são revisados desde 2023 Reduzir excessivamente o uso de fornecedores emergenciais pode elevar risco de ruptura

Implicação: o objetivo não deve ser eliminar compras emergenciais, mas normalizá-las para níveis compatíveis com a operação hospitalar. A revisão dos parâmetros de estoque, pontos de reposição e planejamento de compras deve ser priorizada.


16.3. Consolidação com a Distrimed

A proposta da Distrimed apresenta benefício econômico relevante, mas deve ser avaliada considerando os riscos adicionais introduzidos pela exclusividade.

Prós Contras / riscos
Desconto de 6% sobre os itens elegíveis Desconto inferior aos 15% inicialmente esperados pelo Diretor Financeiro
Aproximadamente R$ 1,20 mi/ano de potencial adicional de EBITDA após os ajustes operacionais Maior dependência de um único fornecedor
Prazo de pagamento de 60 dias Não há informação de SLA de entrega equivalente aos fornecedores de pronta entrega
Aproximadamente R$ 1,19 mi de capital de giro liberado Pode reduzir flexibilidade para responder a rupturas e urgências
Simplificação da gestão e consolidação da base de fornecedores Alguns fornecedores atuais possuem condições comerciais específicas que podem ser perdidas
Distribuidor de linha ampla Não cobre oncológicos, equipos InfusaMed e grampeadores/cargas Covidien

Implicação: a proposta cria valor, mas a exclusividade não deve ser aceita sem proteções operacionais. A negociação deve incluir SLAs de disponibilidade e entrega, mecanismos de contingência, possibilidade de compras alternativas em caso de ruptura e benchmarking periódico de preços.


16.4. Sequenciamento recomendado

As alavancas não devem ser implementadas de forma independente ou simultânea sem considerar suas interações.

A sequência recomendada é:

1. Corrigir consumo e reposição

Investigar a anomalia da UTI 2 e revisar estoques mínimos, pontos de reposição e planejamento de compras.

2. Reduzir a dependência de compras emergenciais

Normalizar o processo de abastecimento sem eliminar a flexibilidade necessária para situações críticas.

3. Renegociar e consolidar a base remanescente

Após reduzir volumes evitáveis e emergenciais, aplicar a negociação comercial da Distrimed sobre a base de compras remanescente.

Essa sequência evita que o hospital simplesmente “compre mais barato aquilo que não deveria estar comprando ou consumindo em excesso” e reduz o risco de utilizar uma solução comercial para mascarar problemas operacionais.

Conclusão

As três alavancas são complementares, mas possuem diferentes níveis de risco e controle. As oportunidades operacionais devem ser capturadas antes da consolidação comercial, enquanto uma eventual exclusividade com a Distrimed deve ser condicionada a garantias de nível de serviço e contingência.

VISÃO DE MERCADO

17. Benchmarks externos

Para avaliar se as recomendações propostas ao Hospital Vértice são consistentes com práticas do setor, foram analisadas referências de hospitais brasileiros e internacionais, além de práticas recomendadas por sistemas e organizações de saúde.

Os benchmarks convergem para quatro práticas principais:

  1. segmentação dos itens por valor e criticidade;
  2. reposição dinâmica baseada em consumo, estoque e lead time;
  3. integração de dados de estoque, consumo e compras;
  4. uso de escala e consolidação para negociação comercial.

17.1. Hospital de excelência de São Paulo: segmentação e padronização

Estudo da Fundação Getulio Vargas sobre a cadeia de suprimentos de um hospital de excelência de São Paulo, identificado como “Hospital H”, encontrou práticas como padronização e redução do portfólio de materiais, utilização de ferramentas de tecnologia da informação e classificação ABC-XYZ para apoiar a compra de medicamentos.

A classificação permite diferenciar os itens segundo sua relevância econômica e características de demanda, evitando uma política uniforme para materiais com perfis muito distintos.

Aplicação ao Hospital Vértice

A prática é diretamente aplicável ao Vértice. O hospital pode segmentar os materiais e medicamentos por impacto financeiro e criticidade operacional, estabelecendo políticas distintas de estoque e reposição.

Por exemplo:

  • itens de alto valor exigem maior controle financeiro;
  • itens críticos para a assistência exigem maior proteção contra ruptura;
  • itens de menor criticidade podem operar com níveis de estoque mais enxutos.

Isso é particularmente relevante porque os parâmetros de estoque mínimo e ponto de reposição do Vértice não são revisados desde 2023.

Fonte: Fundação Getulio Vargas. Práticas de gestão da cadeia de suprimentos em hospitais.
Consultar estudo da FGV


17.2. Hospital privado: sistema Kanban para reposição de medicamentos

Um estudo publicado em 2025 avaliou a implementação de um sistema 2-bin Kanban para gestão de medicamentos em um hospital privado de 120 leitos.

A lógica do sistema é manter dois estoques: quando o primeiro é consumido, isso funciona como um gatilho de reposição, enquanto o segundo mantém o abastecimento até a chegada do novo pedido.

O princípio reduz a dependência de decisões reativas de compra e cria um sinal objetivo para iniciar a reposição antes da ruptura.

Aplicação ao Hospital Vértice

Não é necessário replicar literalmente um sistema físico de dois estoques para todos os itens. O principal aprendizado para o Vértice é estabelecer gatilhos claros e antecipados de reposição, especialmente para itens de maior criticidade.

A prática pode contribuir para reduzir o ciclo observado no diagnóstico:

estoque insuficiente → risco de ruptura → compra emergencial → prêmio de preço

A aplicação deveria ser priorizada nos itens com maior frequência de compras emergenciais e maior criticidade assistencial.

Fonte: Pharmaceutical Inventory Management Using Kanban Card in a 2-bin System in a Private Hospital, 2025.
Consultar estudo


17.3. Hospital Universitário da USP: reposição baseada em consumo e lead time

O Hospital Universitário da Universidade de São Paulo implementou um sistema informatizado de gestão de materiais no qual a necessidade de compras passou a considerar variáveis como ponto de reposição, prazo de entrega, consumo médio e classificação ABC/XYZ.

A prática aproxima a decisão de compra da demanda efetivamente observada e das características de abastecimento de cada item.

Aplicação ao Hospital Vértice

Esse benchmark é particularmente aderente ao diagnóstico do Vértice.

Em vez de manter parâmetros definidos em 2023, o hospital deveria recalcular periodicamente os pontos de reposição incorporando:

Consumo esperado + lead time do fornecedor + estoque de segurança

Assim, um fornecedor com maior prazo de entrega ou um item com maior volatilidade de consumo exigiria proteção diferente de um item previsível e rapidamente reposto.

A medida atua diretamente sobre a principal hipótese operacional levantada no diagnóstico: parâmetros de reposição desatualizados contribuindo para o crescimento das compras emergenciais.

Fonte: estudo sobre o sistema de gestão de materiais do Hospital Universitário da USP, publicado na Revista da Escola de Enfermagem da USP.
Consultar estudo no SciELO


17.4. Ministério da Saúde: integração entre estoque e planejamento de compras

Em 2026, o Ministério da Saúde apresentou uma nova versão do Sistema de Administração de Material (Sismat), integrando informações de estoque, movimentação, distribuição, rastreabilidade e planejamento de compras.

Segundo o Ministério, a maior capacidade de monitoramento de estoques, antecipação de perdas e planejamento pode gerar economia de até R$ 300 milhões em seis meses.

Aplicação ao Hospital Vértice

A escala do Ministério da Saúde é muito superior à do Vértice, portanto o valor econômico não é diretamente comparável.

O princípio de gestão, entretanto, é aplicável: informações de consumo, estoque e compras não deveriam ser analisadas isoladamente.

O Vértice deveria desenvolver uma visão integrada contendo, por item:

consumo → estoque disponível → cobertura → pedidos em aberto → lead time → risco de ruptura → compras emergenciais

Essa visibilidade permitiria antecipar desvios antes que eles se transformassem em compras emergenciais.

Fonte: Ministério da Saúde. Sistema reúne controle de estoques e planejamento de compras no Ministério da Saúde, 2026.
Consultar Ministério da Saúde


17.5. Organização Mundial da Saúde: forecasting e prevenção de rupturas

A Organização Mundial da Saúde recomenda que a gestão de suprimentos de saúde incorpore práticas como forecasting e quantificação da demanda, monitoramento do consumo, estoque de segurança, níveis de alerta e acompanhamento do tempo de reposição.

A OMS também propõe indicadores de alerta para prevenir tanto stockouts quanto excesso de estoque.

A lógica é equilibrar dois riscos:

Estoque insuficiente → ruptura + compras emergenciais

Estoque excessivo → capital imobilizado + risco de perdas e vencimento

Aplicação ao Hospital Vértice

O benchmark reforça que a resposta ao crescimento das compras emergenciais não deve ser simplesmente aumentar estoques.

O Vértice deveria monitorar, por item:

  • consumo real versus previsto;
  • cobertura de estoque;
  • frequência de ruptura;
  • lead time real por fornecedor;
  • percentual de compras emergenciais;
  • perdas e vencimentos.

Os parâmetros deveriam ser revisados periodicamente conforme a evolução desses indicadores.

Fontes: World Health Organization. Procurement, supply chain and inventory management e indicadores para prevenção de stockouts e overstocking.
Consultar orientação da OMS

Consultar indicadores da OMS


17.6. NHS England: escala e negociação estratégica

O NHS England reportou aproximadamente £1,2 bilhão de economia em medicamentos ao longo de três anos, com contribuição relevante da negociação de melhores preços para medicamentos hospitalares, além de outras iniciativas como adoção de biossimilares.

O benchmark demonstra o potencial de utilizar escala, consolidação de demanda e negociação estruturada para reduzir custos de medicamentos.

Aplicação ao Hospital Vértice

A experiência reforça a lógica do Diretor Financeiro de que a consolidação de compras pode gerar valor.

Entretanto, o benchmark não valida a premissa de redução mínima de 15% defendida pelo diretor.

No Vértice, existe uma proposta concreta da Distrimed de 6%. Após considerar as melhorias operacionais e evitar dupla contagem, o desconto representa aproximadamente R$ 1,20 milhão por ano de potencial adicional de EBITDA no cenário-base.

Portanto:

o benchmark valida a estratégia de negociação e consolidação, mas não o percentual de economia assumido pelo Diretor Financeiro.

Fonte: NHS England. Economia de medicamentos e atuação da Commercial Medicines Unit.
Consultar NHS England


18. Síntese dos benchmarks

Benchmark Prática observada Aplicação ao Vértice
Hospital H - FGV ABC-XYZ, padronização e TI Segmentar itens por valor e criticidade
Hospital privado Kanban 2-bin Criar gatilhos antecipados de reposição
HU-USP Consumo + lead time + ponto de reposição Recalibrar parâmetros de estoque
Ministério da Saúde Integração entre estoque e planejamento Criar visão integrada de consumo, estoque e compras
OMS Forecasting, estoque de segurança e alertas Evitar simultaneamente ruptura e excesso de estoque
NHS England Escala e negociação Consolidar e negociar a base remanescente

19. Implicações para o Hospital Vértice

Os benchmarks externos são consistentes com o diagnóstico quantitativo do Hospital Vértice e reforçam quatro recomendações.

1. Segmentar os itens por valor e criticidade

O hospital não deveria aplicar a mesma lógica de estoque a todos os materiais e medicamentos. A classificação ABC-XYZ pode orientar diferentes níveis de controle e proteção contra ruptura.

2. Tornar a reposição dinâmica

Estoque mínimo e ponto de reposição devem incorporar consumo recente, volatilidade da demanda, criticidade e lead time dos fornecedores, substituindo parâmetros que permanecem inalterados desde 2023.

3. Integrar consumo, estoque e compras

O monitoramento deve permitir identificar antecipadamente aumento de consumo, queda de cobertura e risco de ruptura, reduzindo a necessidade de compras emergenciais.

4. Usar consolidação como alavanca comercial, sem comprometer resiliência

A experiência internacional sustenta o uso de escala para negociação. No Vértice, entretanto, a consolidação com a Distrimed deve ocorrer somente com SLAs de disponibilidade e entrega, mecanismos de contingência e benchmarking periódico de preços.

Conclusão

A visão de mercado reforça que a redução sustentável da despesa com materiais e medicamentos não depende de uma única negociação de preço.

As práticas observadas apontam para uma combinação de gestão de demanda, segmentação de estoques, reposição orientada por dados, disciplina de compras e negociação estratégica com fornecedores.

Para o Hospital Vértice, isso reforça o sequenciamento recomendado:

1. corrigir desvios de consumo;

2. recalibrar estoques e reposição;

3. reduzir compras emergenciais;

4. consolidar e negociar a base remanescente com garantias de abastecimento.

APÊNDICE — CÓDIGO COMPLETO

Código utilizado na análise

Esta seção reúne o código utilizado para tratamento das bases, construção das análises e cálculo das principais estimativas apresentadas neste documento.

O código é incluído para garantir transparência, rastreabilidade e reprodutibilidade dos resultados. Os comentários foram mantidos para explicitar a lógica utilizada em cada etapa.


APÊNDICE TÉCNICO

Código completo da análise

O código abaixo reúne as rotinas utilizadas para tratamento das bases, construção das análises e cálculo das estimativas apresentadas neste documento.

Ele é disponibilizado para garantir transparência, rastreabilidade e reprodutibilidade dos resultados e permanece recolhido por padrão para preservar a leitura executiva do relatório.

▶ Abrir código completo da análise


# COLE TODO O SEU CODIGO AQUI
# ============================================================
# 01. PREPARACAO E IMPORTACAO DAS BASES
# ============================================================
#
# Objetivo:
# Importar as abas disponibilizadas no arquivo-base do case
# e criar os objetos utilizados ao longo da analise.
# ============================================================

excel_sheets("C:/Users/helen/Downloads/PRG - Base Hospital Vértice.xlsx")

library(readxl)

# Caminho do arquivo
arquivo <- "C:/Users/helen/Downloads/PRG - Base Hospital Vértice.xlsx"

# Importar cada aba
pedidos <- read_excel(arquivo, sheet = "Pedidos de Compra")
consumo <- read_excel(arquivo, sheet = "Consumo por Unidade")
volumetria <- read_excel(arquivo, sheet = "Volumetria")
itens <- read_excel(arquivo, sheet = "Cadastro de Itens")
contratos <- read_excel(arquivo, sheet = "Contratos")
legenda <- read_excel(arquivo, sheet = "Legenda")


# ============================================================
# 02. ANALISE DE VOLUMETRIA
# ============================================================
#
# Objetivo:
# Avaliar quanto cresceu cada indicador de atividade
# hospitalar entre FY25 e FY26.
# ============================================================

# Classificar os meses entre FY25 e FY26
volumetria <- volumetria %>%
  mutate(
    periodo = if_else(row_number() <= 12, "FY25", "FY26")
  )

# Consolidar cada atividade dentro de cada exercicio
volume_ano <- volumetria %>%
  group_by(periodo) %>%
  summarise(
    across(
      where(is.numeric),
      ~ sum(.x, na.rm = TRUE)
    )
  )

# Calcular o crescimento entre FY25 e FY26
crescimento_volume <- volume_ano %>%
  summarise(
    across(
      where(is.numeric),
      ~ (.x[periodo == "FY26"] / .x[periodo == "FY25"] - 1) * 100
    )
  )

print(crescimento_volume, width = Inf)

# CONCLUSAO:
# O crescimento da atividade, isoladamente, parece insuficiente
# para explicar o aumento de 14,1% da despesa.
#
# Todas as linhas assistenciais cresceram menos que a despesa.
# Oncologia apresentou o maior crescimento (+10,7%), enquanto
# as demais ficaram aproximadamente entre 4% e 6%.


# ============================================================
# 03. ANALISE DA INTENSIDADE DE CONSUMO
# ============================================================
#
# Objetivo:
# Verificar se o consumo cresceu apenas em funcao do aumento
# da atividade ou se houve mudanca no consumo por
# paciente/procedimento.
#
# Intensidade de consumo =
# quantidade dispensada / atividade da unidade
# ============================================================

library(tidyr)

# Transformar a volumetria para formato longo
volumetria_long <- volumetria %>%
  select(-periodo) %>%
  pivot_longer(
    cols = -Mês,
    names_to = "Unidade Assistencial",
    values_to = "Atividade"
  )

# Padronizar os nomes das unidades assistenciais
volumetria_long <- volumetria_long %>%
  mutate(
    `Unidade Assistencial` = case_when(
      `Unidade Assistencial` == "Pacientes-dia UTI 1" ~ "UTI 1",
      `Unidade Assistencial` == "Pacientes-dia UTI 2" ~ "UTI 2",
      `Unidade Assistencial` == "Pacientes-dia Clínica Médica" ~ "Clínica Médica",
      `Unidade Assistencial` == "Pacientes-dia Clínica Cirúrgica" ~ "Clínica Cirúrgica",
      `Unidade Assistencial` == "Pacientes-dia Pediatria" ~ "Pediatria",
      `Unidade Assistencial` == "Cirurgias (Centro Cirúrgico)" ~ "Centro Cirúrgico",
      `Unidade Assistencial` == "Atendimentos Pronto-Socorro" ~ "Pronto-Socorro",
      `Unidade Assistencial` == "Sessões de quimioterapia (Oncologia)" ~ "Oncologia Ambulatorial"
    )
  )

# Integrar consumo e atividade hospitalar
consumo_atividade <- consumo %>%
  left_join(
    volumetria_long,
    by = c("Mês", "Unidade Assistencial")
  ) %>%
  mutate(
    consumo_por_atividade =
      `Quantidade dispensada (unidades)` / Atividade
  )

# Classificar os registros entre FY25 e FY26
consumo_atividade <- consumo_atividade %>%
  mutate(
    periodo = if_else(
      Mês %in% c("set/24", "out/24", "nov/24", "dez/24",
                 "jan/25", "fev/25", "mar/25", "abr/25",
                 "mai/25", "jun/25", "jul/25", "ago/25"),
      "FY25",
      "FY26"
    )
  )

# Agregar consumo e atividade por item, unidade e exercicio
intensidade_ano <- consumo_atividade %>%
  group_by(`Código do Item`, `Unidade Assistencial`, periodo) %>%
  summarise(
    consumo_total = sum(`Quantidade dispensada (unidades)`, na.rm = TRUE),
    atividade_total = sum(Atividade, na.rm = TRUE),
    consumo_por_atividade = consumo_total / atividade_total,
    .groups = "drop"
  )

# Comparar a intensidade entre FY25 e FY26
comparacao_intensidade <- intensidade_ano %>%
  select(
    `Código do Item`,
    `Unidade Assistencial`,
    periodo,
    consumo_por_atividade
  ) %>%
  pivot_wider(
    names_from = periodo,
    values_from = consumo_por_atividade
  )

# Calcular a variacao da intensidade
comparacao_intensidade <- comparacao_intensidade %>%
  mutate(
    crescimento_intensidade = (FY26 / FY25 - 1) * 100
  )

comparacao_intensidade <- comparacao_intensidade %>%
  arrange(desc(crescimento_intensidade))


# ============================================================
# 03.1. IDENTIFICACAO DE DESVIOS POR UNIDADE
# ============================================================

# Resumir a variacao de intensidade por unidade
comparacao_intensidade %>%
  group_by(`Unidade Assistencial`) %>%
  summarise(
    n_itens = n(),
    media_crescimento = mean(crescimento_intensidade, na.rm = TRUE),
    mediana_crescimento = median(crescimento_intensidade, na.rm = TRUE),
    max_crescimento = max(crescimento_intensidade, na.rm = TRUE)
  ) %>%
  arrange(desc(mediana_crescimento))

# Identificar itens com crescimento superior a 20%
comparacao_intensidade %>%
  filter(crescimento_intensidade > 20) %>%
  count(`Unidade Assistencial`, name = "itens_acima_20pct") %>%
  arrange(desc(itens_acima_20pct))

# Detalhar os itens da UTI 2
comparacao_intensidade %>%
  filter(`Unidade Assistencial` == "UTI 2") %>%
  arrange(desc(crescimento_intensidade)) %>%
  print(n = Inf)

# CONCLUSAO:
# O aumento da intensidade de consumo esta concentrado na UTI 2.
#
# Nove itens apresentaram aumento de aproximadamente 70% a 89%
# entre FY25 e FY26, enquanto nenhum dos outros 37 itens da
# UTI 2 cresceu mais de 5%.
#
# Nenhuma outra unidade apresentou itens com crescimento
# superior a 20%.


# ============================================================
# 03.2. ANALISE TEMPORAL DOS 9 ITENS DA UTI 2
# ============================================================
#
# Objetivo:
# Identificar quando ocorreu a mudanca de intensidade dos
# nove itens e avaliar sua compatibilidade temporal com a
# implantacao da prescricao eletronica em fev/26.
# ============================================================

itens_anormais_uti2 <- comparacao_intensidade %>%
  filter(
    `Unidade Assistencial` == "UTI 2",
    crescimento_intensidade > 20
  ) %>%
  pull(`Código do Item`)

serie_uti2 <- consumo_atividade %>%
  filter(
    `Unidade Assistencial` == "UTI 2",
    `Código do Item` %in% itens_anormais_uti2
  ) %>%
  select(
    Mês,
    `Código do Item`,
    consumo_por_atividade
  )

serie_uti2_tabela <- serie_uti2 %>%
  pivot_wider(
    names_from = `Código do Item`,
    values_from = consumo_por_atividade
  )

print(serie_uti2_tabela, n = Inf, width = Inf)

# CONCLUSAO:
# Nao ha evidencia temporal de que a prescricao eletronica
# explique o inicio do aumento observado na UTI 2.
#
# O salto dos nove itens ocorre em set/25, aproximadamente
# cinco meses antes da implantacao do sistema em fev/26.

# Grafico da evolucao mensal
install.packages("ggplot2")

library(ggplot2)

ggplot(
  serie_uti2,
  aes(
    x = factor(Mês, levels = unique(Mês)),
    y = consumo_por_atividade,
    group = 1
  )
) +
  geom_line(linewidth = 0.8) +
  geom_point(size = 1) +
  geom_vline(
    xintercept = 12.5,
    linetype = "dashed"
  ) +
  facet_wrap(
    ~ `Código do Item`,
    scales = "free_y"
  ) +
  labs(
    title = "Quebra de intensidade de consumo na UTI 2",
    subtitle = "Os 9 itens apresentam mudança de patamar a partir de set/25",
    x = "Mês",
    y = "Consumo por paciente-dia"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 90, size = 6)
  )

# CONCLUSAO:
# Os nove itens anormais apresentam uma quebra abrupta e
# simultanea na intensidade entre ago/25 e set/25.
#
# Apos a quebra, o consumo por paciente-dia permanece em
# patamar elevado durante todo FY26.
#
# Como a mudanca antecede a prescricao eletronica em cerca
# de cinco meses, o sistema nao explica o inicio da anomalia.
#
# O padrao simultaneo sugere um evento ou processo comum
# aos nove itens especificamente na UTI 2, cuja causa
# ainda precisa ser investigada.


# ============================================================
# 03.3. BENCHMARK INTERNO: UTI 1 VS. UTI 2
# ============================================================
#
# Objetivo:
# Utilizar a UTI 1 como benchmark interno para a UTI 2,
# dado o perfil semelhante de pacientes informado no case.
# ============================================================

intensidade_limpa <- intensidade_ano

names(intensidade_limpa) <- c(
  "item",
  "unidade",
  "periodo",
  "consumo_total",
  "atividade_total",
  "intensidade"
)

names(intensidade_limpa)

comparacao_limpa <- intensidade_limpa %>%
  select(item, unidade, periodo, intensidade) %>%
  pivot_wider(
    names_from = periodo,
    values_from = intensidade
  ) %>%
  mutate(
    crescimento = (FY26 / FY25 - 1) * 100
  )

nrow(comparacao_limpa)

comparacao_uti <- comparacao_limpa %>%
  filter(
    item %in% itens_anormais_uti2,
    unidade %in% c("UTI 1", "UTI 2")
  ) %>%
  select(item, unidade, FY25, FY26, crescimento) %>%
  arrange(item, unidade)

print(comparacao_uti, n = Inf)


# ============================================================
# 03.4. CARACTERIZACAO DOS 9 ITENS ANORMAIS
# ============================================================
#
# Objetivo:
# Avaliar categoria, subcategoria, fabricante e fornecedor
# dos nove itens para identificar caracteristicas comuns.
# ============================================================

glimpse(itens)

itens_limpo <- itens

names(itens_limpo) <- c(
  "item",
  "descricao",
  "fabricante",
  "categoria",
  "subcategoria",
  "fornecedor"
)

itens_9 <- itens_limpo %>%
  filter(item %in% itens_anormais_uti2)

print(itens_9, n = Inf, width = Inf)


# ============================================================
# 04. ANALISE DE PRECOS DE COMPRA
# ============================================================
#
# Objetivo:
# Avaliar quanto os precos efetivamente pagos pelo hospital
# variaram entre FY25 e FY26.
#
# Nesta etapa, o preco pago ainda incorpora tanto reajustes
# do preco-base quanto efeitos da modalidade de compra.
# ============================================================

glimpse(pedidos)

pedidos_limpo <- pedidos

names(pedidos_limpo) <- c(
  "data",
  "mes",
  "pedido",
  "item",
  "descricao",
  "categoria",
  "fornecedor",
  "tipo_compra",
  "quantidade",
  "preco_pago",
  "preco_contrato",
  "valor_total"
)

names(pedidos_limpo)

# Classificar os pedidos por periodo fiscal
pedidos_limpo <- pedidos_limpo %>%
  mutate(
    periodo = if_else(
      mes %in% c(
        "set/24", "out/24", "nov/24", "dez/24",
        "jan/25", "fev/25", "mar/25", "abr/25",
        "mai/25", "jun/25", "jul/25", "ago/25"
      ),
      "FY25",
      "FY26"
    )
  )

table(pedidos_limpo$periodo)

# Calcular o preco medio ponderado de cada item
preco_item_periodo <- pedidos_limpo %>%
  group_by(item, periodo) %>%
  summarise(
    quantidade_total = sum(quantidade, na.rm = TRUE),
    valor_total_comprado = sum(valor_total, na.rm = TRUE),
    preco_medio = valor_total_comprado / quantidade_total,
    .groups = "drop"
  )

print(preco_item_periodo, n = Inf)

# Comparar o preco efetivamente pago entre FY25 e FY26
comparacao_precos <- preco_item_periodo %>%
  select(item, periodo, preco_medio) %>%
  pivot_wider(
    names_from = periodo,
    values_from = preco_medio
  ) %>%
  mutate(
    variacao_preco = (FY26 / FY25 - 1) * 100
  ) %>%
  arrange(desc(variacao_preco))

print(comparacao_precos, n = Inf)

# CONCLUSAO:
# Todos os 54 itens ficaram mais caros entre FY25 e FY26.
#
# Cinquenta itens apresentaram aumentos entre aproximadamente
# 9,0% e 11,6%, enquanto MED-4001 a MED-4004 tiveram aumentos
# menores, de aproximadamente 4,5% a 4,8%.

comparacao_precos %>%
  summarise(
    media = mean(variacao_preco),
    mediana = median(variacao_preco),
    minimo = min(variacao_preco),
    maximo = max(variacao_preco)
  )

# O preco efetivamente pago ainda combina reajuste do preco-base
# e efeito da modalidade de compra. Esses componentes serao
# separados posteriormente.

# Estimativa preliminar do efeito do preco efetivamente pago
efeito_preco <- preco_item_periodo %>%
  select(item, periodo, quantidade_total, preco_medio) %>%
  pivot_wider(
    names_from = periodo,
    values_from = c(quantidade_total, preco_medio)
  ) %>%
  mutate(
    efeito_preco = quantidade_total_FY26 *
      (preco_medio_FY26 - preco_medio_FY25)
  ) %>%
  arrange(desc(efeito_preco))

print(efeito_preco, n = Inf)

efeito_preco %>%
  select(item, efeito_preco) %>%
  print(n = Inf)

total_efeito_preco <- sum(efeito_preco$efeito_preco, na.rm = TRUE)

total_efeito_preco

# Interpretacao:
# Se o hospital tivesse comprado as quantidades de FY26 aos
# precos medios efetivamente pagos em FY25, teria gasto cerca
# de R$ 3,51 milhoes a menos.
#
# Este valor nao sera utilizado como efeito preco puro na
# decomposicao final, pois incorpora modalidade de compra.

# Grafico da variacao de preco
grafico_precos <- comparacao_precos %>%
  arrange(variacao_preco) %>%
  mutate(
    item = factor(item, levels = item)
  )

ggplot(
  grafico_precos,
  aes(x = item, y = variacao_preco)
) +
  geom_col() +
  geom_hline(
    yintercept = median(comparacao_precos$variacao_preco),
    linetype = "dashed"
  ) +
  coord_flip() +
  labs(
    title = "Variação do preço médio por item",
    subtitle = "FY26 vs. FY25 | Linha tracejada indica a mediana",
    x = NULL,
    y = "Variação do preço (%)"
  ) +
  theme_minimal()


# ============================================================
# 05. ANALISE DAS MODALIDADES DE COMPRA
# ============================================================
#
# Objetivo:
# Avaliar como a composicao entre contrato, spot e emergencial
# mudou entre FY25 e FY26.
# ============================================================

modalidade_periodo <- pedidos_limpo %>%
  group_by(periodo, tipo_compra) %>%
  summarise(
    valor_comprado = sum(valor_total, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  group_by(periodo) %>%
  mutate(
    participacao = valor_comprado / sum(valor_comprado) * 100
  ) %>%
  ungroup()

modalidade_periodo

# CONCLUSAO:
# Em FY25, compras emergenciais representavam 4,8% do valor
# comprado. Em FY26, passaram para 21,2%.
#
# Compras via contrato cairam de 85,3% para 69,4%, enquanto
# spot permaneceu praticamente estavel, de 9,9% para 9,4%.

# Verificar disponibilidade do preco contratual
pedidos_limpo %>%
  group_by(tipo_compra) %>%
  summarise(
    registros = n(),
    com_preco_contrato = sum(!is.na(preco_contrato)),
    sem_preco_contrato = sum(is.na(preco_contrato))
  )


# ============================================================
# 05.1. PREMIO DE PRECO POR MODALIDADE
# ============================================================
#
# Objetivo:
# Comparar o valor efetivamente pago com o valor que seria
# pago pelas mesmas quantidades ao preco contratual vigente.
# ============================================================

premio_modalidade <- pedidos_limpo %>%
  mutate(
    valor_a_preco_contrato = quantidade * preco_contrato
  ) %>%
  group_by(periodo, tipo_compra) %>%
  summarise(
    valor_pago = sum(valor_total, na.rm = TRUE),
    valor_a_preco_contrato = sum(valor_a_preco_contrato, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  mutate(
    premio_percentual =
      (valor_pago / valor_a_preco_contrato - 1) * 100,
    
    impacto_vs_contrato =
      valor_pago - valor_a_preco_contrato
  )

premio_modalidade

# CONCLUSAO:
# FY25: emergenciais +35,7% sobre o preco contratual,
# equivalente a aproximadamente R$ 432 mil adicionais.
#
# FY26: emergenciais +31,6% sobre o preco contratual,
# equivalente a aproximadamente R$ 2,27 milhoes adicionais.
#
# O principal problema nao e simplesmente comprar fora de
# contrato, mas o forte crescimento das compras emergenciais.


# ============================================================
# 05.2. EVOLUCAO MENSAL DAS COMPRAS EMERGENCIAIS
# ============================================================
#
# Objetivo:
# Identificar quando ocorreu a mudanca de comportamento
# das compras emergenciais.
# ============================================================

emergencial_mes <- pedidos_limpo %>%
  group_by(mes, tipo_compra) %>%
  summarise(
    valor_comprado = sum(valor_total, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  group_by(mes) %>%
  mutate(
    participacao = valor_comprado / sum(valor_comprado) * 100
  ) %>%
  ungroup()

emergencial_mes %>%
  filter(tipo_compra == "Emergencial")

# CONCLUSAO:
# Ha uma quebra abrupta entre ago/25 e set/25:
# 5,3% -> 16,6%.
#
# Depois da quebra, ocorre deterioracao adicional ao longo
# de FY26, chegando a 24,8% em ago/26.

# Recalcular a serie para construcao do grafico
emergencial_mes <- pedidos_limpo %>%
  group_by(mes, tipo_compra) %>%
  summarise(
    valor_comprado = sum(valor_total, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  group_by(mes) %>%
  mutate(
    participacao = valor_comprado / sum(valor_comprado) * 100
  ) %>%
  ungroup()

# Definir a ordem cronologica dos meses
ordem_meses <- c(
  "set/24", "out/24", "nov/24", "dez/24",
  "jan/25", "fev/25", "mar/25", "abr/25",
  "mai/25", "jun/25", "jul/25", "ago/25",
  "set/25", "out/25", "nov/25", "dez/25",
  "jan/26", "fev/26", "mar/26", "abr/26",
  "mai/26", "jun/26", "jul/26", "ago/26"
)

# Ordenar os meses
emergencial_mes <- emergencial_mes %>%
  mutate(
    mes = factor(mes, levels = ordem_meses)
  )

# Selecionar apenas compras emergenciais
emergencial_grafico <- emergencial_mes %>%
  filter(tipo_compra == "Emergencial")

# Inspecionar os dados utilizados no grafico
print(emergencial_grafico, n = Inf)

# Gerar o grafico
ggplot(
  emergencial_grafico,
  aes(x = mes, y = participacao, group = 1)
) +
  geom_line() +
  geom_point() +
  geom_vline(
    xintercept = 12.5,
    linetype = "dashed"
  ) +
  labs(
    title = "Participacao das compras emergenciais",
    subtitle = "Percentual do valor total comprado por mes",
    x = NULL,
    y = "Participacao das compras (%)"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(
      angle = 45,
      hjust = 1
    )
  )


# ============================================================
# 05.3. EMERGENCIAIS VS. 9 ITENS DA UTI 2
# ============================================================
#
# Objetivo:
# Verificar se o aumento das compras emergenciais esta
# concentrado nos nove itens com consumo anormal na UTI 2.
# ============================================================

emergencial_grupo <- pedidos_limpo %>%
  mutate(
    grupo_item = if_else(
      item %in% itens_anormais_uti2,
      "9 itens UTI 2",
      "Demais itens"
    )
  ) %>%
  filter(tipo_compra == "Emergencial") %>%
  group_by(periodo, grupo_item) %>%
  summarise(
    valor_emergencial = sum(valor_total, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  group_by(periodo) %>%
  mutate(
    participacao_emergencial =
      valor_emergencial / sum(valor_emergencial) * 100
  ) %>%
  ungroup()

emergencial_grupo

# CONCLUSAO:
# O aumento das compras emergenciais e um fenomeno amplo e
# nao e explicado exclusivamente pelos nove itens com aumento
# anormal de consumo na UTI 2.


# ============================================================
# 05.4. CONCENTRACAO DO AUMENTO DAS EMERGENCIAIS
# ============================================================

emergencial_item <- pedidos_limpo %>%
  filter(tipo_compra == "Emergencial") %>%
  group_by(item, periodo) %>%
  summarise(
    valor_emergencial = sum(valor_total, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  pivot_wider(
    names_from = periodo,
    values_from = valor_emergencial,
    values_fill = 0
  ) %>%
  mutate(
    aumento_emergencial = FY26 - FY25
  ) %>%
  arrange(desc(aumento_emergencial))

print(emergencial_item, n = Inf)

sum(emergencial_item$aumento_emergencial)

total_aumento_emergencial <- sum(
  emergencial_item$aumento_emergencial,
  na.rm = TRUE
)

top5_emergencial <- sum(
  head(emergencial_item$aumento_emergencial, 5)
) / total_aumento_emergencial * 100

top10_emergencial <- sum(
  head(emergencial_item$aumento_emergencial, 10)
) / total_aumento_emergencial * 100

top5_emergencial
top10_emergencial

# MED-4002 se destaca por passar de R$ 0 de compras
# emergenciais em FY25 para aproximadamente R$ 879 mil
# em FY26.

# Investigar o comportamento do MED-4002
med4002 <- pedidos_limpo %>%
  filter(item == "MED-4002") %>%
  select(
    data,
    mes,
    periodo,
    fornecedor,
    tipo_compra,
    quantidade,
    preco_pago,
    preco_contrato,
    valor_total
  ) %>%
  arrange(data)

print(med4002, n = Inf)


# ============================================================
# 05.5. COEXISTENCIA ENTRE CONTRATO E EMERGENCIAL
# ============================================================
#
# Objetivo:
# Verificar se compras emergenciais ocorrem mesmo em itens
# que continuam sendo adquiridos por contrato em FY26.
# ============================================================

modalidades_item_fy26 <- pedidos_limpo %>%
  filter(periodo == "FY26") %>%
  group_by(item) %>%
  summarise(
    valor_contrato = sum(
      if_else(tipo_compra == "Contrato", valor_total, 0),
      na.rm = TRUE
    ),
    valor_emergencial = sum(
      if_else(tipo_compra == "Emergencial", valor_total, 0),
      na.rm = TRUE
    ),
    .groups = "drop"
  ) %>%
  mutate(
    tem_contrato = valor_contrato > 0,
    tem_emergencial = valor_emergencial > 0
  )

table(
  modalidades_item_fy26$tem_contrato,
  modalidades_item_fy26$tem_emergencial
)


# ============================================================
# 05.6. QUANTIDADE COMPRADA POR MODALIDADE
# ============================================================
#
# Objetivo:
# Verificar se a mudanca de modalidade tambem aparece em
# unidades fisicas, e nao apenas no valor financeiro.
# ============================================================

quantidade_modalidade <- pedidos_limpo %>%
  group_by(periodo, tipo_compra) %>%
  summarise(
    quantidade_total = sum(quantidade, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  group_by(periodo) %>%
  mutate(
    participacao_quantidade =
      quantidade_total / sum(quantidade_total) * 100
  ) %>%
  ungroup()

quantidade_modalidade

# CONCLUSAO:
# A mudanca tambem aparece em quantidade:
#
# Contrato:    85,0% -> 68,6%
# Spot:        10,0% -> 10,0%
# Emergencial:  5,0% -> 21,4%
#
# A quantidade emergencial passou de aproximadamente
# 325 mil para 1,719 milhao de unidades, cerca de 5,3x.

# Crescimento da quantidade comprada por item
quantidade_item <- pedidos_limpo %>%
  group_by(item, periodo) %>%
  summarise(
    quantidade_total = sum(quantidade, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  pivot_wider(
    names_from = periodo,
    values_from = quantidade_total
  ) %>%
  mutate(
    crescimento_quantidade = (FY26 / FY25 - 1) * 100
  ) %>%
  arrange(desc(crescimento_quantidade))

print(quantidade_item, n = Inf)

quantidade_item %>%
  mutate(
    grupo = if_else(
      item %in% itens_anormais_uti2,
      "9 itens UTI 2",
      "Demais 45 itens"
    )
  ) %>%
  group_by(grupo) %>%
  summarise(
    quantidade_FY25 = sum(FY25),
    quantidade_FY26 = sum(FY26),
    crescimento = (quantidade_FY26 / quantidade_FY25 - 1) * 100
  )


# ============================================================
# 06. DECOMPOSICAO FINANCEIRA DO AUMENTO DAS COMPRAS
# ============================================================
#
# Objetivo:
# Separar o aumento de custo entre quantidade, reajuste dos
# precos contratuais e modalidade de compra.
#
# A separacao evita dupla contagem, pois o preco efetivamente
# pago ja incorpora eventuais premios de compras emergenciais.
# ============================================================


# ============================================================
# 06.1. PRECO CONTRATUAL MEDIO DE REFERENCIA
# ============================================================
#
# Como um mesmo item aparece em pedidos com quantidades
# diferentes, utilizamos media ponderada pela quantidade.
#
# Formula:
# preco contratual medio =
# soma(quantidade x preco de contrato) / soma(quantidade)
# ============================================================

preco_contrato_item <- pedidos_limpo %>%
  
  group_by(item, periodo) %>%
  
  summarise(
    
    quantidade_total = sum(quantidade, na.rm = TRUE),
    
    valor_preco_contrato = sum(
      quantidade * preco_contrato,
      na.rm = TRUE
    ),
    
    preco_contrato_medio =
      valor_preco_contrato / quantidade_total,
    
    .groups = "drop"
  )

preco_contrato_item


# ============================================================
# 06.2. EFEITO PRECO-BASE
# ============================================================
#
# Objetivo:
# Quantificar quanto do aumento e explicado exclusivamente
# pelo reajuste dos precos contratuais.
#
# Formula:
# efeito preco-base =
# quantidade FY26 x (preco contrato FY26 - preco contrato FY25)
#
# Este efeito nao inclui o premio das compras emergenciais.
# ============================================================

efeito_preco_base <- preco_contrato_item %>%
  
  select(
    item,
    periodo,
    quantidade_total,
    preco_contrato_medio
  ) %>%
  
  pivot_wider(
    names_from = periodo,
    values_from = c(
      quantidade_total,
      preco_contrato_medio
    )
  ) %>%
  
  mutate(
    variacao_preco_contrato =
      (preco_contrato_medio_FY26 /
         preco_contrato_medio_FY25 - 1) * 100,
    
    efeito_preco_base =
      quantidade_total_FY26 *
      (preco_contrato_medio_FY26 -
         preco_contrato_medio_FY25)
  ) %>%
  
  arrange(desc(efeito_preco_base))

print(efeito_preco_base, n = Inf)

total_efeito_preco_base <- sum(
  efeito_preco_base$efeito_preco_base,
  na.rm = TRUE
)

total_efeito_preco_base


# ============================================================
# 06.3. EFEITO DA MODALIDADE DE COMPRA - FY26
# ============================================================
#
# Objetivo:
# Medir quanto o hospital pagou acima ou abaixo do preco
# contratual em funcao da modalidade utilizada.
#
# impacto positivo = acima do preco contratual
# impacto negativo = abaixo do preco contratual
# ============================================================

efeito_modalidade_fy26 <- pedidos_limpo %>%
  
  filter(periodo == "FY26") %>%
  
  mutate(
    valor_referencia_contrato =
      quantidade * preco_contrato
  ) %>%
  
  group_by(tipo_compra) %>%
  
  summarise(
    valor_pago = sum(valor_total, na.rm = TRUE),
    
    valor_referencia_contrato =
      sum(valor_referencia_contrato, na.rm = TRUE),
    
    .groups = "drop"
  ) %>%
  
  mutate(
    efeito_modalidade =
      valor_pago - valor_referencia_contrato
  )

efeito_modalidade_fy26

total_efeito_modalidade_fy26 <- sum(
  efeito_modalidade_fy26$efeito_modalidade,
  na.rm = TRUE
)

total_efeito_modalidade_fy26


# ============================================================
# 06.4. EFEITO DA MODALIDADE DE COMPRA - FY25
# ============================================================

efeito_modalidade_fy25 <- pedidos_limpo %>%
  
  filter(periodo == "FY25") %>%
  
  mutate(
    valor_referencia_contrato =
      quantidade * preco_contrato
  ) %>%
  
  group_by(tipo_compra) %>%
  
  summarise(
    valor_pago = sum(valor_total, na.rm = TRUE),
    
    valor_referencia_contrato =
      sum(valor_referencia_contrato, na.rm = TRUE),
    
    .groups = "drop"
  ) %>%
  
  mutate(
    efeito_modalidade =
      valor_pago - valor_referencia_contrato
  )

efeito_modalidade_fy25

total_efeito_modalidade_fy25 <- sum(
  efeito_modalidade_fy25$efeito_modalidade,
  na.rm = TRUE
)

total_efeito_modalidade_fy25


# ============================================================
# 06.5. CONTRAFACTUAL: MANTER O PADRAO DE MODALIDADE DE FY25
# ============================================================
#
# Objetivo:
# Separar o crescimento da quantidade da deterioracao da
# forma de comprar.
#
# Calculamos o premio por unidade observado em FY25 e
# aplicamos esse mesmo padrao as quantidades de FY26.
# ============================================================

# Calcular o efeito modalidade FY25 por item
modalidade_item_fy25 <- pedidos_limpo %>%
  
  filter(periodo == "FY25") %>%
  
  mutate(
    valor_referencia_contrato =
      quantidade * preco_contrato,
    
    diferenca_modalidade =
      valor_total - valor_referencia_contrato
  ) %>%
  
  group_by(item) %>%
  
  summarise(
    quantidade_FY25 = sum(quantidade, na.rm = TRUE),
    
    efeito_modalidade_FY25 =
      sum(diferenca_modalidade, na.rm = TRUE),
    
    .groups = "drop"
  ) %>%
  
  mutate(
    efeito_modalidade_por_unidade_FY25 =
      efeito_modalidade_FY25 / quantidade_FY25
  )

# Obter a quantidade comprada em FY26
quantidade_item_fy26 <- pedidos_limpo %>%
  
  filter(periodo == "FY26") %>%
  
  group_by(item) %>%
  
  summarise(
    quantidade_FY26 = sum(quantidade, na.rm = TRUE),
    .groups = "drop"
  )

# Simular FY26 mantendo o padrao de modalidade de FY25
contrafactual_modalidade <- modalidade_item_fy25 %>%
  
  left_join(
    quantidade_item_fy26,
    by = "item"
  ) %>%
  
  mutate(
    efeito_modalidade_contrafactual =
      quantidade_FY26 *
      efeito_modalidade_por_unidade_FY25
  )

# Somar o efeito contrafactual dos 54 itens
total_modalidade_contrafactual <- sum(
  contrafactual_modalidade$efeito_modalidade_contrafactual,
  na.rm = TRUE
)

total_modalidade_contrafactual

# RESULTADO:
# O efeito puro da mudanca no padrao de modalidade e de
# aproximadamente:
# R$ 2,216 mi - R$ 0,469 mi = R$ 1,747 mi.


# ============================================================
# 06.6. EFEITO QUANTIDADE COMPRADA
# ============================================================
#
# Objetivo:
# Quantificar quanto do aumento das compras decorre da maior
# quantidade adquirida em FY26.
#
# Formula:
# efeito quantidade =
# (quantidade FY26 - quantidade FY25) x preco contrato FY25
#
# O calculo e realizado item a item.
# ============================================================

efeito_quantidade <- preco_contrato_item %>%
  
  select(
    item,
    periodo,
    quantidade_total,
    preco_contrato_medio
  ) %>%
  
  pivot_wider(
    names_from = periodo,
    values_from = c(
      quantidade_total,
      preco_contrato_medio
    )
  ) %>%
  
  mutate(
    efeito_quantidade =
      (quantidade_total_FY26 - quantidade_total_FY25) *
      preco_contrato_medio_FY25
  ) %>%
  
  arrange(desc(efeito_quantidade))

print(efeito_quantidade, n = Inf)

total_efeito_quantidade <- sum(
  efeito_quantidade$efeito_quantidade,
  na.rm = TRUE
)

total_efeito_quantidade


# ============================================================
# 06.7. RECONCILIACAO DA PONTE DE CUSTOS
# ============================================================
#
# A variacao total das compras e decomposta em:
#
# 1. efeito quantidade;
# 2. efeito preco-base;
# 3. aumento do premio associado a modalidade.
#
# A soma deve reconciliar com a variacao efetivamente
# observada entre FY25 e FY26.
# ============================================================

variacao_premio_modalidade <-
  total_efeito_modalidade_fy26 -
  total_efeito_modalidade_fy25

ponte_total <-
  total_efeito_quantidade +
  total_efeito_preco_base +
  variacao_premio_modalidade

gasto_periodo <- pedidos_limpo %>%
  group_by(periodo) %>%
  summarise(
    gasto_total = sum(valor_total, na.rm = TRUE),
    .groups = "drop"
  )

gasto_periodo

aumento_real <-
  gasto_periodo$gasto_total[gasto_periodo$periodo == "FY26"] -
  gasto_periodo$gasto_total[gasto_periodo$periodo == "FY25"]

# Validar a reconciliacao
ponte_total
aumento_real


# ============================================================
# 06.8. EFEITO QUANTIDADE: 9 ITENS DA UTI 2 VS. DEMAIS
# ============================================================
#
# Objetivo:
# Avaliar quanto do efeito quantidade esta associado aos
# nove itens com comportamento anormal na UTI 2.
#
# IMPORTANTE:
# Isso nao significa que todo o efeito dos nove itens tenha
# sido causado pela UTI 2, pois eles tambem podem ser
# utilizados em outras unidades do hospital.
# ============================================================

efeito_quantidade_grupo <- efeito_quantidade %>%
  
  mutate(
    grupo = if_else(
      item %in% itens_anormais_uti2,
      "9 itens UTI 2",
      "Demais 45 itens"
    )
  ) %>%
  
  group_by(grupo) %>%
  
  summarise(
    efeito_quantidade = sum(
      efeito_quantidade,
      na.rm = TRUE
    ),
    .groups = "drop"
  ) %>%
  
  mutate(
    participacao =
      efeito_quantidade /
      sum(efeito_quantidade) * 100
  )

efeito_quantidade_grupo


# ============================================================
# 07. MONETIZACAO DA INTENSIDADE DE CONSUMO
# ============================================================


# ============================================================
# 07.1. EXCESSO DE CONSUMO NA UTI 2
# ============================================================
#
# Objetivo:
# Estimar o consumo dos nove itens na UTI 2 caso ela tivesse
# a mesma intensidade da UTI 1 em FY26.
#
# Consumo esperado UTI 2 =
# intensidade UTI 1 x atividade UTI 2
#
# Excesso =
# consumo real UTI 2 - consumo esperado
# ============================================================

# Separar os dados da UTI 1
uti1 <- intensidade_limpa %>%
  filter(
    item %in% itens_anormais_uti2,
    periodo == "FY26",
    unidade == "UTI 1"
  ) %>%
  select(
    item,
    intensidade_uti1 = intensidade
  )

# Separar os dados da UTI 2
uti2 <- intensidade_limpa %>%
  filter(
    item %in% itens_anormais_uti2,
    periodo == "FY26",
    unidade == "UTI 2"
  ) %>%
  select(
    item,
    consumo_uti2 = consumo_total,
    atividade_uti2 = atividade_total,
    intensidade_uti2 = intensidade
  )

# Integrar UTI 1 e UTI 2 por item
excesso_uti2 <- uti2 %>%
  left_join(
    uti1,
    by = "item"
  ) %>%
  
  mutate(
    
    consumo_esperado_uti2 =
      intensidade_uti1 * atividade_uti2,
    
    excesso_consumo_uti2 =
      consumo_uti2 - consumo_esperado_uti2
  )

print(excesso_uti2, n = Inf)


# ============================================================
# 07.2. MONETIZACAO DO EXCESSO DE CONSUMO DA UTI 2
# ============================================================
#
# Objetivo:
# Converter o excesso estimado em impacto financeiro.
#
# Para isolar o efeito de consumo, utilizamos o preco
# contratual medio de FY25.
#
# Formula:
# impacto excesso UTI 2 =
# excesso de unidades x preco contratual FY25
#
# IMPORTANTE:
# Trata-se de uma estimativa baseada no benchmark da UTI 1,
# e nao de uma economia garantida.
# ============================================================

# Obter o preco contratual FY25 dos nove itens
preco_fy25_9 <- preco_contrato_item %>%
  filter(
    periodo == "FY25",
    item %in% itens_anormais_uti2
  ) %>%
  select(
    item,
    preco_contrato_fy25 = preco_contrato_medio
  )

# Monetizar o excesso estimado
impacto_excesso_uti2 <- excesso_uti2 %>%
  left_join(
    preco_fy25_9,
    by = "item"
  ) %>%
  
  mutate(
    
    impacto_excesso =
      excesso_consumo_uti2 * preco_contrato_fy25
  ) %>%
  
  arrange(desc(impacto_excesso))

# Ver o impacto por item
impacto_excesso_uti2 %>%
  select(
    item,
    excesso_consumo_uti2,
    preco_contrato_fy25,
    impacto_excesso
  ) %>%
  print(n = Inf)

# Calcular o impacto total
total_impacto_excesso_uti2 <- sum(
  impacto_excesso_uti2$impacto_excesso,
  na.rm = TRUE
)

total_impacto_excesso_uti2


# ============================================================
# 07.3. EFEITO DO CRESCIMENTO DA ATIVIDADE HOSPITALAR
# ============================================================
#
# Objetivo:
# Estimar quanto o consumo deveria ter aumentado apenas em
# funcao do crescimento da atividade hospitalar.
#
# Formula:
# consumo esperado FY26 =
# intensidade FY25 x atividade FY26
#
# efeito volume =
# consumo esperado FY26 - consumo FY25
#
# O calculo e realizado por item x unidade assistencial.
# ============================================================

intensidade_volume <- intensidade_ano

names(intensidade_volume) <- c(
  "item",
  "unidade",
  "periodo",
  "consumo_total",
  "atividade_total",
  "intensidade"
)

# Colocar FY25 e FY26 lado a lado
efeito_volume <- intensidade_volume %>%
  
  select(
    item,
    unidade,
    periodo,
    consumo_total,
    atividade_total,
    intensidade
  ) %>%
  
  pivot_wider(
    names_from = periodo,
    values_from = c(
      consumo_total,
      atividade_total,
      intensidade
    )
  ) %>%
  
  mutate(
    
    consumo_esperado_volume =
      intensidade_FY25 * atividade_total_FY26,
    
    efeito_volume_unidades =
      consumo_esperado_volume - consumo_total_FY25
  )

# Inspecionar o resultado
efeito_volume %>%
  select(
    item,
    unidade,
    consumo_total_FY25,
    atividade_total_FY25,
    atividade_total_FY26,
    consumo_esperado_volume,
    efeito_volume_unidades
  ) %>%
  print(n = 20)


# ============================================================
# 07.4. MONETIZACAO DO EFEITO VOLUME
# ============================================================
#
# Formula:
# impacto volume =
# unidades adicionais explicadas pela atividade
# x preco contratual FY25
# ============================================================

# Obter o preco contratual FY25
preco_fy25 <- preco_contrato_item %>%
  filter(periodo == "FY25") %>%
  select(
    item,
    preco_contrato_fy25 = preco_contrato_medio
  )

# Monetizar o efeito volume
efeito_volume_valor <- efeito_volume %>%
  
  left_join(
    preco_fy25,
    by = "item"
  ) %>%
  
  mutate(
    
    impacto_volume =
      efeito_volume_unidades * preco_contrato_fy25
  )

# Somar o efeito total
total_efeito_volume <- sum(
  efeito_volume_valor$impacto_volume,
  na.rm = TRUE
)

total_efeito_volume


# ============================================================
# 07.5. EFEITO DA MUDANCA DE INTENSIDADE
# ============================================================
#
# Objetivo:
# Quantificar quanto o consumo mudou porque cada unidade
# passou a utilizar mais ou menos de cada item por unidade
# de atividade.
#
# Formula:
# efeito intensidade =
# (intensidade FY26 - intensidade FY25) x atividade FY26
#
# O efeito e valorizado ao preco contratual de FY25.
#
# IMPORTANTE:
# Esta analise utiliza a base de consumo. Portanto, volume
# e intensidade sao comparaveis entre si, mas nao devem ser
# somados diretamente a ponte financeira das compras.
# ============================================================

efeito_intensidade <- efeito_volume %>%
  
  mutate(
    
    efeito_intensidade_unidades =
      (intensidade_FY26 - intensidade_FY25) *
      atividade_total_FY26
  ) %>%
  
  left_join(
    preco_fy25,
    by = "item"
  ) %>%
  
  mutate(
    impacto_intensidade =
      efeito_intensidade_unidades *
      preco_contrato_fy25
  )

total_efeito_intensidade <- sum(
  efeito_intensidade$impacto_intensidade,
  na.rm = TRUE
)

total_efeito_intensidade


# ============================================================
# 07.6. EFEITO INTENSIDADE POR UNIDADE ASSISTENCIAL
# ============================================================
#
# Objetivo:
# Identificar quais unidades explicam o impacto financeiro
# decorrente da mudanca de intensidade.
#
# Valores positivos = aumento de intensidade
# Valores negativos = reducao de intensidade
# ============================================================

intensidade_por_unidade <- efeito_intensidade %>%
  
  group_by(unidade) %>%
  
  summarise(
    impacto_intensidade = sum(
      impacto_intensidade,
      na.rm = TRUE
    ),
    .groups = "drop"
  ) %>%
  
  arrange(desc(impacto_intensidade))

intensidade_por_unidade


# ============================================================
# 08. TESTE DAS HIPOTESES DA DIRETORIA
# ============================================================


# ============================================================
# 08.1. HIPOTESE DO DIRETOR DE SUPRIMENTOS
# ============================================================
#
# Objetivo:
# Verificar se as compras emergenciais exigiram recorrer
# a fornecedores diferentes dos utilizados via contrato.
#
# A analise ajuda a avaliar a hipotese de restricao de
# abastecimento, mas nao permite estabelecer causalidade
# isoladamente.
# ============================================================

fornecedores_modalidade <- pedidos_limpo %>%
  filter(
    periodo == "FY26",
    tipo_compra %in% c("Contrato", "Emergencial")
  ) %>%
  distinct(
    item,
    tipo_compra,
    fornecedor
  )

# Verificar em quais modalidades cada fornecedor aparece
comparacao_fornecedores <- fornecedores_modalidade %>%
  mutate(
    presente = TRUE
  ) %>%
  pivot_wider(
    names_from = tipo_compra,
    values_from = presente,
    values_fill = FALSE
  )

# Verificar se existe o mesmo fornecedor nas duas modalidades
fornecedor_por_item <- comparacao_fornecedores %>%
  group_by(item) %>%
  summarise(
    mesmo_fornecedor =
      any(Contrato & Emergencial),
    .groups = "drop"
  )

fornecedor_por_item %>%
  count(mesmo_fornecedor)


# ============================================================
# 08.2. HIPOTESE DO DIRETOR FINANCEIRO: DISTRIMED
# ============================================================


# ============================================================
# 08.2.1. POSICAO ATUAL DA DISTRIMED
# ============================================================
#
# Objetivo:
# Identificar os itens que atualmente possuem a Distrimed
# como fornecedor cadastrado.
#
# IMPORTANTE:
# Esta e a situacao atual, e nao a cobertura potencial
# da proposta.
# ============================================================

itens_distrimed <- itens_limpo %>%
  filter(
    grepl(
      "Distrimed",
      fornecedor,
      ignore.case = TRUE
    )
  ) %>%
  select(
    item,
    descricao,
    categoria,
    subcategoria,
    fornecedor
  )

itens_distrimed

# Calcular a relevancia dos seis itens atuais em FY26
valor_distrimed_fy26 <- pedidos_limpo %>%
  filter(
    periodo == "FY26",
    item %in% itens_distrimed$item
  ) %>%
  summarise(
    valor = sum(valor_total, na.rm = TRUE)
  ) %>%
  pull(valor)

valor_total_fy26 <- pedidos_limpo %>%
  filter(periodo == "FY26") %>%
  summarise(
    valor = sum(valor_total, na.rm = TRUE)
  ) %>%
  pull(valor)

participacao_distrimed <- 
  valor_distrimed_fy26 / valor_total_fy26 * 100

valor_distrimed_fy26
participacao_distrimed


# ============================================================
# 08.2.2. EXCECOES DE COBERTURA DA DISTRIMED
# ============================================================
#
# A Distrimed possui linha ampla, mas nao fornece:
#
# 1. oncologicos;
# 2. equipos InfusaMed;
# 3. grampeadores e cargas Covidien.
# ============================================================

itens_limpo %>%
  filter(
    grepl("onco", categoria, ignore.case = TRUE) |
      grepl("onco", subcategoria, ignore.case = TRUE) |
      grepl("onco", descricao, ignore.case = TRUE) |
      
      grepl("InfusaMed", fabricante, ignore.case = TRUE) |
      
      grepl("Covidien", fabricante, ignore.case = TRUE) |
      grepl("grampe", descricao, ignore.case = TRUE)
  ) %>%
  select(
    item,
    descricao,
    fabricante,
    categoria,
    subcategoria,
    fornecedor
  )


# ============================================================
# 08.2.3. COBERTURA POTENCIAL DA PROPOSTA DISTRIMED
# ============================================================
#
# A proposta de 6% pode ser aplicada aos demais 46 itens.
# ============================================================

itens_excluidos_distrimed <- c(
  "MAT-1201",
  "MAT-1202",
  "MAT-1403",
  "MAT-1404",
  "MED-4001",
  "MED-4002",
  "MED-4003",
  "MED-4004"
)

# Calcular o valor FY26 dos itens elegiveis
cobertura_distrimed <- pedidos_limpo %>%
  filter(
    periodo == "FY26",
    !item %in% itens_excluidos_distrimed
  ) %>%
  summarise(
    itens = n_distinct(item),
    valor_compras = sum(valor_total, na.rm = TRUE)
  )

cobertura_distrimed

# Calcular a participacao no total das compras FY26
participacao_cobertura <- 
  cobertura_distrimed$valor_compras / valor_total_fy26 * 100

participacao_cobertura

# Calcular a economia anual com desconto de 6%
economia_distrimed_6 <-
  cobertura_distrimed$valor_compras * 0.06

economia_distrimed_6


# ============================================================
# 08.2.4. PRAZOS ATUAIS DE PAGAMENTO
# ============================================================

contratos %>%
  select(
    Fornecedor,
    `Prazo de pagamento (dias)`
  ) %>%
  distinct() %>%
  arrange(`Prazo de pagamento (dias)`)


# ============================================================
# 08.2.5. PRAZO MEDIO ATUAL DOS ITENS ELEGIVEIS
# ============================================================
#
# Objetivo:
# Calcular o prazo medio atual dos 46 itens que poderiam
# migrar para a Distrimed, ponderado pelo valor comprado.
# ============================================================

contratos_limpo <- contratos %>%
  select(
    fornecedor = Fornecedor,
    prazo_dias = `Prazo de pagamento (dias)`
  )

compras_cobertas <- pedidos_limpo %>%
  filter(
    periodo == "FY26",
    !item %in% itens_excluidos_distrimed
  )

prazo_atual <- compras_cobertas %>%
  group_by(fornecedor) %>%
  summarise(
    valor_compras = sum(valor_total, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  
  left_join(
    contratos_limpo,
    by = "fornecedor"
  )

prazo_atual

# Calcular o prazo medio ponderado
prazo_medio_atual <- sum(
  prazo_atual$valor_compras * prazo_atual$prazo_dias
) / sum(prazo_atual$valor_compras)

prazo_medio_atual

# Calcular o ganho de prazo com a proposta
ganho_dias <- 60 - prazo_medio_atual

ganho_dias


# ============================================================
# 08.2.6. BENEFICIO DE CAPITAL DE GIRO
# ============================================================
#
# A proposta aumenta o prazo medio de aproximadamente
# 38,3 para 60 dias, mantendo recursos em caixa por cerca
# de 21,7 dias adicionais.
#
# Este beneficio representa caixa, e nao EBITDA.
# ============================================================

capital_giro_liberado <-
  cobertura_distrimed$valor_compras *
  ganho_dias / 365

capital_giro_liberado


# ============================================================
# 08.2.7. BENEFICIO FINANCEIRO DO CAPITAL DE GIRO
# ============================================================
#
# Premissa: Selic de 13,75% a.a.
#
# O resultado representa o custo de oportunidade financeiro
# anual do capital de giro liberado.
# ============================================================

selic <- 0.1375

beneficio_financeiro <-
  capital_giro_liberado * selic

beneficio_financeiro


# ============================================================
# 09. ALAVANCAS DE VALOR
# ============================================================


# ============================================================
# 09.1. NORMALIZACAO DO CONSUMO DA UTI 2
# ============================================================
#
# O excesso estimado de R$ 939,6 mil representa o potencial
# maximo caso a UTI 2 convergisse integralmente para o
# benchmark da UTI 1.
#
# Como nem todo o excesso necessariamente e eliminavel,
# sao avaliados diferentes niveis de captura.
# ============================================================

excesso_uti2_valor <- 939620.6

cenarios_uti2 <- data.frame(
  Cenario = c(
    "Conservador - 50%",
    "Base - 75%",
    "Maximo - 100%"
  ),
  Captura = c(
    0.50,
    0.75,
    1.00
  )
) %>%
  mutate(
    Economia_anual = excesso_uti2_valor * Captura
  )

cenarios_uti2


# ============================================================
# 09.2. NORMALIZACAO DAS COMPRAS EMERGENCIAIS
# ============================================================
#
# R$ 1,747 mi representa a deterioracao adicional da
# modalidade em FY26 em relacao ao padrao de FY25,
# controlando pelo crescimento das quantidades.
#
# Nao se assume que as compras emergenciais possam ser
# integralmente eliminadas.
# ============================================================

oportunidade_emergencial <- 1747000

cenarios_emergencial <- data.frame(
  Cenario = c(
    "Conservador - 50%",
    "Base - 75%",
    "Maximo - 100%"
  ),
  Captura = c(
    0.50,
    0.75,
    1.00
  )
) %>%
  mutate(
    Economia_anual = oportunidade_emergencial * Captura
  )

cenarios_emergencial


# ============================================================
# 09.3. SOBREPOSICAO POTENCIAL ENTRE AS ALAVANCAS
# ============================================================
#
# Objetivo:
# Avaliar quanto da deterioracao de modalidade esta
# concentrada nos nove itens que tambem apresentam consumo
# anormal na UTI 2.
#
# IMPORTANTE:
# A base de pedidos nao identifica a unidade de destino.
# Portanto, esta analise mede apenas sobreposicao potencial.
# ============================================================

premium_item_periodo <- pedidos_limpo %>%
  mutate(
    premium = valor_total - quantidade * preco_contrato
  ) %>%
  group_by(item, periodo) %>%
  summarise(
    premium_total = sum(premium, na.rm = TRUE),
    quantidade_total = sum(quantidade, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  pivot_wider(
    names_from = periodo,
    values_from = c(premium_total, quantidade_total)
  ) %>%
  mutate(
    # Premio por unidade observado em FY25
    premium_unit_fy25 =
      premium_total_FY25 / quantidade_total_FY25,
    
    # Premio esperado em FY26 se o padrao de FY25
    # tivesse sido mantido
    premium_esperado_fy26 =
      premium_unit_fy25 * quantidade_total_FY26,
    
    # Deterioracao adicional de modalidade
    deterioracao_modalidade =
      premium_total_FY26 - premium_esperado_fy26,
    
    grupo = if_else(
      item %in% itens_anormais_uti2,
      "9 itens UTI 2",
      "Outros 45 itens"
    )
  )

sobreposicao_alavancas <- premium_item_periodo %>%
  group_by(grupo) %>%
  summarise(
    deterioracao_modalidade =
      sum(deterioracao_modalidade, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  mutate(
    participacao =
      deterioracao_modalidade /
      sum(deterioracao_modalidade) * 100
  )

sobreposicao_alavancas


# ============================================================
# 09.4. SOBREPOSICAO COM A PROPOSTA DISTRIMED
# ============================================================
#
# IMPORTANTE:
# - Atualmente, a Distrimed fornece apenas seis itens.
# - Na proposta, 46 itens seriam elegiveis a migracao.
#
# Objetivo:
# Identificar quanto das economias operacionais do
# cenario-base ocorre nos 46 itens elegiveis, evitando
# dupla contagem entre as alavancas.
# ============================================================


# ------------------------------------------------------------
# 09.4.1. NORMALIZACAO DO CONSUMO DA UTI 2
# ------------------------------------------------------------

uti2_elegibilidade_distrimed <- excesso_uti2 %>%
  left_join(
    preco_fy25,
    by = "item"
  ) %>%
  mutate(
    # Valor do excesso de consumo
    valor_excesso =
      excesso_consumo_uti2 * preco_contrato_fy25,
    
    # Cenario-base: captura de 75%
    economia_base =
      valor_excesso * 0.75,
    
    # TRUE = item elegivel a proposta da Distrimed
    elegivel_distrimed =
      !item %in% itens_excluidos_distrimed
  ) %>%
  group_by(elegivel_distrimed) %>%
  summarise(
    economia_uti2 = sum(economia_base, na.rm = TRUE),
    .groups = "drop"
  )

uti2_elegibilidade_distrimed


# ------------------------------------------------------------
# 09.4.2. REDUCAO DAS COMPRAS EMERGENCIAIS
# ------------------------------------------------------------
#
# Os nove itens da UTI 2 sao retirados desta alavanca para
# evitar dupla contagem com a normalizacao do consumo.
# ------------------------------------------------------------

emergencial_elegibilidade_distrimed <- premium_item_periodo %>%
  filter(
    !item %in% itens_anormais_uti2
  ) %>%
  mutate(
    # Cenario-base: captura de 75%
    economia_base =
      deterioracao_modalidade * 0.75,
    
    # TRUE = item elegivel a proposta da Distrimed
    elegivel_distrimed =
      !item %in% itens_excluidos_distrimed
  ) %>%
  group_by(elegivel_distrimed) %>%
  summarise(
    economia_emergencial =
      sum(economia_base, na.rm = TRUE),
    .groups = "drop"
  )

emergencial_elegibilidade_distrimed


# ============================================================
# 09.5. DISTRIMED APOS AS MELHORIAS OPERACIONAIS
# ============================================================
#
# Objetivo:
# Calcular o valor incremental da proposta da Distrimed
# somente apos considerar as economias operacionais.
#
# Sequenciamento:
#
# 1. reduzir da base elegivel as economias operacionais;
# 2. aplicar o desconto de 6% sobre a base remanescente;
# 3. calcular o beneficio de capital de giro.
#
# Essa sequencia reduz o risco de dupla contagem entre
# melhorias operacionais e negociacao comercial.
# ============================================================

# Economias operacionais nos itens elegiveis a Distrimed
economia_operacional_elegivel <-
  365217 + 741584

# Base remanescente apos as melhorias operacionais
base_distrimed_ajustada <-
  cobertura_distrimed$valor_compras -
  economia_operacional_elegivel

base_distrimed_ajustada

# Economia de EBITDA com desconto de 6%
economia_distrimed_ajustada <-
  base_distrimed_ajustada * 0.06

economia_distrimed_ajustada

# Capital de giro liberado com a extensao do prazo
# medio atual para 60 dias
capital_giro_ajustado <-
  base_distrimed_ajustada *
  ganho_dias / 365

capital_giro_ajustado

# Beneficio financeiro anual do capital de giro
# utilizando Selic de 13,75%
beneficio_financeiro_ajustado <-
  capital_giro_ajustado * 0.1375

beneficio_financeiro_ajustado