1. Cuándo Se Requieren Schemas Personalizados
Puntos Clave
- NO requeridos cuando:
- REQUERIDOS cuando:
- Perspectiva clave: Las necesidades de validación y análisis impulsan los requisitos de schema personalizado
Notas Detalladas
Resumen General
Comprender cuándo se requieren schemas personalizados versus cuándo los schemas estándar son suficientes es una habilidad crítica para el diseño de interfaces HL7. Los schemas personalizados agregan complejidad a tu arquitectura de integración, por lo que solo deben crearse cuando sea genuinamente necesario.
Cuándo NO Se Requieren Schemas Personalizados
Segmentos Opcionales Faltantes
- Los schemas HL7 definen muchos segmentos como opcionales (líneas punteadas o corchetes cuadrados)
- Ejemplo: El segmento PD1 es opcional en mensajes ADT_A01
- Si tu sistema emisor no incluye segmentos opcionales, no se necesita schema personalizado
- El mensaje valida exitosamente contra el schema estándar
Z-Segments Estándar al Final de Mensajes
- Gracias al "-z" en la validación dm-z predeterminada
- El estándar HL7 explícitamente permite Z-segments al final para extensiones específicas del proveedor
- Si no necesitas analizar los campos dentro de esos segmentos, usa schema estándar
- La advertencia de validación "Unrecognized Z Segment found after PV1" es informativa, no un error
Cuándo SE Requieren Schemas Personalizados
Escenario 1: Desviaciones de Estructura de Mensaje
- Cuando segmentos requeridos (como EVN en ADT_A01) faltan en los mensajes que recibes
- Crear un schema personalizado que hace el segmento opcional para tu entorno
- Relaja la validación para que coincida con tu realidad de mensajes actual
Escenario 2: Campos Extra en Segmentos Estándar
- Cuando los proveedores agregan campos personalizados a segmentos (ej., identificadores de paciente propietarios en PID)
- Para analizar estos campos extra en DTLs, debes definirlos en un schema personalizado
- Sin schema personalizado, no puedes referenciar campos por nombre - solo GetValueAt() genérico
Escenario 3: Estructura de Segmento Diferente
- Cuando el orden de campos o la cardinalidad difieren del estándar
- Algunas implementaciones de proveedores reordenan campos o cambian el estado requerido/opcional
- Los schemas personalizados documentan estas variaciones y permiten análisis apropiado
Escenario 4: Análisis a Nivel de Campo de Z-Segment
- Cuando necesitas extraer y procesar datos de Z-segments en un DTL
- Para referenciar ZEN.1 (número de encuentro) o ZPR.2 (NPI de proveedor), los campos deben estar definidos
- Sin schema personalizado, puedes recibir/reenviar pero no analizar campos de Z-segment
Escenario 5: Posiciones de Segmento No Estándar
- Cuando segmentos personalizados aparecen en posiciones no estándar (ej., entre PID y PV1)
- Necesitas schema personalizado para definir dónde pertenecen estos segmentos
Marco de Decisión
- Usar schemas estándar: Los mensajes se ajustan a la estructura estándar, no necesitas analizar campos personalizados
- Crear schemas personalizados: La estructura se desvía del estándar, o necesitas analizar contenido personalizado
- Recuerda: Los schemas personalizados agregan carga de mantenimiento, así que evítalos cuando sea posible
Referencias de Documentación
2. Categorías de Schema Personalizados y Herencia
Puntos Clave
- Schema Category: Contenedor para definiciones de schema (estándar o personalizado)
- Categorías estándar: 2.3, 2.4, 2.5, 2.5.1, 2.6, 2.7, 2.8
- Nomenclatura de categoría personalizada: Debe ser única, descriptiva
- Herencia: Los schemas personalizados heredan de la versión base HL7
- Beneficio: Mantenimiento mínimo - solo documenta desviaciones
- Asignación de schema: En la configuración Message Schema Category del Business Service
Notas Detalladas
Resumen General
Los schemas personalizados en la implementación HL7 de InterSystems se organizan usando categorías de schema, que proporcionan un poderoso mecanismo de herencia que minimiza el esfuerzo requerido para manejar variaciones específicas del proveedor.
¿Qué es una Schema Category?
Un contenedor para un conjunto completo de definiciones HL7:
- Estructuras de mensajes
- Definiciones de segmentos
- Tipos de datos
- Tablas de códigos
InterSystems IRIS for Health viene con categorías de schema estándar: 2.3, 2.4, 2.5, 2.5.1, 2.6, 2.7 y 2.8.
Nomenclatura de Categoría Personalizada
Buenas convenciones de nomenclatura incluyen la versión base y la fuente de variación:
- "2.5_Epic": Variación personalizada de HL7 2.5 para sistemas Epic
- "2.4_Cerner_Lab": Variación personalizada de HL7 2.4 para interfaces de laboratorio Cerner
- "2.5_LocalHospital": Personalizaciones locales para las necesidades específicas de tu hospital
Modelo de Herencia
El poder de las categorías de schema personalizadas:
- La categoría personalizada "2.5_Epic" hereda de la categoría estándar "2.5"
- Incluye automáticamente todas las estructuras de mensajes HL7 2.5 estándar, segmentos, tipos de datos y tablas
- Solo defines lo que difiere del estándar
- Ejemplo: Si Epic agrega tres campos personalizados a PID e incluye un segmento ZEN, solo defines esas variaciones
Beneficios de Mantenimiento
- Esfuerzo reducido: Solo documenta desviaciones del estándar
- Actualizaciones simplificadas: Al pasar de HL7 2.4 a 2.5, las partes estándar se actualizan automáticamente
- Definiciones de schema mínimas: Todo lo demás viene de la categoría base automáticamente
Asignación de Schema
Las categorías de schema personalizadas se asignan a Business Services a través de la configuración Message Schema Category:
- Cuando el Business Service recibe un mensaje, lo analiza según la categoría de schema especificada
- Afecta tanto la validación (qué es estructura válida) como el análisis (accesibilidad de campos en DTLs)
Alcance de Namespace
- Las categorías de schema tienen alcance de namespace
- El schema personalizado creado en un namespace no está disponible automáticamente en otros
- Necesitas recrear o exportar/importar schemas personalizados en cada namespace según sea necesario
Múltiples Categorías Coexistentes
Múltiples categorías de schema personalizadas pueden coexistir en el mismo namespace:
- "2.5_Epic_Inpatient", "2.5_Epic_Ambulatory", "2.5_Cerner_Lab" - todos en un namespace
- Cada Business Service se asigna a una categoría de schema
- Los mensajes de diferentes fuentes se manejan con las variaciones de schema apropiadas
Jerarquías Multi-Nivel
- La herencia soporta jerarquías multi-nivel (raramente necesario)
- Ejemplo: "2.5_Epic" basado en "2.5", luego "2.5_Epic_Cardiology" basado en "2.5_Epic"
- La mayoría de las organizaciones encuentran suficiente un nivel de personalización
Referencias de Documentación
3. Definiciones de Segmentos Personalizados
Puntos Clave
- Estándar HL7 de Z-segment:
- Posición estándar: Al final del mensaje
- Flexibilidad de schema personalizado: Definir Z-segments en cualquier lugar de la estructura
- Definición de segmento incluye:
- Habilita: Acceso a nivel de campo en DTLs usando notación con puntos (ZEN.1, ZPR.2)
- Sin definición: Puede recibir/reenviar pero no puede analizar campos
Notas Detalladas
Resumen General
Las definiciones de segmentos personalizados son el corazón de los schemas personalizados, permitiéndote documentar y analizar extensiones específicas del proveedor a mensajes HL7. Comprender cómo definir apropiadamente segmentos personalizados es esencial para manejar interfaces HL7 del mundo real.
Reglas de Nomenclatura de Z-Segment
El estándar HL7 explícitamente permite segmentos personalizados:
- Deben tener nombres de tres letras
- La primera letra debe ser "Z"
- Ejemplos comunes: ZEN (encounter), ZPR (provider), ZPV (visit), ZDX (diagnosis), ZIN (insurance)
- El estándar restringe los Z-segments a aparecer al final de los mensajes
Flexibilidad de InterSystems
Dentro de una categoría de schema personalizada:
- Puedes definir Z-segments en cualquier posición en la estructura del mensaje
- No limitado al final del mensaje
- Esencial cuando los sistemas de proveedores colocan segmentos personalizados en posiciones no estándar
- Ejemplo: Algunas implementaciones de Epic incluyen ZPD entre PID y PV1
Definición a Nivel de Campo
Para cada campo en un segmento personalizado, especificas:
- Número de campo: Posición dentro del segmento (1, 2, 3...)
- El campo 0 siempre es el ID del segmento mismo (como "ZEN")
- Los campos definidos por el usuario comienzan en 1
- Nombre de campo: Identificador descriptivo
- Ejemplo: "Encounter Number" o "Provider NPI"
- Se convierte en parte de la ruta de propiedad en código o DTLs
- Tipo de datos: Qué tipo de datos contiene el campo
- Tipos simples: ST (string), NM (numeric), DT (date)
- Tipos complejos: CX (extended composite ID), XPN (extended person name)
- Afecta cómo se analiza el campo y cómo se accede a los subcomponentes
- Longitud: Longitud máxima del campo
- Informativa y usada para validación cuando se habilitan configuraciones más estrictas
- Cardinalidad: Estado requerido/opcional y repetición
- [0..1]: Opcional, sin repetición
- [1..1]: Requerido, sin repetición
- [0..n]: Opcional, puede repetirse
- [1..n]: Requerido, puede repetirse
- Descripción: Documentación sobre el propósito del campo
Acceso a Campos de Segmento Personalizado
Una vez definido en tu schema:
- Acceder a campos en DTLs usando notación con puntos: source.ZEN.1 o target.ZEN.1
- Sin schema personalizado, debes usar métodos genéricos como GetValueAt("ZEN:1")
- Los segmentos personalizados se convierten en ciudadanos de primera clase en tu entorno de integración
Flujo de Trabajo Práctico
1. Recibir mensajes de muestra del proveedor 2. Identificar Z-segments presentes 3. Documentar estructura de campos (de especificaciones del proveedor o ingeniería inversa) 4. Crear categoría de schema personalizada 5. Definir segmentos personalizados con estructuras de campos 6. Referenciar en reglas de enrutamiento, transformar en DTLs, validar
Mantenimiento
- Los sistemas de proveedores evolucionan, agregando campos o cambiando tipos de datos
- Actualizar definiciones de schema personalizadas cuando cambian las implementaciones del proveedor
- Una buena documentación inicial ayuda a los mantenedores futuros
Referencias de Documentación
4. Análisis de Desviaciones de Estructura de Mensaje
Puntos Clave
- Notación de schema:
- Desviaciones comunes:
- Ejemplo de lectura: Estructura ADT_A01 2.4
- Impacto de validación: dm-z detecta desviaciones estructurales, no problemas a nivel de campo
Notas Detalladas
Resumen General
La capacidad de leer definiciones de estructura de schema HL7 e identificar dónde los mensajes reales se desvían de esas definiciones es una habilidad crítica para especialistas en interfaces HL7. Esta habilidad se usa durante el diseño de interfaces, solución de problemas de errores de validación y creación de schemas personalizados.
Convenciones de Notación de Schema
Notación Basada en Texto
- Corchetes cuadrados [PD1]: Segmento opcional - puede estar presente o ausente
- Sin corchetes (MSH, PID): Segmento requerido - debe estar presente
- Llaves {ROL}: Segmento repetible - cero, una o múltiples instancias
- [{NK1}]: Opcional y repetible
Notación Numérica
- [0..1]: Opcional, sin repetición
- [1..1]: Requerido, sin repetición
- [0..n]: Opcional, repetible
- [1..n]: Requerido, repetible
Diagramas Gráficos
- Líneas sólidas: Segmentos requeridos
- Líneas punteadas: Segmentos opcionales
- Paréntesis o marcadores especiales: Segmentos repetibles
Ejemplo: Estructura ADT_A01 (HL7 2.4)
- MSH: Requerido, único (debe aparecer exactamente una vez)
- EVN: Requerido, único (debe aparecer exactamente una vez)
- PID: Requerido, único (debe aparecer exactamente una vez)
- [PD1]: Opcional, único (puede aparecer cero o una vez)
- [{ROL}]: Opcional, repetible (puede aparecer cero o más veces)
- [{NK1}]: Opcional, repetible (puede aparecer cero o más veces)
- PV1: Requerido, único (debe aparecer exactamente una vez)
- [PV2]: Opcional, único (puede aparecer cero o una vez)
Análisis de Desviaciones
- EVN faltante: Desviación - segmento requerido ausente, error de validación dm-z
- Dos segmentos PV1: Desviación - segmento único repetido, error de validación dm-z
- PD1 faltante: NO es una desviación - PD1 es opcional
- Tres segmentos NK1: NO es una desviación - NK1 es repetible
- PV1 antes de PID: Desviación - el orden de segmentos importa
- Z-segments al final: Permitido por validación dm-z
- Z-segments en medio: Marcados como errores
Qué Verifica la Validación dm-z
A nivel de estructura de segmento:
- ¿Están presentes los segmentos requeridos?
- ¿Los segmentos únicos no están repetidos?
- ¿Es correcto el orden de segmentos?
- ¿Hay segmentos no reconocidos (excepto Z-segments al final)?
Qué NO Verifica dm-z
Validaciones a nivel de campo:
- ¿Están presentes los campos requeridos dentro de los segmentos?
- ¿Los valores de campo exceden las longitudes máximas?
- ¿Los valores de campo se ajustan a las tablas de códigos?
- ¿Son correctos los tipos de datos?
Banderas adicionales como "r" (campo requerido) y "l" (longitud) se usan menos comúnmente.
Enfoque de Diseño de Schema Personalizado
- Objetivo: Hacer que el schema coincida con los mensajes reales que recibes
- Si el proveedor envía consistentemente mensajes sin EVN, crear schema personalizado donde EVN sea opcional
- Permite que los mensajes pasen la validación mientras se habilita el análisis apropiado
Habilidad Clave
Dado un ejemplo de mensaje y definición de schema, identifica:
- Qué segmentos faltan que deberían estar presentes
- Qué segmentos están repetidos que deberían ser únicos
- Qué segmentos aparecen que no están en el schema
Referencias de Documentación
5. Asignación de Schema y Análisis de Mensajes
Puntos Clave
- Ubicación de asignación de schema: Configuración "Message Schema Category" del Business Service
- Propósito de la asignación:
- Formato DocType: {SchemaCategory}:{MessageStructure}
- Sin asignación de schema:
- Secuencia de validación:
- Requisito de prueba: Debe especificar DocType al usar Testing Service
Notas Detalladas
Resumen General
La asignación de schema es el mecanismo que conecta tu lógica de procesamiento de mensajes a las definiciones estructurales que habilitan el análisis y la validación. Comprender dónde se asignan los schemas, cómo se usan y qué capacidades habilitan es fundamental para la arquitectura de integración HL7.
Ubicación de Asignación de Schema
Ocurre a nivel de Business Service a través de la configuración "Message Schema Category":
- Especifica qué categoría de schema debe usarse para analizar mensajes entrantes
- Podría ser una categoría estándar como "2.5" o una categoría personalizada como "2.5_Epic"
- Cada mensaje recibido por ese Business Service será analizado según la categoría de schema especificada
Propósitos de Asignación de Schema
1. Habilita Análisis de Mensajes
- El mensaje HL7 sin procesar llega como texto con segmentos separados por retornos de carro y campos por tuberías
- La definición de schema le dice al sistema cómo interpretar esa estructura
- Identifica qué segmento es cuál, cuántos campos tiene cada segmento, qué tipos de datos usan esos campos
- Transforma texto sin procesar en un objeto estructurado con propiedades que pueden accederse por nombre
2. Proporciona Estructura para Validación
- Cuando el mensaje llega a un Business Process con validación habilitada, el motor de validación usa la definición de schema
- Sin asignación de schema, no hay base para la validación
3. Establece DocType
- Formato DocType: "{SchemaCategory}:{MessageStructure}"
- Ejemplo: Business Service con "2.5" recibe ADT_A01, DocType se convierte en "2.5:ADT_A01"
- Usado en toda la production para decisiones de enrutamiento, registro y seguimiento
Sin Asignación de Schema Apropiada
- La validación no puede ocurrir
- Los nombres de campo no pueden usarse en reglas de enrutamiento o DTLs
- Debe usar métodos de acceso de campo genéricos como GetValueAt("PID:3.1")
- Los constraints de reglas de enrutamiento basados en DocType no funcionarán
- Esencialmente trabajando con texto sin analizar en lugar de mensajes HL7 estructurados
Secuencia de Validación
1. Mensaje recibido por Business Service 2. Categoría de schema aplicada inmediatamente para analizar el mensaje 3. Mensaje analizado reenviado al componente destino (típicamente Business Process) 4. Validación ocurre antes de que se ejecuten las reglas de enrutamiento (si está habilitada) 5. Si la validación falla, las reglas de enrutamiento nunca se ejecutan
Consideración de Testing Service
Una fuente común de confusión durante pruebas de interface:
- Testing Service permite enviar manualmente mensajes a componentes
- Al omitir Business Service, debes especificar manualmente DocType en la interfaz de prueba
- Sin especificación de DocType, la validación falla y las reglas de enrutamiento basadas en campos no funcionarán
- Error de prueba más frecuente: copiar contenido del mensaje pero olvidar el campo DocType
Múltiples Asignaciones de Schema
Para productions que manejan múltiples versiones HL7 o variaciones de proveedores:
- Diferentes Business Services con diferentes asignaciones de schema
- Ejemplo: BS_Epic_ADT_TCP usa "2.5_Epic", BS_Cerner_Lab_TCP usa "2.4_Cerner_Lab"
- Cada integración usa el schema apropiado para análisis y validación
Solución de Problemas con Asignación de Schema
- Errores de análisis: Primero verifica la asignación de categoría de schema en Business Service
- Fallos de validación: Verifica que la categoría de schema asignada coincida con la estructura del mensaje real
- Problemas de enrutamiento: Confirma que DocType se está estableciendo correctamente según la asignación de schema
Referencias de Documentación
Resumen de Preparación para el Examen
Conceptos Críticos a Dominar:
- Cuándo NO Requeridos: Segmentos opcionales faltantes, Z-segments al final (dm-z permite), estructura estándar
- Cuándo REQUERIDOS: Segmentos requeridos faltantes, campos extra, posiciones de segmentos personalizados, análisis de campos de Z-segment
- Herencia de Schema: Los schemas personalizados extienden versiones base HL7 (heredan definiciones de estructura)
- Message Schema Category: Debe asignarse al Business Service para asignación de DocType
- Nomenclatura de Z-Segment: Los segmentos personalizados deben comenzar con "Z" según estándar HL7
- Validación vs Análisis: Los schemas personalizados pueden ser necesarios para análisis incluso cuando la validación pasa
Escenarios Comunes de Examen:
- Determinar si se requiere schema personalizado para variaciones de mensaje dadas
- Comprender herencia de schema desde versiones base HL7
- Configurar Message Schema Category en Business Services
- Crear definiciones de Z-segment personalizadas para acceso a nivel de campo
- Solucionar fallos de asignación de DocType
- Distinguir requisitos de validación de requisitos de análisis
Recomendaciones de Práctica Práctica:
- Crear categorías de schema personalizadas extendiendo versiones base HL7
- Definir Z-segments con estructuras de campos apropiadas
- Configurar Business Services con Message Schema Category personalizada
- Probar validación de mensajes con y sin schemas personalizados
- Acceder a campos de Z-segment en transformaciones DTL
- Comparar comportamiento de schema estándar vs personalizado