> 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
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.