El foro de caduceus.es ha sido migrado a meditecs.com. Descubre más sobre el cambio en este post.
🇬🇧 English speaker? Go to Meditecs forums in English!
Hola, buenas a todos
Tengo un problema, necesito transformar un mensaje para que quede tal que asi:
PID|1||111111^^^KANA^^SIP~222222^^^CENTRO^^NHC~111111aaaaaa^^^KANA^^TIS| |apellido1 apellido2^Nombre||aaaammdd|F/M||
Estoy empezando por el SIP, que ya tengo mapeado a la variable SIP=73382
El problema es que cuando asigno la variable al campo
tmp['PID']['PID.3'][0]['PID.3.6']
el resultado que tengo es este:
PID|1||^^^KANA^^73382~^^^CENTRO^^NH
Cuando yo necesitaria
PID|1||^^^KANA^^SIP~73382^^^CENTRO^^NH
Me ha parecido leer que hay un problema con el parsing de los repeating fields, pero no estoy muy seguro.
¿alguien con el mismo problema?
Un saludo
Hola pablo,
no estoy seguro de lo que quieres decir, te refieres a que el error se produce ¿al leer el SIP o al escribir el SIP?. Según el problema que tengas creo que podría solucionarse de una forma u otra.
Para leer el campo completo SIP, incluyendo la palabra clave y el valor, debes deselccionar la casilla Parse field repetitions de las opciones Set Data Types de la pestaña Summary dentro del canal. De esta forma al mapear la variable SIP cogerás todo el campo, y puedes usar ese mapeo para construir el mensaje en los transformadores del Source.
Luego dependiendo de lo que quieras escribir en el mensaje resultante puedes hacer un split al campo msg['PID']['PID.3'][0]['PID.3.6'].toString() usando como carater '~' para quedarte sólo con el valor y en el contructor del mensaje puedes incluir de forma fija el nombre del campo 'SIP':
var sip = msg['PID']['PID.3'][0]['PID.3.6'].toString();
var sip_value = sip.split('~');
tmp['PID']['PID.3'][0]['PID.3.6'] = sip_value; // guardará sólo el valor
tmp['PID']['PID.3'][0]['PID.3.6'] = sip; // guardará el nombre del campo y el valor (creo que así es como lo quieres)
Un cosa importante es que para que todo esto funcione, tu template de salida sólo debe tener un valor en el campo del SIP, tal que así:
PID|1||111111^^^KANA^^SIP^^^CENTRO^^NHC~1111...
Hola Niko
Muchas gracias por contestar!
Lo que quiero es escribir, leer lo hago desde otro formato.
mi salida quiero que sea asi:
PID|1||111111^^^KANA^^SIP~mi variable^^^CENTRO^^NHC~1111…
¿Porque usar el split para la salida?
Un saludo y muchas gracias
¿y si pones la cadena "SIP~" como un valor fijo y concatenas la variable con el valor del campo?
tmp['PID']['PID.3'][0]['PID.3.6'] = "SIP~" + tu_variable;
Recuerda que en el template de salida debes poner el componente con un único valor, es decir, sin repeticiones (ya que la repetición la agregas manualmente).
PID|1||111111^^^KANA^^SIP^^^CENTRO^^NHC~1111…
Hola,
el problema es que "~" es un caracter reservado, y me lo escupe, me dice "illegal character".
Ya lo tengo solucionado!
hay que desmarcar "parse field repetitions" y entonces si que deja meter la variable "a capón".
Así me ha quedado al final
tmp[‘PID’][‘PID.3’][0][‘PID.3.6’]="SIP"+"~"+$('SIP')
Muchas gracias Nikkator por llevarme al camino correcto...
De nada, precisamente eso era lo que quería decir en la primera respuesta:
...debes deselccionar la casilla Parse field repetitions de las opciones Set Data Types de la pestaña Summary dentro del canal...
