Blog de divulgación de Ciencia y Tecnología

Reglas de construcción de mensaje HL7 v2 ER7 en Pseudocódigo

/*
    Como Precondición tenemos un array de datos a enviar para construir el mensaje HL7
    y tenemos que los caracteres separadores serán: <cr>, | ^ ~ & \
*/
procedure generar_mensaje (datos) {
    Identificar_tipo_mensaje();
    Identificar_separadores();
    validar (datos);
    ordenar_segmentos (datos, lista_segmentos); 
    foreach segmento in (lista_segmentos) {
        insertar segmento.nombre; /* por ejemplo, el primer segmento será MSH */
        / * Obtener campos del segmento iterando */
        foreach campo in (campos_de(segmento)) {
            insertar separador_campo; /* En nuestro casos seria el pipe '|' */
            /* Iterar repeticiones para campos que admiten repetición, o la única ocurrencia en caso contrario*/
            foreach ocurrencia in (ocurrencias_de(campo)) {
                /* Iterar componentes de la ocurrencia/repeticion */
                foreach componente in (componentes_de(ocurrencia)) {
                    obtener_datos_subcomponente(componente);
                    /* Iterar y obtener  los datos de los subcomponentes */
                    foreach subcomponente in (subcomponentes_de(componente)) {
                        /* escapar los delimitadores de ER7 definidos */
                        reemplazar(separador_campo,'\F\ ');                        
                        reemplazar(separador_componente, '\S\ ');
                        reemplazar(separador_repetición, '\R\ ');
                        reemplazar(caracter_de_escapado, '\E\ ');
                        reemplazar(separador_subcomponente, '\T\ ');
                        reemplazar(caracter_truncado, '\P\ ');
                        insertar subcomponente;
                        if not ultimo(subcomponente) 
                            insertar separador_subcomponente; /* el caracter & */
                    }
                if not ultimo(componente) 
                    insert separador_componente; /* caracter ^ */
                }    
            if not ultimo(ocurrencia)  
                insertar separador_repeticion; /* En este caso sería '~' */
            }
            salir si ultimo(campo);
        }
        insertar terminador_segmento; /* será un <cr>  */
    }
    return;
}



Follow by Email
LinkedIn
Share
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad