Publicaciones:
Respuestas:

Hola Yone,

En los adaptadores de interoperabilidad no hay directamente un adaptador STOW-RS pero puedes intentar implementar la parte de servicios REST en la plataforma y luego enviarlo utilizando los adaptadores DICOM TCP convencionales.

Los servicios y operaciones incluidos que utilizan adaptadores DICOM TCP emplean siempre como mensaje EnsLib.DICOM.Document. Y sí, puedes instanciar un documento DICOM desde un fichero (stream) con CreateFromDicomFileStream.

Comprueba siempre el resultado de CreateFromDicomFileStream por si devuelve algún error. Si todo va bien, debería ser 1 o lo que es lo mismo un $$$OK.

USER>set fileStream = ##class(%Stream.FileBinary).%New()

USER>set fileStream.Filename="/shared/dicom/d1I00001.dcm"                                     

USER>write fileStream.Size
262878
USER>set sc = ##class(EnsLib.DICOM.Document).CreateFromDicomFileStream(fileStream, .dicom)

USER>write sc
1
USER>zwrite dicom
dicom=13@EnsLib.DICOM.Document  ; <OREF>
+----------------- general information ---------------
|      oref value: 13
|      class name: EnsLib.DICOM.Document
| reference count: 2
+----------------- attribute values ------------------
|       %Concurrency = 1  <Set>
|     DestinationAET = ""
|           Modified = 1
|  OriginalSourceAET = ""
|          SourceAET = ""
|    SourceIPAddress = ""
+----------------- swizzled references ---------------
|       i%CommandSet = ""  <Set>
|       r%CommandSet = "7@EnsLib.DICOM.CommandSet"  <Set>
|     i%FixedDataSet = ""
|     r%FixedDataSet = "5@EnsLib.DICOM.FixedDataSet"
|   i%MutableDataSet = ""  <Set>
|   r%MutableDataSet = "4@EnsLib.DICOM.MutableDataSet"  <Set>
+--------------- calculated references ---------------
|        (i%DataSet)   <Get>
|        (r%DataSet)   <Get>
|            HasData   <Get>
+-----------------------------------------------------

USER>

Una vez tengas tu instancia de EnsLib.DICOM.Document ya puedes enviarlo por DICOM TCP convencional. En tu ejemplo, parece que lo has incluido en otro mensaje.

Quizá se haya construido con errores el EnsLib.DICOM.Document, o simplemente sea un tema de representación en el visor de mensajes. Siempre puedes instanciar el mensaje en concreto que quieras en el terminal y examinar su contenido para quedarte seguro.

Hola Yone,

Los Streams se utilizan para almacenar cadenas de datos sin límite de tamaño. Si en una clase persistente, incluyes propiedades de tipo Stream serán persistentes.

%Stream.GlobalCharacter, %Stream.GlobalBinary: persisten los datos en globals (en la base de datos).
%Stream.FileCharacter, %Stream.FileBinary: persisten los datos en ficheros (.stream).

Lo que te recomienda la documentación es que utilices estas clases en lugar de sus versiones antiguas, por ejemplo:

  • Utiliza %Stream.GlobalCharacter en lugar de la antigua %GlobalCharacterStream.
  • Utiliza %Stream.FileCharacter en lugar de la antigua %FileCharacterStream.

La gestión de los mensajes huérfanos es como siempre. Si tienes un árbol de clases persistente que cuelga de un mensaje de interoperabilidad (incluya o no Streams), recuerda siempre implementar el método %OnDelete para borrar su contenido adecuadamente.

Hola Yone,

Si el %Status (tSC) que te devuelve ##class(ITB.HL7.Util.Convert).ER7ToXML es 1 como muestras, entonces el error no lo tienes en la parte de la conversión de ER7 a XML en Healthcare-HL7-XML (ITB).

Tendrás que ir examinando el resto de partes que tengas en tu servicio web:

  • No sé si tienes más código antes o después de esa llamada, comprueba que no haya errores.
  • Comprobar logs del servidor web y del CSP Webgateway. Incluso puedes activar ISCLOG Documentación
Aplicaciones de Open Exchange:
Seguidores:
Siguiendo:
Alberto aún no sigue a nadie.
Insignias de Global Masters: