Skip to main content

Adicionar Nova Unidade — Aba PACS

Documentação funcional detalhada da aba PACS do formulário de unidade (Adicionar Nova Unidade / Editar Unidade): view, seções (Router interno, PACS interno, Worklist, Command Center, Viewer externo), campos, validações, controller, model, fluxos e API.

Para a aba Informações, consulte Adicionar Nova Unidade — Aba Informações (detalhada).


Índice


Visão geral

A aba PACS é a segunda aba (índice 1) da tela de unidade (/empresa/:id). Ela concentra:

  1. Router interno (equipamento PACS externo): AE Title, IP, Porta, URL PACS (select), Descrição DICOM, Use Lossless, Congelamento intermediário/frio (GB), Tamanho de storage (GB), Observações PACS.
  2. PACS interno: AE Title, IP, Porta, E-mail notificação, URL PACS interno, Tempo PACS (dias + data), Beta PACS interno, Possui congelamento (checkbox).
  3. Worklist: AE Title, IP, Porta (objeto empresa.worklist).
  4. Command Center: AE Title, IP, Porta (objeto empresa.commandCenter).
  5. Viewer externo: Host (empresa.empresa.host_viewer_externo).

O formulário continua sendo o mesmo empresaForm; os campos estão em empresa.empresa, empresa.worklist e empresa.commandCenter. Todos os inputs da aba podem ser desabilitados com ng-disabled="!is_proprietario".

visao geral


Rota e contexto

ItemValor
StateempresaTabs
URL/empresa/:id
Template da telaviews/empresa/empresaTabs.html
TabSegunda aba: md-tab-label com data-translate="PACS"
Conteúdo da abang-include="empresa.pathFile.empresaFormPacs"views/empresa/form/empresaFormPacs.html
ControllerempresaFormCtrl

Ao selecionar a tab 1, a ação selectTab(1) dispara buscarPacsExterno() (carrega lista de PACS externos para o select).


View (empresaFormPacs.html)

AtributoValor
Arquivoviews/empresa/form/empresaFormPacs.html
Formname="empresaForm" (compartilhado com a aba Informações)
Layoutpanel-body > layout-padding > form > uma row com três colunas principais (col-md-4, col-md-4, col-md-4) e depois uma row com botões (col-md-12)

Seção 1 — Router interno (PACS externo)

Título: ROUTER_INTERNO (h3), subtítulo EQUIPAMENTO_ROUTER_INTERNO (h5). Coluna esquerda (col-md-4), dentro de um fieldset.

OrdemLabel (i18n)ng-modelTipo / ComponenteObrigatórioObservação
1AE_TITLEempresa.empresa.ea_titleinputNãong-disabled="!is_proprietario"
2IPempresa.empresa.ipinputNão
3PORTAempresa.empresa.portainput type="number"Não
4URL_PACSempresa.empresa.pacs_externoselect-unicoSimselect-entidade="selectPacsExterno", select-placeholder="PROCURE_PACS", ng-change="setDescricaoDicom(empresa.empresa.pacs_externo)"
5DESCRICAO_DICOMempresa.empresa.descricao_dicominputSe is_pacs_externong-show="empresa.empresa.is_pacs_externo"
6USA_LOSELESSempresa.empresa.use_losslessmd-selectSimOpções SIM/NAO (true/false)
7CONGELAMENTO_INTERMEDIARIO_GBempresa.empresa.congelamento_intermediario_gbinput type="number" min="0"Não
8CONGELAMENTO_FRIO_GBempresa.empresa.congelamento_frio_gbinput type="number" min="0"Não
9TAMANHO_DE_STORAGE_GBempresa.empresa.storage_sizeinput type="number" min="0"Não
10OBSERVACOES_PACSempresa.empresa.observacoes_pacstextareaNãoid textarea-empresa-form-pacs-observacoes, rows="8", maxlength="500"

Layout dos campos 7–9: duas linhas; primeira linha dois col-md-6 (congelamento intermediário e frio); segunda linha um col-md-6 (storage_size), com margens reduzidas entre as linhas.

Router interno


Seção 2 — PACS interno

Título: PACS_INTERNO (h3), subtítulo EQUIPAMENTO_ROUTER_EXTERNO (h5). Coluna do meio (col-md-4), fieldset.

OrdemLabel (i18n)ng-modelTipoObservação
1AE_TITLEempresa.empresa.ea_title_pacs_internoinput
2IPempresa.empresa.ip_pacs_internoinput
3PORTAempresa.empresa.porta_pacs_internoinput type="number"
4EMAIL_NOTIempresa.empresa.email_notificacaoinputng-pattern para e-mail
5URL_PACS_INTERNOempresa.empresa.url_pacs_internoinput
6DIAS (TEMPO_PACS)empresa.empresa.tempo_pacsinput type="number" step="1" min="0"ng-change="limparCamposPacs(1)"
7Dataempresa.empresa.data_pacsinput type="datetime-local"id input-empresa-form-pacs-data, ng-change="limparCamposPacs(2)"
8BETA_PACS_INTERNOempresa.empresa.beta_pacs_internomd-checkboxid checkbox-empresa-form-pacs-beta
9POSSUI_CONGELAMENTOempresa.empresa.possui_congelamentomd-checkboxid checkbox-empresa-possui-congelamento; label IMGS_CONGELADAS acima

PACS interno


Seção 3 — Worklist

Título: WORKLIST (h3), subtítulo INFORMACOES_CADASTRO_NODICOM_LOCAL (h5). Coluna direita (col-md-4), primeiro bloco. Objeto: empresa.worklist.

Label (i18n)ng-model
AE_TITLEempresa.worklist.ae_title
IPempresa.worklist.ip
PORTAempresa.worklist.porta (type="number")

worklist


Seção 4 — Command Center

Título: COMMAND_CENTER (h3), subtítulo INFORMACOES_CADASTRO_NODICOM_LOCAL (h5). Mesma coluna direita. Objeto: empresa.commandCenter.

Label (i18n)ng-model
AE_TITLEempresa.commandCenter.ae_title
IPempresa.commandCenter.ip
PORTAempresa.commandCenter.porta (type="number")

command center


Seção 5 — Viewer externo

Título: VIEWER_EXTERNO (h3), subtítulo VIEWER_EXTERNO_INTEGRADO (h5). Mesma coluna. Campo em empresa.empresa.

Label (i18n)ng-model
HOSTempresa.empresa.host_viewer_externo

viewer externo


Botões da aba PACS

IDCondiçãoAçãoLabel (i18n)
btn-empresa-form-criar-unidadeempresa.selectID == 0ng-click="criarEmpresa(empresa)", desabilitado se !empresa.empresa.pacs_externo.itemSelectCRIAR_UNIDADE
btn-empresa-form-pacs-salvarempresa.selectID != 0ng-click="atualizarEmpresa(empresa)" (sem segundo parâmetro), desabilitado se empresaForm.$invalid || !is_proprietarioSALVAR

Na aba PACS, ao salvar em edição chama-se atualizarEmpresa(empresa) sem o parâmetro true; assim o payload não remove campos de outras abas e envia worklist, commandCenter, e todos os campos de PACS.


Validações (controller)

  • validaPacsInterno(dados.empresa): exige preenchimento consistente do PACS interno. Se o usuário preencher apenas parte dos campos (AE Title, URL, tempo/dias ou data), exibe CAMPO_PACS_INTERNO_OBRIGATORIO e retorna false. Chamada antes de criarEmpresa e atualizarEmpresa.
  • storage_size: em atualizarEmpresa, se storage_size !== null e (storage_size < 0 ou > 999999), exibe MSG_TAMANHO_STORAGE_INVALIDO e interrompe.
  • tempo_impressao / tempo_edicao: validação de tempo (tempoValido) é checada em atualizarEmpresa; se inválida, exibe TEMPO_EDICAO_MAIOR_QUE_IMPRESSAO.

Controller (empresaFormCtrl)

Arquivo: app/controllers/empresaFormCtrl.js

Inicialização ao abrir a aba (tab 1)

  • tabActions[1]: chama $scope.buscarPacsExterno() (carrega lista de PACS externos para o select da URL PACS).

Funções usadas na aba PACS

FunçãoUso
setDescricaoDicom(pacs_externo)Chamada no ng-change do select URL PACS; atualiza descrição DICOM conforme o PACS selecionado.
limparCamposPacs(1)ng-change do campo Dias (tempo_pacs).
limparCamposPacs(2)ng-change do campo Data (data_pacs).
criarEmpresa(empresa)Usado pelo botão Criar Unidade nesta aba; valida PACS interno, CNPJ, país; monta id_pacs/url_pacs_externo a partir de empresa.empresa.pacs_externo; chama backEmpresa e criarEmpresa (HTTP).
atualizarEmpresa(empresa)Chamado pelo botão Salvar (sem true); monta payload com todos os dados (incl. worklist, commandCenter); valida storage_size e tempo; chama backEmpresa e atualizarEmpresa (HTTP).

Montagem de id_pacs / url_pacs_externo

Antes de chamar backEmpresa, o controller define:

  • dados.empresa.id_pacs = dados.empresa.pacs_externo.itemSelect
  • dados.empresa.url_pacs_externo = _pacsSelecionado[0].nome (nome do item selecionado no array do select)
  • dados.empresa.is_pacs_externo = true

Worklist e commandCenter são enviados em dados.empresa.worklist e dados.empresa.commandCenter quando preenchidos (objetos com tipo_noDicom e os campos ae_title, ip, porta).


Model (empresaModel) e payload

Arquivo: app/domain/models/empresaModel.js

frontEmpresa(dadosBack)

Ao carregar a unidade, preenche, entre outros:

  • ea_title, ip, porta, pacs_externo (formato select), descricao_dicom, use_lossless, congelamento_intermediario_gb, congelamento_frio_gb, storage_size, observacoes_pacs (quando existem; congelamento só quando storage_size != null).
  • ea_title_pacs_interno, ip_pacs_interno, porta_pacs_interno, email_notificacao, url_pacs_interno, tempo_pacs, data_pacs, beta_pacs_interno, possui_congelamento.
  • host_viewer_externo.
  • worklist e commandCenter vêm em response.data.empresa e são atribuídos a empresa.worklist e empresa.commandCenter no controller.

backEmpresa(dados)

Inclui no payload da empresa todos os campos de PACS (id_pacs, url_pacs_externo, storage_size, congelamento_intermediario_gb, congelamento_frio_gb apenas quando dados.storage_size != null, observacoes_pacs, ea_title, ip, porta, ea_title_pacs_interno, ip_pacs_interno, porta_pacs_interno, email_notificacao, url_pacs_interno, tempo_pacs, data_pacs, beta_pacs_interno, possui_congelamento, host_viewer_externo). Inclui também worklist e commandCenter quando presentes no objeto enviado ao back.


Fluxos de uso

Nova unidade

  1. Usuário preenche a aba PACS: seleciona URL PACS (obrigatório para habilitar Criar Unidade), descrição DICOM, use lossless, storage, congelamento, PACS interno (se aplicável), worklist, command center, viewer.
  2. Clica Criar Unidade na aba PACS (ou na aba Informações). criarEmpresa(empresa) valida PACS interno, CNPJ e país; monta id_pacs/url_pacs_externo; chama API de criação.

Editar unidade

  1. Ao abrir a aba PACS, buscarPacsExterno() é chamado; os dados da unidade já foram carregados em getEmpresa() (aba Informações), então empresa.empresa, empresa.worklist e empresa.commandCenter já estão preenchidos.
  2. Usuário altera campos e clica Salvar. atualizarEmpresa(empresa) valida PACS interno, tempo e storage_size; monta payload com worklist e commandCenter; chama PUT /empresa/.

Payload e API (salvar pela aba PACS)

Criar (POST /empresa/)

  • O payload inclui todos os dados de empresa montados por backEmpresa(empresa.empresa), incluindo id_pacs, url_pacs_externo, storage_size, congelamento (quando storage_size != null), observacoes_pacs, dados de PACS interno, worklist e commandCenter (se o controller tiver atribuído a empresa.empresa antes do back).

Atualizar (PUT /empresa/)

  • Ao salvar pela aba PACS, atualizarEmpresa(empresa) é chamado sem o parâmetro true. O controller não remove campos de outras abas; o payload contém worklist, commandCenter e todos os campos de PACS. O backend recebe o objeto completo da empresa (conforme montado por backEmpresa).

Obter unidade (GET /empresa/:id)

  • A resposta é usada em getEmpresa(); worklist e commandCenter vêm em response.data.empresa e são atribuídos a empresa.worklist e empresa.commandCenter no controller. Os campos de PACS em empresa.empresa vêm de frontEmpresa.

Componentes e arquivos

TipoCaminho
View (aba)views/empresa/form/empresaFormPacs.html
Controllerapp/controllers/empresaFormCtrl.js
Modelapp/domain/models/empresaModel.js
Service HTTPapp/services/http/empresaHttpService.js
Config pathFileapp/config/config.jsempresaFormPacs: 'views/empresa/form/empresaFormPacs.html'
Tela (tabs)views/empresa/empresaTabs.html
Controller tabsapp/controllers/empresaTabsCtrl.js
Rotaapp/core/config.route.js → state empresaTabs, url /empresa/:id

i18n

Chaves usadas na aba PACS (labels, títulos, placeholders):

  • ROUTER_INTERNO, EQUIPAMENTO_ROUTER_INTERNO, AE_TITLE, IP, PORTA, URL_PACS, PROCURE_PACS, DESCRICAO_DICOM, USA_LOSELESS, SIM, NAO, CONGELAMENTO_INTERMEDIARIO_GB, CONGELAMENTO_FRIO_GB, TAMANHO_DE_STORAGE_GB, OBSERVACOES_PACS, PACS_INTERNO, EQUIPAMENTO_ROUTER_EXTERNO, EMAIL_NOTI, URL_PACS_INTERNO, TEMPO_PACS, DIAS, BETA_PACS_INTERNO, IMGS_CONGELADAS, POSSUI_CONGELAMENTO, WORKLIST, COMMAND_CENTER, VIEWER_EXTERNO, VIEWER_EXTERNO_INTEGRADO, INFORMACOES_CADASTRO_NODICOM_LOCAL, HOST, CRIAR_UNIDADE, SALVAR.

Mensagens: CAMPO_PACS_INTERNO_OBRIGATORIO, MSG_TAMANHO_STORAGE_INVALIDO, TEMPO_EDICAO_MAIOR_QUE_IMPRESSAO, MSG_IS_PACSEXTERNO, EMPRESA_CRIADA_SUCESSO, MSG_ALTERAR_UNIDADE_SUCESSO, MSG_OPERACAO_ERROR.


Âncoras

ÂncoraConteúdo
#visão-geralObjetivo da aba PACS e seções
#rota-e-contextoState, URL, tab index
#view-empresaformpacshtmlArquivo e form
#seção-1--router-interno-pacs-externoCampos router interno e storage/congelamento
#seção-2--pacs-internoCampos PACS interno
#seção-3--worklistCampos worklist
#seção-4--command-centerCampos command center
#seção-5--viewer-externoCampo host viewer
#botões-da-aba-pacsCriar Unidade e Salvar
#validações-controllervalidaPacsInterno, storage_size, tempo
#controller-empresaformctrlFunções e montagem de payload
#model-empresamodel-e-payloadfrontEmpresa e backEmpresa para PACS
#fluxos-de-usoNova unidade e editar
#payload-e-api-salvar-pela-aba-pacsPOST/PUT
#componentes-e-arquivosLista de arquivos
#i18nChaves de tradução

Written by: Fabiane Heckmann

Last modified:

© 2026 Mobilemed. Todos os direitos reservados.