1-HERRAMIENTAS OPEN SOURCE PARA HL7

Anuncio
Agenda
Interoperabilidad con HL7 : la navaja suiza
¿Qué hace falta?
Pero yo...¿cómo hago?: algunas
herramientas open-source relacionadas
con estándares de HL7
Conclusiones
HERRAMIENTAS OPEN SOURCE PARA HL7
Diego Kaminker
KERN INFORMATION TECHNOLOGY S.R.L. - Director
ASOCIACION HL7 ARGENTINA
PRESIDENTE 2006-2010
HL7 INTERNATIONAL
VOLUNTEER OF THE YEAR 2008
CO CHAIR, Education / International Mentoring Commitee
HL7 V3/CDA AMBASSADOR
diego.kaminker@kern-it.com.ar
2
Interoperabilidad con HL7
HL7 V2.x - Estándar para Mensajería
Intrahospitalaria o 'Local'
Estándares de HL7 para interoperabilidad
entre sistemas de salud
MENSAJERIA V3
MENSAJERIA V2.X
Herramientas de HL7: HL7 v2.x
Ultima versión : v2.7 -2008. Mas utilizadas: 2.3.1, 2.4, 2.5,2.5.1
Disponible: en ^ | y como XML
Fortaleza: mensajeria intrahospitalaria interdepartamental
Debilidad: para implementaciones regionales, ambiguedad (requiere
de negociación sitio por sitio), modelo de datos implícito
Alto nivel de uso en el mercado : proveedores de software y
usuarios (hospitales, prestadores)
Ejemplos: LIS to HIS, LIS to BILLING, HIS to RIS, ADT broadcast
Dominios: Admisión de pacientes, Laboratorio, Radiologia, Ordenes,
Interconsulta, Turnos, etc.
CDA R2
OTROS
ESTANDARES
DE HL7
3
4
Herramientas de HL7: HL7 v3
Herramientas de HL7: HL7 CDA R2
HL7 CDA R2 - Documentos Clínicos
HL7 V3 - Mensajería a nivel regional
Ultima versión : Normativa 2010
Disponible : como XML, ITS 1.0 (ITS2.0,DT2 para versiones a partir
de 2011)
Fortaleza: mensajeria REGIONAL (usado para implementaciones de
este tipo en Canadá, Alemania, Mexico, UK). Modelo formal basado
en UML, estricto y explicito de informacion. Reduce la ambiguedad.
Basado en XML. Identificadores unicos globales.
Debilidad: todavia no cubre algunos requerimientos de aplicaciones
departamentales. Mayor complejidad inicial. Todavía algo inestable.
Menor nivel de uso en el mercado : proveedores de software y
usuarios (hospitales, prestadores)
Dominios: Ver ballot en
http://www.hl7.org/v3ballot/html/welcome/environment/index.html
5
Estandar para intercambio de DOCUMENTOS
clinicos (en lugar de mensajes)
Ultima versión : Normativa 2005 (CDA R2)
(CDA R3 en discusión, no ballot)
Fortaleza: Ampliamente difundido. Facil de implementar.
Interoperabilidad evolutiva. Basado en XML y en
modelos de V3. Identificadores unicos globales.
Debilidad: Se lo quiere utilizar como si fuera toda la navaja
suiza.
Alto nivel de uso en el mercado : proveedores de
software y usuarios (hospitales, prestadores)
Dominios: Cualquiera que permita generar documentos
6
Otros estándares de HL7
ARDEN
Resumen
SYNTAX / GELLO
Intercambio de Reglas y Expresiones Clínicas
(Ver presentación del Dr. Jenders)
Para obtener un resumen de los estándares de HL7, ver este documento
creado en forma conjunta por HL7 Argentina y HL7 España:
http://www.vico.org/hl7/AboutHL7/HL7_RepEstandares.pdf
CCOW
Integración de Aplicaciones a nivel de escritorio
7
8
¿Qué hace falta?
Pero yo, ¿cómo hago?
“Infoestructura”
1. Vocabularios y servicios terminológicos
2. Procesamiento de mensajes o artefactos
3. Desarrollo o Adaptación de Perfiles y
Guías
4. Comunicaciones y seguridad
5. Registros comunes (master files)
Haremos foco hoy en ALGUNAS herramientas OPENSOURCE relacionadas con estándares de HL7 para
* Procesamiento de mensajes o artefactos
* Desarrollo o Adaptación de Perfiles y Guías
Procesamiento de mensajes HL7 V2.x/HL7 V3 y
documentos CDA: Mirth Connect
Mensajeria HL7 V2.x: Apache HAPI (Java)
Desarrollo de Guias para Documentos CDA R2:
MDHT (CDA Tools for Eclipse)
9
10
Mirth Connect
Mirth Connect
Referencia:
http://www.mirthcorp.com/community/mirth-connect
Licencia Open Source (OSI/MPL 1.1)
Motor de integración basado en estándares, de código
abierto:
– Ruteo / Filtrado
– Transformación
– Audit Log
– Diversos protocolos
– MLLP,FTP,DB,HTTP
– Soporta HL7 v2.x,V3, DICOM, XML propietario
– [PRACTICAMENTE SIN ESCRIBIR CODIGO] 11
Componentes Principales:
– Server: corre bajo Sun Java JRE 1.5/5.0+ con
1GB RAM con cualquier db como repositorio u
objeto: pgsql,derby,oracle,postgresql,ms sql
server 2005
– Administrator: permite definir las interfaces y
canales, y visualizar el estado del servidor y el
log de mensajes
– Server Manager: GUI de configuración (solo
p/Windows)
12
Mirth Connect
Conceptos Principales:
–
–
Mirth Connect
Canales
• Origen
• Filtros
• Destino
• Transformaciones
Dashboard (cómo está funcionando cada canal)
Canales, para cada canal en Mirth se define
–
–
–
–
–
Datos del Canal
Origen
Filtros
Destino
Transformaciones
13
14
Mirth Connect - Canales
Mirth Connect - Origen
15
16
Mirth Connect - Transformaciones
Mirth Connect - Filtros
17
18
Mirth Connect - Destinos
Mirth Connect - Dashboard
19
20
HAPI
HAPI
Referencia: http://hl7api.sourceforge.net/
Leer un mensaje 1-Parser:
Licencia: Apache, Open Source (MPL,GPL)
Parser HL7 V2.x para Java
– Soporta HL7 v2.x (2.1,2.2,2.3,2.3.1,2.4.2.5,2.5.1,2.6) y
v2.x XML
• Parseo de mensajes (leer y devolver un objeto con
una estructura acorde al mensaje recibido)
• Creación de mensajes
• Envio y recepcion de mensajes (MLLP)
• Validación de conformidad (contra perfiles generados
por el HL7 Messaging Workbench)
• Soporte de Segmentos Z (“Custom Model Classes”)
Parser p = new GenericParser();
Message hapiMsg;
try {
// Este es el parser del mensaje!!
hapiMsg = p.parse(msg);
} catch (EncodingNotSupportedException e) {
e.printStackTrace();
return;
} catch (HL7Exception e) {
e.printStackTrace();
return;
}
21
22
HAPI
MDHT CDA TOOLS
Leer un mensaje 2-Extraccion de datos desde el objeto
Referencia: http://cdatools.org/
Model-Driven Healthcare Tools
Desarrollado por IBM
y Veterans Adm.
ADT_A01 adtMsg = (ADT_A01)hapiMsg;
MSH msh = adtMsg.getMSH();
String msgType = msh.getMessageType().getMessageType().getValue();
String msgTrigger = msh.getMessageType().getTriggerEvent().getValue();
// Imprime "ADT A01"
System.out.println(msgType + " " + msgTrigger);
//Ahora buscamos el apellido (varios componentes del nombre del paciente)
PN patientName = adtMsg.getPID().getPatientName();
// Imprime "SMITH"
String familyName = patientName.getFamilyName().getValue();
System.out.println(familyName);
Open Source
Basado en Eclipse y MIF (message interchange format) en
lugar de en XML Schemas.
23
24
MDHT CDA TOOLS
Para Autores de Guías
de Implementación
MDHT CDA TOOLS
MDHT CDA TOOLS permite definir y reusar
- Templates a nivel de documento
- Provee herramientas basadas
en UML para
Ej: debe contener primer y segundo apellido, un firmante legal y
un codigo de tipo de documento de LOINC=”33221-1”
- Templates a nivel de sección
Ej: debe contener una sección de 'Problemas activos' con
la lista de problemas activos del paciente
- Templates a nivel de enunciado clínico
Ej: debe contener el diagnóstico de egreso codificado con
SNOMED CT
1. generar restricciones a CDA R2
2. combinar y extender modelos
existentes (un modelo es un estandar o
guia)
3. publicar guias de implementación ,
perfiles y diccionarios de datos
25
26
MDHT CDA TOOLS
MDHT CDA TOOLS
Para Implementadores:
MDHT CDA TOOLS permite generar automáticamente
código Java para:
- Generar un documento CDA R2 válido respecto a un
modelo (serialización)
- Consumir un documento CDA R2 (des-serialización)
- Validar un documento contra una guía o modelo
27
28
MDHT CDA TOOLS
Conclusiones
Código generado para un Reporte Neonatal en CDA
1. Existen HERRAMIENTAS OPEN-SOURCE para
generar , procesar, validar y transmitir artefactos de
interoperabilidad (mensajes, documentos), que cumplan
con los estándares de HL7.
2. Las herramientas NO REEMPLAZAN EL
CONOCIMIENTO. Los que usan estas herramientas
tienen que saber DONDE ESTÁ LO QUE BUSCAN, o
QUE INFORMACION QUIEREN TRANSMITIR. Y
cuándo.
3. Para eso no hay más remedio que APRENDER.
Programar menos: SI. Reducir los tiempos de los
proyectos (¡de años a semanas!), SI. Pero... hay que
aprender:
HL7 V2.x, HL7 V3, CDA R2, antes de poder utilizarlas.
NeonatalCareReport clinicalDocument =
NCRFactory.eINSTANCE.createNeonatalCareReport().init();
PatientDataSectionNCR patientData =
NCRFactory.eINSTANCE.createPatientDataSectionNCR().init();
EncountersSection encounters =
NCRFactory.eINSTANCE.createEncountersSection().init();
clinicalDocument.addSection(patientData);
patientData.addSection(encounters);
NeonatalICUEncounterActivity encounter =
NCRFactory.eINSTANCE.createNeonatalICUEncounterActivity().init();
encounters.addEncounter(encounter);
CDAUtil.save(clinicalDocument, System.out);
29
30
¿Preguntas?
¡Gracias!
31
Descargar