Forum

Dichosos repeating ...
 
Notifications
Clear all

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!

[Solved] Dichosos repeating fields... ayuda!! [SOLUCIONADO]

7 Posts
2 Users
0 Reactions
2,098 Views
(@caseystoner)
Eminent Member
Joined: 13 years ago
Posts: 31
Topic starter   [#23]

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



   
Nikkator
(@nsoria)
Trusted Member
Joined: 11 years ago
Posts: 69
 

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...

 



   
(@caseystoner)
Eminent Member
Joined: 13 years ago
Posts: 31
Topic starter  

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



   
Nikkator
(@nsoria)
Trusted Member
Joined: 11 years ago
Posts: 69
 

¿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…



   
(@caseystoner)
Eminent Member
Joined: 13 years ago
Posts: 31
Topic starter  

Hola,
el problema es que "~" es un caracter reservado, y me lo escupe, me dice "illegal character".



   
(@caseystoner)
Eminent Member
Joined: 13 years ago
Posts: 31
Topic starter  

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...



   
Nikkator
(@nsoria)
Trusted Member
Joined: 11 years ago
Posts: 69
 

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...

 



   
Share:
Scroll to Top