jueves, 9 de junio de 2011
Gestión de Mensajería XML
lunes, 6 de junio de 2011
Aclarando el concepto "Tamaño de Grupo"
Set tSC = ##class(Ens.Director).CreateBusinessService("MyService",.tService)
viernes, 3 de junio de 2011
Academia de Ensemble 2011 - Parte 8
Academia de Ensemble 2011 - Parte 7
Academia de Ensemble 2011 - Parte 6
Academia de Ensemble 2011 - Parte 5
Academia de Ensemble 2011 - Parte 4
Academia de Ensemble 2011 - Parte 3
Academia de Ensemble 2011 - Parte 2
Aqui esta el paso 2 de la academia.
En este ocasión en el video veremos un paso a paso para realizar la creación de una producción básica de gestión de mensajería HL7. Posteriormente en los siguientes pasos utilizaremos esta producción quitando, añadiendo y configurando componentes.
Atención si seguis el video tened en cuenta que a la hora de crear la producción el nombre del paquete "academia" va en minúsculas. Si no lo hacéis así en pasos posteriores os dará problemas ya que tendréis que importar clases en ese paquete (que debe tener exactamente ese nombre).
jueves, 2 de junio de 2011
Academia de Ensemble 2011 - Parte 1
Aqui está el primer video de la academia de Ensemble del pasado Simposio de InterSystems 2011 que tuvo lugar en Valencia (25 y 26 de Mayo).
Para entender los objetivos de la academia podeis ver la presentación inicial
Descarga la presentación en PDFSi seguis el video tened en cuenta que esta academia esta presentada con una versión preliminar de la futura 2011.1 que aún no está liberada. Lo hicimos así para que pudierais comenzar a familiarizaros con el nuevo interfaz.
miércoles, 1 de junio de 2011
Como saber si un servicio esta habilitado programaticamente
En ocasiones nos puede interesar consultar mediante código si un servicio determinado está o no habilitado.
Para eso he implementado este método de clase que puedes agregar a tu clase o a otra más general de la que heredar, y luego invocarlo según interese:
ClassMethod IsServiceEnabled() as %Boolean
{
#dim tSC as %Status
#dim productionName as %String
#dim productionStatus as %Integer
set tSC= ##class(Ens.Director).GetProductionStatus(.productionName,.productionStatus)
#dim config as Ens.Config.Production
set config = ##class(Ens.Config.Production).%OpenId(productionName)
#dim item as Ens.Config.Item
set item=config.FindItemByConfigName(..%ClassName(1))
quit item.Enabled
}
Transformaciones en campos HL7 de más de 32KB
Si tienes mensajes con campos de más de 32 Kb (por ejemplo un mensaje con un OBX de radiología que tenga un texto de más de 32 KB) y realizas una manipulación directa de ese campo desde un DTL (una manipulación puede ser una copia directa cuando transformas de XML a ER7). Entonces EL VALOR SE TRUNCA A 32 KB.
Para hacerlo correctamente hay que hacerlo de una manera especial:
For DTL's that provide transformation on segments with fields > 32k, there are some different things that need to be done. For the purpose of my explanation, lets assume my OBX:5 field is > 32K.
Basically, if you have a DTL that makes no changes to any part of the OBX segment, and are using a copy, there is nothing different you need to do. If you are adjusting a field (the most likely case) we will need to use some stream manipulation.
What happens is that Ensemble stores segment data in 32k chunks internally. While providing the string value, it returns only the contents of the first chunk. This will also occur even if the long strings are enabled.
To get around this, you need to use the ReadRawDataStream and StoreRawDataStream of the EnsLib.HL7.Segment class.
The behavior of ReadRawDataStream is
0) If you do not specify a property path the whole of the segment is returned
1) If the field you want is < 32K, you just get that field
2) If the field you want is >32K, you get from that field to the end of the segment.
3) If the field you want is after the 32K field you get nothing returned. ReadRawDataStream was intended for use when the final field of the segment was greater than 32k.
I've included a sample below. In this case, I want to manipulate a field prior
to 5 (the > than 32)
If you want to manipulate 5 or a field after it, you would have to use standard stream manipulation.The test transformation is studio does also have a 32K limit, but that is not related to what is actually happening when the message passes through.
Saludos