hub/textos/skadi-hot-cache.md
1
<!-- projetos / artigo -->
2
# Skadi Hot Cache
3
 
4
> Em radiologia distribuída, dados quentes do PACS não deveriam depender da disponibilidade e da velocidade do PACS original no momento do clique.
5
 
6
Publicado em 31 de maio de 2026
7
 
8
Diagrama conceitual do Skadi Hot Cache, mostrando o PACS original como fonte de verdade, a camada de cache quente em nuvem, manifestos e entrega para o cliente.
O PACS continua sendo a fonte de verdade. O Skadi desloca a espera para antes do clique.
12
 
13
Radiologia não depende apenas de ter imagem armazenada.
14
 
15
Depende de ter imagem disponível no momento em que ela precisa ser usada.
16
 
17
Essa diferença parece pequena quando se olha o PACS como repositório. Ela fica grande quando se olha a fila de trabalho como operação viva. Um exame pode existir no PACS, estar tecnicamente recuperável e, ainda assim, chegar tarde demais para o ritmo de leitura, revisão ou distribuição clínica.
18
 
19
O Skadi Hot Cache nasce desse problema.
20
 
21
Não como substituto do PACS.
22
 
23
Como uma camada de disponibilidade para dados quentes.
24
 
25
O nome é deliberado.
26
 
27
Na mitologia nórdica, Skaði, grafada aqui como Skadi, é associada ao inverno, às montanhas, à caça e ao deslocamento por terreno difícil.
28
 
29
A escolha não é decorativa: o sistema opera justamente nesse território intermediário, onde o dado precisa atravessar distância, rede, PACS, nuvem e cliente antes de se tornar útil.
30
 
31
O contraste com Hot Cache é intencional. Skadi pertence ao frio; o sistema existe para manter quente, próximo e disponível o dado que a radiologia precisa usar no momento do clique.
32
 
33
## Problema
34
 
35
O PACS é a fonte de verdade da imagem.
36
 
37
Mas fonte de verdade não é, necessariamente, o melhor ponto de entrega.
38
 
39
Em muitos ambientes, o caminho entre o exame e o usuário final passa por servidores com disponibilidade variável, WADO lento, múltiplos hops de rede, grande quantidade de arquivos pequenos, regras de fila, viewers diferentes e dependência de infraestrutura local.
40
 
41
Quando o usuário clica, todo esse caminho aparece como uma coisa só:
42
 
43
espera.
44
 
45
O problema não é apenas o tempo absoluto de download. É a imprevisibilidade. Um exame abre rápido, outro demora. Uma tomografia pequena chega bem, uma ressonância volumétrica trava o fluxo. Um exame anterior existe, mas buscá-lo no momento do uso custa tempo demais.
46
 
47
Em radiologia, essa espera não é neutra. Ela interrompe continuidade cognitiva, adia comparação, reduz a chance de usar exames anteriores e transforma disponibilidade técnica em atrito operacional.
48
 
49
## Recorte
50
 
51
O recorte do projeto é simples:
52
 
53
- identificar exames prováveis de uso imediato;
54
- transferir esses estudos do PACS para uma camada em nuvem;
55
- materializar também exames anteriores e artefatos derivados;
56
- expor tudo por endpoints autenticados;
57
- permitir que o cliente baixe da nuvem, não do PACS original, quando o dado já estiver quente.
58
 
59
O ganho não vem de inventar outro viewer.
60
 
61
Vem de mudar o ponto de entrega.
62
 
63
Em vez de o cliente depender da recuperação síncrona no PACS no momento do clique, o sistema antecipa o trabalho pesado e deixa os pacotes prontos em uma infraestrutura com melhor disponibilidade, melhor throughput e comportamento mais previsível.
64
 
65
## Skadi e o broker DICOM
66
 
67
O Skadi não é apenas uma pasta de arquivos em nuvem.
68
 
69
Na prática, ele combina duas responsabilidades diferentes.
70
 
71
A primeira é a publicação da fila. O Skadi materializa listas operacionais como plantao, medicina-interna, neurorradiologia, msk e cardiovascular, já com ordem de trabalho, metadados, SLA e indicação de quais artefatos em nuvem estão disponíveis para cada accession number.
72
 
73
A segunda é a preparação do dado pesado. Essa parte fica com o broker DICOM.
74
 
75
No Orchestrum, a fronteira canônica dessa preparação é o stack imaging_hot_cache. O nome antigo opportunistic_metrics ainda aparece como detalhe interno de compatibilidade, mas o papel operacional é outro: manter imagem e artefatos quentes para o fluxo de leitura.
76
 
77
O broker observa candidatos TC/RM, consulta o inventário do exame, aguarda janelas de estabilidade e rechecagem, baixa o estudo por WADO, empacota o exame pai por séries e publica manifestos e artefatos em /artifacts/{AN}.
78
 
79
Essa separação é importante.
80
 
81
O cliente não precisa descobrir sozinho se existe exame pai, anterior, laudo anterior DICOMizado ou artefato de pipeline. As listas do Skadi recebem, em lote, um resumo cloud_artifacts para parent_dicom, prior_exams e heimdallr.
82
 
83
Isso evita que cada linha da fila vire uma investigação própria. O cliente recebe esse estado na lista e, quando o dado está disponível, consome o pacote preparado pela camada de artefatos.
84
 
85
## O que fica quente
86
 
87
O cache quente não precisa copiar todo o PACS.
88
 
89
Esse é um ponto importante.
90
 
91
O projeto trabalha com dados operacionais de curto prazo:
92
 
93
- exame pai em TC e RM;
94
- exames anteriores relevantes para comparação;
95
- laudos anteriores materializados como DICOM encapsulado quando úteis ao pacote;
96
- anexos clínicos já DICOMizados, quando existem;
97
- amostras DICOM centrais das séries principais, para abrir contexto antes do pacote completo;
98
- artefatos derivados por pipelines como o Heimdallr;
99
- manifestos que dizem ao cliente o que já está disponível na nuvem.
100
 
101
O objetivo não é retenção longa.
102
 
103
É disponibilidade rápida para aquilo que está em uso ou prestes a entrar em uso.
104
 
105
Essa diferença muda a arquitetura. Um arquivo frio, arquivado por anos, precisa de política de preservação. Um dado quente precisa de política de descoberta, atualização, expiração e entrega.
106
 
107
## Empacotamento
108
 
109
Para exames anteriores, um ZIP único é suficiente.
110
 
111
O usuário não precisa navegar série a série de cada anterior antes de decidir se baixa. O pacote existe para comparação e contexto.
112
 
113
Para o exame pai, a lógica muda.
114
 
115
O estudo principal é o primeiro objeto de trabalho. Se ele for empacotado em um único ZIP grande, o cliente só começa a usar o exame depois que tudo terminou. Isso transforma uma camada rápida em uma entrega ainda sequencial.
116
 
117
Por isso, o exame pai pode ser quebrado por séries:
118
 
119
- séries volumétricas com muitas imagens viram ZIPs próprios;
120
- séries pequenas são agrupadas em um ZIP final;
121
- um manifest ordena o download do maior para o menor e deixa explícitos tamanho, hash, série e URL.
122
 
123
Antes do bloco de ZIPs, o manifest também pode listar anexos clínicos DICOMizados e amostras centrais das séries principais. A ideia é permitir que o cliente comece a abrir contexto DICOM enquanto os pacotes completos ainda estão descendo.
124
 
125
O cliente pode iniciar pelos itens mais importantes e seguir a ordem declarada. A nuvem entrega rápido, mas o formato também importa. Não basta aproximar o dado; é preciso empacotar de modo compatível com uso progressivo.
126
 
127
## Diferença observada de throughput
128
 
129
Nos testes que motivaram o desenho, o problema não era abstrato.
130
 
131
Em dois PACS avaliados, o acesso nativo pela Internet ficava, de modo observado, na faixa de 20 a 60 Mb/s.
132
 
133
Isso não é necessariamente ruim para qualquer uso.
134
 
135
Mas, para TC e RM, com muitos objetos DICOM e necessidade de comparação rápida, essa faixa ainda deixa o usuário exposto à latência do PACS original no momento mais sensível: depois que ele já decidiu abrir o exame.
136
 
137
Quando o mesmo tipo de entrega passou pela camada em nuvem na AWS, a velocidade observada chegou a aproximadamente 550 Mb/s.
138
 
139
Esse número não deve ser lido como garantia universal. Ele depende de região, rota, cliente, empacotamento, concorrência, infraestrutura local e tamanho dos pacotes.
140
 
141
Mas ele muda a ordem de grandeza do problema.
142
 
143
Se a entrega sai de dezenas para centenas de megabits por segundo, o cache deixa de ser apenas otimização técnica. Ele passa a ser uma forma de deslocar espera para antes do clique e transformar variabilidade de PACS em disponibilidade mais previsível para o cliente.
144
 
145
## Manifesto
146
 
147
O manifest é o contrato entre a camada de cache e o cliente.
148
 
149
Ele informa quais partes do exame estão disponíveis, em que ordem devem ser baixadas, qual URL usar, qual SHA-256 esperar e quais séries existem em cada pacote.
150
 
151
Esse detalhe evita que o cliente precise adivinhar estrutura de storage.
152
 
153
Também permite que a interface mostre disponibilidade real:
154
 
155
- exame pai disponível;
156
- anteriores disponíveis;
157
- artefatos disponíveis;
158
- partes do estudo ainda pendentes, quando isso for necessário.
159
 
160
No caso do exame pai, a disponibilidade não é tratada como um booleano superficial. O estado complete só deve aparecer quando o manifest e os artefatos referenciados por ele estão prontos, com tamanho e hash coerentes.
161
 
162
O manifest não é um detalhe administrativo. Ele transforma um conjunto de arquivos em um estado operacional legível.
163
 
164
## Atualização
165
 
166
Exames radiológicos não são sempre estáticos no primeiro momento em que aparecem.
167
 
168
Um estudo pode ser descoberto, baixado, publicado e depois receber novas imagens em uma rechecagem posterior.
169
 
170
Por isso, o cache precisa tratar atualização como parte normal do fluxo. Quando o fingerprint do inventário muda, o pacote publicado deixa de ser a melhor representação do exame. A versão antiga deve ser removida e uma nova deve ser publicada.
171
 
172
Esse comportamento é mais importante do que parece.
173
 
174
Sem ele, o cache rápido vira uma fonte de divergência silenciosa.
175
 
176
Com ele, o cache continua sendo uma camada de entrega, não uma fonte concorrente de verdade.
177
 
178
## Segurança
179
 
180
O Skadi Hot Cache lida com dado clínico.
181
 
182
Isso exige que a simplicidade operacional não vire descuido.
183
 
184
O desenho assume:
185
 
186
- acesso por HTTPS;
187
- autenticação por token individual ou de serviço;
188
- escopos separados para leitura e escrita;
189
- retenção curta e explícita;
190
- logs auditáveis de acesso;
191
- separação entre publicação por serviços e consumo por clientes.
192
 
193
A decisão relevante aqui é não transformar cada AN em uma permissão individual. Em uma fila operacional dinâmica, esse modelo ficaria caro, frágil e pouco aderente ao uso real. O controle mais natural é por usuário, instalação, escopo e auditoria.
194
 
195
## Limites
196
 
197
O cache quente não resolve tudo.
198
 
199
Ele não substitui o PACS, não corrige metadados ruins, não elimina falhas de origem e não dispensa política de segurança.
200
 
201
Também não deve virar arquivo permanente por acidente. Se tudo fica retido indefinidamente, o projeto muda de natureza e passa a disputar o papel de repositório.
202
 
203
O limite saudável é outro:
204
 
205
- antecipar o que provavelmente será usado;
206
- entregar rápido enquanto o dado está clinicamente quente;
207
- remover cedo, em regra pouco depois do laudo final quando o exame não é provisório;
208
- manter rastreabilidade suficiente para auditoria;
209
- voltar ao PACS como fonte quando necessário.
210
 
211
Grupos órfãos expiram por janela separada. Isso preserva o caráter de cache, não de arquivo.
212
 
213
## Síntese
214
 
215
O Skadi Hot Cache é uma camada de distribuição para radiologia em tempo operacional.
216
 
217
Ele parte de uma constatação pragmática: o dado existir no PACS não garante que ele esteja disponível com a velocidade, previsibilidade e ergonomia que o trabalho exige.
218
 
219
Ao transferir dados quentes para uma camada em nuvem, empacotar o exame de forma progressiva e expor manifestos legíveis ao cliente, o sistema reduz a distância entre fila, imagem, anterior e artefato.
220
 
221
O resultado esperado não é apenas download mais rápido.
222
 
223
É uma experiência de leitura em que a infraestrutura aparece menos.

Rodrigo Américo Cunha de Souza

Escreve sobre operações, dados e engenharia de processos em radiologia.