lunes, 21 de octubre de 2019

Protocolo DICOM: medir el tiempo de descarga de estudios (Wintel)


DCMTK es un toolkit para el testeado de una aplicación dicom cliente/servidor (también llamado SCU/SCP)

Vamos a utilizar los ejecutables de DCMTK, una vez descargados situar una sesión de CMD a la carpeta .. \dcmtk\ donde lo tengamos instalado.

A modo de prueba ejecutaremos el siguiente comando contra un PACs con el AE titile correspondiente que va a pedir un estudio:

movescu -v --study --call "SRVAGFWFM01" --aetitle "PCALMA" --key "0008,0052=STUDY" --key "0020,000D=1.2.124.113532.80.22153.16226.20191017.91050.9809773" 192.168.108.229 104

Este es el comando original de descarga de estudios, el cual vamos a insertar en un bat que medirá el tiempo de ejecución de este comando, esto nos servirá para determinar el tiempo de descarga ya que el comando al finalizar libera la conexión y el script nos dá el tiempo transcurrido.

Pero antes debemos ejecutar el nodo receptor SCP en el equipo que seleccionemos con el  siguiente comando el cual abrirá el puerto de recepción 104:

storescp 104 -aet PCALMA -od C:\Users\usralma\Desktop\Output

Creamos un bat llamado timecmd.bat e insertamos el comando anterior:

@echo off
@setlocal
set start=%time%

:: Estudio de tipo CT de 704 imagenes
C:\Users\roland.peralta\Desktop\HERRAMIENTAS\dcmtk\windows\movescu -v --study --call "DCM4CHEE" --aetitle "AE_ALMA3D_ROLAND" --output-directory "almalog" --key "0008,0052=STUDY" --key "0020,000D=1.2.250.1.59.1.999.10.20170210.16985655" 172.26.0.7 11112 
set end=%time%
set options="tokens=1-4 delims=:.,"
for /f %options% %%a in ("%start%") do set start_h=%%a&set /a start_m=100%%b %% 100&set /a start_s=100%%c %% 100&set /a start_ms=100%%d %% 100
for /f %options% %%a in ("%end%") do set end_h=%%a&set /a end_m=100%%b %% 100&set /a end_s=100%%c %% 100&set /a end_ms=100%%d %% 100
set /a hours=%end_h%-%start_h%
set /a mins=%end_m%-%start_m%
set /a secs=%end_s%-%start_s%
set /a ms=%end_ms%-%start_ms%
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
if %hours% lss 0 set /a hours = 24%hours%
if 1%ms% lss 100 set ms=0%ms%
:: Mission accomplished
set /a totalsecs = %hours%*3600 + %mins%*60 + %secs%
echo command took %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total)


Resultado:



Así, para determinar los MB por segundo realizamos esta sencilla operación: Medimos el peso en la carpeta donde se han guardado los estudios, en este caso 356 MB y dividimos este valor por el tiempo total que llevó descargarlo 18.85 segundos, el total nos dará 18.88 MB / por segundo.




lunes, 14 de octubre de 2019

Configurar un PACs DICOM en un contendedor DOCKER

Instalar DOCKER DCM4CHEE V3
_________________________________________

En primer lugar, configurar una ip ESTATICA del servidor:
editar archivo:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=static
ONBOOT=yes
IPADDR=172.26.0.188
PREFIX=24
GATEWAY=172.26.0.250
DNS1=172.26.0.3
DNS2=8.8.8.8


Instalar DOCKER
yum install docker

Activar el deamon:
sudo systemctl start docker
sudo systemctl enable docker

Instalar containter DCM4CHEE v3
Comando: docker pull jodogne/dcm4chee

Configurar e iniciar DCM4CHEE
docker container run -p 8080:8080 -p 11112:11112 --name="pacs" jodogne/dcm4chee

Abrir los puertos del firewall interno:
firewall-cmd --add-port=11112/tcp --permanent
firewall-cmd --reload

Iniciar - Reiniciar DCM4CHEE (casos de reinicio del servidor)
docker start pacs

Mantener DCM4CHEE iniciado al reiniciar el servidor:

    crear script:
    vi iniciar_pacs.sh
    #!/bin/sh
    echo Iniciando PACs
    docker start pacs

    guardarlo en:
    /root/Desktop/

    dar derechos de ejecución:
    chmod +x iniciar_pacs.sh

    ejecutar crontab (inicio retrasado 90 segundos):
    crontab -e
    @reboot /bin/sleep 90 ; /root/Desktop/iniciar_pacs.sh

Ver instancias activas:
docker ps

Destruir contenedores (no activos):
Comando: docker system prune

Parar instancia:
docker stop pacs

Comprobar PUERTOS a la escucha:
netstat -antp | grep LISTEN

URL plataforoma (v3):
http://172.26.0.188:8080/dcm4chee-web3/

Configuración Nodo DICOM en el visor cliente:



Ver logs:
journalctl | grep pacs
docker logs --details pacs

Comprobar CARGA del servidor de DOCKER:
docker stats pacs

miércoles, 9 de octubre de 2019

Instalación de Linux Cent OS 7 (Simple)




  1. Descargar imagen del SO: CentOS-7-x86_64-Minimal-1810 
  2. Instalarlo sobre una VM, ej. Hyper-V
  3. Configurar DHCP o IP fija para acceder a Internet:
    • ver interfaces: ip add
    • cd /etc/sysconfig/network-scripts/
    • vi ifcfg-eth0
    • pulsar tecla insert para modificar
    • cambiar ONBOOT=yes (valor por defecto “no”)
    • ejemplo de configuración:
    • BOOTPROTO=static
      ONBOOT=yes
      IPADDR=172.26.0.188
      PREFIX=24
      GATEWAY=172.26.0.250
      DNS1=172.26.0.3
      DNS2=8.8.8.8
    • DEVICE=eth0
    • Guardar :wq<Return> (control+c para cambiar de modo)
    • reiniciar interfaz: /etc/init.d/network restart
    • probar ping a google.com
     4. Instalar net-tools:
    • yum install net-tools
    • + info: https://linuxconfig.org/howto-install-ifconfig-on-centos-7-linux
    5. Activar y modifcar Firewall:

    • sudo systemctl start Firewalld.service
    • Firewall-cmd --list-all
    • Obertura de puertos Firewall:
    • https://stackoverflow.com/questions/24729024/open-firewall-port-on-centos-7
   6. Crear el entorno gráfico (sin ejecución al inicio):

    • sudo yum -y groups install "GNOME Desktop"
    • iniciar el entorno con el comando : startx