# Nox macOS: a fila que baixa exames antes do clique
3
4
> Em radiologia, ganho de tempo também vem de fazer a fila, o backend e a estação local trabalharem antes do radiologista clicar no exame.
5
6
Publicado em 7 de junho de 2026
7
8
Uma forma simples de perder tempo em radiologia é fazer o médico esperar o exame chegar depois que ele já decidiu laudar.
9
10
Isso parece pequeno.
11
12
Mas, em escala, vira fricção diária.
13
14
Captura da versão macOS do Nox com sinais de disponibilidade do Skadi. Os dados identificáveis da fila foram desfocados.
18
19
## Problema
20
21
O fluxo cotidiano pode parecer simples: olhar a fila, escolher um exame, abrir o viewer e laudar.
22
23
Só que, em muitos ambientes, existe uma etapa intermediária mal resolvida.
24
25
O exame ainda precisa ser baixado.
26
27
As imagens ainda precisam chegar.
28
29
O viewer ainda precisa importar o estudo.
30
31
E, em alguns fluxos, anexos clínicos ainda precisam ser encontrados em outro lugar.
32
33
E, quando isso acontece depois da decisão de laudar, o tempo perdido já entrou no fluxo do radiologista.
34
35
O Nox nasceu para atuar exatamente nessa fricção.
36
37
Não como PACS.
38
39
Não como viewer.
40
41
Não como sistema de laudo.
42
43
Mas como uma ferramenta local de aquisição DICOM orientada por fila.
44
45
## Recorte macOS
46
47
A versão macOS é uma aplicação nativa em Swift/AppKit.
48
49
Esse recorte importa.
50
51
O objetivo não era carregar um runtime pesado para uma tarefa estreita, nem transformar a estação de leitura em bancada de engenharia.
52
53
Era criar uma interface pequena, rápida e aderente ao uso real.
54
55
Na build observada, o executável nativo tinha 828 KB, o bundle .app cerca de 1,1 MB e o pacote .dmg cerca de 465 KB.
56
57
O tamanho não é o valor principal do projeto.
58
59
Mas ele ajuda a mostrar a tese: software operacional útil em saúde digital nem sempre precisa ser grande.
60
61
Às vezes, precisa ser pequeno, específico e bem posicionado.
62
63
## Fila central
64
65
Um ponto importante é que a fila não é montada manualmente por cada usuário.
66
67
Ela vem de uma fonte central.
68
69
Na prática, o app consome listas prontas, como Plantão, Medicina Interna, Cardiovascular, Neurorradiologia e Músculo-Esquelético.
70
71
Essas listas são servidas a partir de queries estruturadas em banco, já com metadados úteis para operação: data, hora, SLA, unidade, accession number, paciente, modalidade, quantidade de imagens, especialidade e tipo.
72
73
Isso muda o papel da interface.
74
75
Ela deixa de ser uma tela onde o usuário tenta descobrir o que deve fazer.
76
77
Passa a ser um consumidor local de uma decisão operacional centralizada.
78
79
## Cliente fino, backend como fonte de verdade
80
81
No desenho do Nox, a estação local não é a fonte de verdade da operação.
82
83
O cliente macOS não tenta carregar regra de negócio local que deveria ser compartilhada com outros clientes ou com a operação.
84
85
Ele consome contratos publicados pelo backend.
86
87
A fila, a ordem, a disponibilidade de pacotes em nuvem, os anexos DICOMizados, artefatos de IA publicados como egress, as referências para exames anteriores, a informação clínica resumida e algumas ações operacionais vêm de serviços externos.
88
89
O app nativo fica com uma função mais estreita: apresentar a lista, executar ações autorizadas, baixar arquivos, manter estado local, abrir no viewer e reduzir atrito na estação de leitura.
90
91
Essa separação evita transformar uma GUI local em sistema de verdade da operação.
92
93
## Dois caminhos para a imagem
94
95
O Nox coordena dois caminhos possíveis para aproximar o exame do viewer.
96
97
O primeiro é o caminho direto pelo PACS. Na implementação atual, esse caminho usa WADO, mas a ideia não depende de um protocolo específico.
98
99
O segundo é o caminho pelo Skadi Hot Cache, quando já existem pacotes e artefatos prontos em nuvem.
100
101
Essa diferença é central para entender o projeto.
102
103
O Skadi não substitui o PACS.
104
105
Ele é uma camada intermediária.
106
107
A fonte de verdade clínica permanece sendo o PACS.
108
109
O que o Skadi faz é publicar sinais operacionais que ajudam o cliente local a escolher melhor como baixar e entregar o material.
110
111
Na interface do Nox, isso aparece em colunas como Zip, Ant e Art.
112
113
Zip indica que o exame atual pode ter pacote DICOM pronto em nuvem.
114
115
Ant sinaliza exames anteriores disponíveis, ou a ausência confirmada deles.
116
117
Art aponta artefatos derivados, incluindo material produzido fora do PACS.
118
119
Quando o manifesto do exame está disponível, o Nox pode não precisar buscar o exame diretamente no PACS, série por série. Ele pode consumir os pacotes publicados pelo Skadi.
120
121
O cliente lê a ordem de download, baixa os ZIPs em sequência, valida o tamanho quando essa informação foi publicada e só entrega o arquivo completo ao destino do viewer.
122
123
Isso evita que o OsiriX ou o Horos enxerguem um ZIP parcial como se fosse um artefato pronto.
124
125
O caminho direto ao PACS existe como opção explícita ou de retaguarda.
126
127
A ação Baixar do PACS, por exemplo, força o fluxo direto pelo PACS e não consulta os artefatos do Skadi.
128
129
Essa distinção importa porque ela preserva duas ideias ao mesmo tempo:
130
131
- o PACS permanece como origem canônica do exame;
132
- o Skadi desloca a espera para antes do clique, quando já existe material quente em nuvem.
133
134
Também muda a economia do download.
135
136
Nos testes, o PACS nativo acessado pela Internet ficava na casa de 20-60 Mb/s.
137
138
Com os pacotes servidos pela AWS, a velocidade chegou a 550 Mb/s.
139
140
Quando essa diferença aparece na prática, o problema deixa de ser apenas "como baixar mais cedo".
141
142
Passa a ser "como escolher o melhor caminho e entregar rápido quando o radiologista precisa".
143
144
## Monitoramento e fila
145
146
O monitoramento continua fazendo sentido em um cenário específico: quando o caminho disponível é buscar imagens diretamente no PACS.
147
148
Nesse fluxo, a aplicação pode consultar o PACS em ciclos, perceber que um exame apareceu cedo na fila, identificar novas imagens chegando depois e baixar o que falta antes da decisão de leitura.
149
150
É uma forma de compensar uma origem lenta e variável.
151
152
Com o Skadi, a lógica muda.
153
154
Se o exame já está aquecido em nuvem e pode ser entregue muito mais rápido, monitorar para baixar preventivamente deixa de ser a estratégia principal.
155
156
O ganho passa a estar menos em sondar o PACS o tempo todo e mais em priorizar corretamente a fila local, escolher entre Img PACS e Img Skadi e abrir o viewer no momento certo.
157
158
Por isso a fila persistente de Downloads é uma peça central do cliente.
159
160
Essa fila pode ser alimentada por ações manuais, por Baixar agora, pela intenção de abrir um exame, por exames anteriores selecionados e por outros comandos autorizados.
161
162
O app abre na tela de downloads, mantém a fila entre sessões e permite pausar, retomar, reordenar, limpar e abrir itens já entregues.
163
164
Esse detalhe parece operacional, mas muda a ergonomia.
165
166
O usuário deixa de depender de uma ação frágil e repetida no momento da leitura.
167
168
Ele pode organizar a fila antes, ou deixar que a própria intenção de abertura promova um item para prioridade.
169
170
Na tela, o progresso também ficou mais honesto: há separação entre Img PACS e Img Skadi.
171
172
Img PACS representa o caminho direto ao PACS.
173
174
Img Skadi representa pacotes do exame atual, anteriores e artefatos derivados vindos do cache quente.
175
176
## Contexto antes da leitura
177
178
Além de baixar o exame atual, o cliente aproveita outros sinais publicados junto da fila.
179
180
Quando a lista informa que há exames anteriores disponíveis, o Nox pode abrir um diálogo de seleção, baixar o manifesto leve, validar a referência publicada e, só então, carregar o snapshot completo para permitir que o usuário escolha quais anteriores baixar.
181
182
Os exames anteriores selecionados entram em uma fila própria, sem misturar essa ação com o download do exame atual.
183
184
Outro contrato útil é a informação clínica.
185
186
Quando há contrato de backend para informação clínica, o app pode copiar uma síntese para a área de transferência. Se não houver informação clínica publicada, isso aparece como ausência de dado, não como falha técnica do fluxo de imagem.
187
188
Esse detalhe é importante porque o projeto não está tentando fazer o viewer ou o PACS virarem interface universal de contexto. Ele aproxima o contexto que já foi estruturado no backend do ponto em que a leitura acontece.
189
190
## Artefatos e anexos
191
192
Outra dor prática são os anexos do paciente.
193
194
Na ponta, nem sempre se controla bem a qualidade ou o tamanho do que foi digitalizado. O resultado pode ser um PDF grande, pesado, fora do fluxo natural de leitura.
195
196
No Nox, quando configurado, o cliente também consome anexos já DICOMizados.
197
198
Aqui a fronteira é importante: a aplicação macOS não é quem busca o PDF original nem faz a DICOMização.
199
200
Esse trabalho fica em outra aplicação, que consulta o endpoint adequado, transforma o conteúdo em DICOM e expõe os arquivos pela API de artefatos.
201
202
O Nox consome essa API, baixa os arquivos publicados e entrega os anexos no mesmo destino operacional dos DICOMs do exame.
203
204
Na prática, o anexo deixa de ser uma peça externa que o usuário precisa procurar manualmente e passa a chegar junto do fluxo de imagem, quando disponível.
205
206
## Artefatos de IA fora do PACS
207
208
O mesmo desenho também ajuda em outra dificuldade prática: incorporar artefatos de uma pipeline de IA em um fluxo que continua girando em torno do PACS e do viewer.
209
210
Nem todo resultado útil de IA precisa, ou consegue, nascer dentro do PACS.
211
212
Às vezes o artefato é produzido por uma pipeline externa, com autenticação, contrato próprio e controle de acesso adequado.
213
214
Nesse cenário, o Nox pode consumir esse egress como artefato do Skadi e aproximar o material do exame na estação de leitura, sem exigir que o PACS passe a conhecer nativamente aquela pipeline.
215
216
Essa diferença é relevante.
217
218
O app não transforma um resultado de IA em decisão clínica automática.
219
220
Ele apenas entrega, no ponto de uso, um artefato que já foi produzido e autorizado por outro componente do sistema.
221
222
## Integração com viewer
223
224
No macOS, o destino natural é usar OsiriX ou Horos.
225
226
O Nox pode gravar os DICOMs diretamente na pasta incoming do viewer, permitindo importação progressiva quando o caminho é a entrega direta a partir do PACS.
227
228
Quando o caminho é o Skadi, ele usa área de staging fora do incoming e só move o pacote completo para o destino operacional depois da validação.
229
230
Isso reduz a necessidade de o usuário ficar gerenciando arquivos, pastas ou etapas manuais.
231
232
O objetivo é simples:
233
234
quando o radiologista for abrir o estudo, o exame já deve estar mais perto de estar pronto.
235
236
## Limites
237
238
O Nox não substitui o PACS.
239
240
Não interpreta imagem.
241
242
Não decide prioridade clínica sozinho.
243
244
Não assina laudo.
245
246
E não tenta resolver todos os problemas de distribuição DICOM de uma instituição.
247
248
O projeto tem uma fronteira mais estreita:
249
250
- consumir uma fila pronta;
251
- manter uma fila local persistente de downloads;
252
- consumir pacotes DICOM do Skadi Hot Cache, quando disponíveis;
253
- baixar DICOMs diretamente do PACS quando esse for o caminho explícito ou necessário;
254
- consumir anexos DICOMizados publicados pela API de artefatos;
255
- consumir artefatos de IA publicados como egress fora do PACS;
256
- consumir referências de exames anteriores publicadas pelo backend;
257
- copiar informação clínica quando ela existir em contrato próprio;
258
- disparar ações operacionais autorizadas, quando configuradas, sem codificar a decisão no cliente;
259
- persistir estado local;
260
- integrar com o viewer;
261
- reduzir microesperas no fluxo de leitura.
262
263
Essa fronteira é justamente o que torna o projeto útil.
264
265
Ele não controla a qualidade da digitalização na ponta, não substitui o serviço que DICOMiza os anexos e não transforma cache em fonte de verdade. Apenas aproxima esse material do ponto de leitura quando ele já foi publicado em formato consumível.
266
267
## Síntese
268
269
Em radiologia, tempo perdido nem sempre aparece como grande falha.
270
271
Às vezes, aparece como pequenos intervalos repetidos: esperar a lista carregar, esperar o exame baixar, esperar o viewer importar, verificar se chegaram mais imagens, procurar anexos que deveriam estar no mesmo fluxo.
272
273
O Nox tenta reduzir essa camada de atrito.
274
275
Não por força bruta.
276
277
Mas por uma ideia simples:
278
279
fazer a fila trabalhar antes do clique.
Rodrigo Américo Cunha de Souza
Escreve sobre operações, dados e engenharia de processos em radiologia.