Tranformar Fichero .dcm enviado a Servicio REST mediante STOW-RS a formato DICOM de Ensemble para emitirlo por TCP
Buenos días,
Nos gustaría compartir lo que estamos investigando y en lo que necesitamos su apoyo, para continuar con ello:
1) Hemos desarrollado un Circuito REST: Servicio REST + Proceso + Operacion REST.
Los cuales reciben un fichero de estudios de imágenes médicas .dcm y lo envían tal cual. Para ello enviamos mediante el simulador dcm4che y en concreto mediante la línea:
./stowrs --disableTM --allowAnyHost --url https://[IP del ESB]:[Puerto del ESB]/aplicaciones/scs/cconcertadostest/almacenarImagen /opt/contenedor/PACS/dcm4che-5.27.0-bin/dcm4che-5.27.0/bin/shared/dicom/d1I00012.dcm
Observamos la traza:
Enviamos el mismo fichero tal cual, recibiéndolo en el Servidor Destino que simulamos mediante dcm4che y comando:
./stowrsd -b 8080 --unpack
De manera que en el Servidor se genera el .dcm
De manera que se ve la imagen:
2) Hemos probado un proceso DICOM > Operacion TCP > Servidor Destino que recibe DICOM
Reenviando una traza:
El servidor el cual hemnos iniciado previamente mediante:
./storescp -b VNAPRE:11112 --filepath {00100020}/{0020000D}/{0020000E}/{00080018}.dcm
recibe el DICOM enviado mediante la Operacion TCP
Y se genera el .dcm
Viendose de manera igual:
3) El desafío, reto y necesidad que se nos genera es la siguiente:
El circuito real necesario es:
Servicio REST + Proceso + Operación TCP
Es decir, sistema origen es necesario que nos envíe sí o sí en REST, y sistema destino necesita sí o sí que enviemos mediante TCP
¿ qué documentación , ejemplos , medios , herramientas , vídeos , tutoriales , referencias , o lecturas nos pueden indicar, exponer, anotar; para nosotros indagar y buscar la forma de realizarlo ?
Hemos indagado por nuestra cuenta lo siguiente:
Hemos añadido en el Servicio REST las líneas que pensamos que parece que pudieran convertir un fichero .dcm REST en un DICOM de Ensemble a Enviar por TCP:
set dicom = ##class(EnsLib.DICOM.Document).%New()
do ##class(EnsLib.DICOM.Document).CreateFromDicomFileStream(pInput,dicom)
set objetoEntrada.dicom = dicom
$$$LOGINFO("objetoEntrada.dicom: "_objetoEntrada.dicom)
Además, a fines informativos, para visualizar en el Visor de Mensajes, el contenido de los EnsLib.DICOM.Document hemos escrito en la clase:
Siendo el Mensaje Request:
{
Parameter RESPONSECLASSNAME = "Mensajes.Response.CConcertadostoPACS.AlmacenarImagenResponse";
Property mensaje As %String(MAXLEN = "");
Property dicom As EnsLib.DICOM.Document;
De esta manera vemos en la traza, una estructura que recuerda a DICOM de Ensemble , la pega, reto, desafío, o lo que nos queda por entender y que nos resulta extraño es ¿por qué el <FileStream> es vacío? :
Siendo una traza DICOM de Ensemble con Imagen una en la que sí se ve el <FileStream> relleno:
🤲 Muchas gracias de antemano, porque ustedes disponen de más conocimiento, entereza, práctica, saber hacer, templanza y sobre todo nos pueden auxiliar, aportar, apoyar; en esta aventura
¿ qué documentación , ejemplos , medios , herramientas , vídeos , tutoriales , referencias , o lecturas nos pueden indicar, exponer, anotar; para nosotros indagar y buscar la forma de realizarlo ?
Un saludo