From: <rsa...@fs...> - 2014-11-11 16:04:46
|
Hi, I have received the next ORU^R01 message: MSH|^~\&|MG|MG|LAB|LAB|20100127101236+0100||ORU^R01^ORU_R01|1234567890|P|2.5 PID|... PV1|... ORC|... OBR|1|OP2|10101010|HEM^Hemograma^SISTEMA1|... OBX|1|NM|HTIE^Hematíes^SISTEMA1||7.00|x10*6/uL|4.5 - 5.9|HH|||F|||20100127095652 OBX|2|NM|HGB^Hemoglobina^SISTEMA1||567567.0|g/dL|13.0 - 17.5|HH|||F|||20100127095652 OBX|3|NM|HTCO^Hematocrito^SISTEMA1||77.0|%|37.0 - 53.0|HH|||F|||20100127095728 OBX|4|NM|VCM^VCM^SISTEMA1||67.0|fl|80.0 - 100.0|LL|||F|||20100127095728 SPM|1|9018000088||^SANGRE PERIFERICA||||||||||||||20100127095625||Y||||||1 In this message, the OBR Segment contains a Battery (HEM) and the tests have been added in OBX Segments. In this case, the HEM Battery contains 4 tests (HTIE, HGB, HTCO and VCM). I would like to know if this message is a Standard HL7 Message. At the moment, I have only received tests in ORU^R01 messages. In the next ORU^R01 message, I have received a test (CLC00500) with two results (OBX.1 and OBX.2 segments): MSH|^~\&|MG|MG|FSM|FSM|20141105132023+0100||ORU^R01^ORU_R01|LAB31415190023385|P|2.5 PID|... PV1|... ORC|... OBR|1|PA5999171|20000002|CLC00500^Pla--Glucosa; c.sust.(proc.)^SISTEMA1||||||CE||||||00010258960^ape1 ape2, nombre||||5||||LAB|F|||||||admin^20141105132022+0100 OBX|1|NM|CLC00500^Pla--Glucosa; c.sust.(proc.)^SISTEMA1||65|mg/dL||HH|||F|||20141105132022||admin|||20141105132022 OBX|2|ST|CLC00500^Pla--Glucosa; c.sust.(proc.)^SISTEMA1|1|POSITIVO|||||||||20141105132022||admin SPM|1|0120000002||3^Suero||||||||||||||20141105132010||Y||||||1 How could I to know when the OBR Segment contains a Battery or a test? My first idea is the next: if OBR.4.1 = OBX.3.1, then the OBR Segment contains a Test, else OBR Segment contains a Battery. But this is a bad solution :( Help me! Best Regards. Rafael. Rafael San Vidal Hidalgo - Dpto. Sistemas de Diagnóstico Tlf.: 914702104 (ext.158) - Fax: 915261867 rsa...@fs... - www.f-soria.es AVISO DE CONFIDENCIALIDAD La información contenida en este mensaje y archivos adjuntos es privada, confidencial y de uso exclusivo de la(s) persona(s) y entidad(es) a la(s) que va dirigido. Si Ud. no es el destinatario de esta información se le notifica que está expresamente prohibida la declaración, reproducción, distribución o la toma de cualquier acción basada en el contenido de esta comunicación. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente y proceda a eliminarlo de todos sus sistemas. Francisco Soria Melguizo, S.A. no asume responsabilidad legal por el contenido de esta comunicación, ni representa la opinión de la firma, salvo que expresamente se especifique lo contrario y que el remitente esté autorizado para hacerlo. Gracias. De: Rafael San Vidal Hidalgo/GSORIA Para: Ian Vowles <Ian...@he...> cc: "hl7...@li..." <hl7...@li...> Fecha: 08/05/2014 09:36 Asunto: RE: [HAPI-devel] Parse only Segment MSH Thank you, Ian I will develope your two options. In the first option (using parser method with the first segment only), How do I get the first segment in XML Format? I would try to get the first segment looking for the </MSH> value. I will try the preparser option too, proposed by our partner James Agner. Best regards. Rafael San Vidal. Rafael San Vidal Hidalgo - Dpto. Sistemas de Diagnóstico Tlf.: 914702104 (ext.158) - Fax: 915261867 rsa...@fs... - www.f-soria.es AVISO DE CONFIDENCIALIDAD La información contenida en este mensaje y archivos adjuntos es privada, confidencial y de uso exclusivo de la(s) persona(s) y entidad(es) a la(s) que va dirigido. Si Ud. no es el destinatario de esta información se le notifica que está expresamente prohibida la declaración, reproducción, distribución o la toma de cualquier acción basada en el contenido de esta comunicación. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente y proceda a eliminarlo de todos sus sistemas. Francisco Soria Melguizo, S.A. no asume responsabilidad legal por el contenido de esta comunicación, ni representa la opinión de la firma, salvo que expresamente se especifique lo contrario y que el remitente esté autorizado para hacerlo. Gracias. RE: [HAPI-devel] Parse only Segment MSH Ian Vowles para: rsa...@fs..., hl7...@li... Enviado: 08/05/2014 00:11 Recibido: 08/05/2014 09:10 Our team often finds itself wanting to deal with individual segments. Segment constructors still require something to base themselves on, so you seem to be required to do something like this: private static ADT_A01 parent; . . . parent = new ADT_A01(); parent.initQuickstart("ADT", "A01", "P"); String message = "MSH|^~\\&|SENDING-APP|SENDING-FAC|RECEIVING-APP|RECEIVING-FAC|20140508111155|SECURITY|ADT^A08|MESSAGE-CONTROL-ID|P|2.4|||AL|AL|AUS|ASCII|ENG|\r" + "MORE SEGMENTS GO HERE IN A REAL MESSAGE\r"; System.out.println("Message Control Id = " + getUID(message)); . . . /** * Get MessageControlID * @param mensaje * @return MessageControlID */ public static String getUID(String mensaje) { try { MSH msh = new MSH(parent,parent.getModelClassFactory()); if (mensaje.indexOf("\r") > 0) { msh.parse(mensaje.substring(0, mensaje.indexOf("\r"))); } return msh.getMessageControlID().getValue(); } catch (HL7Exception e) {} return null; } If anyone can show a simpler way to create a segment from scratch, that would be most helpful. To just get amongst the MSH you could go for all string manipulation, but you have to worry about the standard. You could do something like this: /** * Get MessageControlID * @param mensaje * @return MessageControlID */ public static String getUIDNoHapi(String mensaje) { if (mensaje != null && mensaje.length() > 4 && mensaje.startsWith("MSH") && mensaje.indexOf("\r") > 0) { String msh = mensaje.substring(0, mensaje.indexOf("\r")); String fieldDel = mshsubstring(3, 4); if ("|".equals(fieldDel)) { fieldDel = "\\|"; } String[] mshFields = msh.split(fieldDel); return mshFields[9]; } return null; } There are traps in this code if people start using non standard delimiters or send you very bad content. The HAPI library is a much better to help you avoid such trouble. Thanks Ian From: rsa...@fs... [mailto:rsa...@fs...] Sent: Wednesday, 7 May 2014 6:22 PM To: Ian Vowles; hl7...@li... Subject: [HAPI-devel] Parse only Segment MSH Hi, In our source code, we parse the full message (from string data) to get the MessageControlID value. How can I get the MessageControlID value without parsing the full message (Example: parsing only the MSH Segment)? Note: I attach the "getUID" method to get this value. Best regards. Rafael. import ca.uhn.hl7v2.model.Message; import ca.uhn.hl7v2.model.v25.segment.MSH; /** * Get MessageControlID * @param mensaje * @return MessageControlID */ public static String getUID(String mensaje) { try { Parser parseador = new GenericParser(); parseador.setValidationContext(new NoValidation()) ; Message mensajeHAPI = parseador.parse(mensaje); MSH segmentoHAPI_MSH = (MSH) mensajeHAPI.get(Parametros.MSH); return segmentoHAPI_MSH.getMessageControlID().getValue(); } catch (Exception e) {} return null; } Rafael San Vidal Hidalgo - Dpto. Sistemas de Diagnóstico Tlf.: 914702104 (ext.158) - Fax: 915261867 rsa...@fs... - www.f-soria.es AVISO DE CONFIDENCIALIDAD La información contenida en este mensaje y archivos adjuntos es privada, confidencial y de uso exclusivo de la(s) persona(s) y entidad(es) a la(s) que va dirigido. Si Ud. no es el destinatario de esta información se le notifica que está expresamente prohibida la declaración, reproducción, distribución o la toma de cualquier acción basada en el contenido de esta comunicación. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente y proceda a eliminarlo de todos sus sistemas. Francisco Soria Melguizo, S.A. no asume responsabilidad legal por el contenido de esta comunicación, ni representa la opinión de la firma, salvo que expresamente se especifique lo contrario y que el remitente esté autorizado para hacerlo. Gracias. ******************************************************************************** This email, including any attachments sent with it, is confidential and for the sole use of the intended recipient(s). This confidentiality is not waived or lost, if you receive it and you are not the intended recipient(s), or if it is transmitted/received in error. Any unauthorised use, alteration, disclosure, distribution or review of this email is strictly prohibited. The information contained in this email, including any attachment sent with it, may be subject to a statutory duty of confidentiality if it relates to health service matters. If you are not the intended recipient(s), or if you have received this email in error, you are asked to immediately notify the sender by telephone collect on Australia +61 1800 198 175 or by return email. You should also delete this email, and any copies, from your computer system network and destroy any hard copies produced. If not an intended recipient of this email, you must not copy, distribute or take any action(s) that relies on it; any form of disclosure, modification, distribution and/or publication of this email is also prohibited. Although Queensland Health takes all reasonable steps to ensure this email does not contain malicious software, Queensland Health does not accept responsibility for the consequences if any person's computer inadvertently suffers any disruption to services, loss of information, harm or is infected with a virus, other malicious computer programme or code that may occur as a consequence of receiving this email. Unless stated otherwise, this email represents only the views of the sender and not the views of the Queensland Government. ********************************************************************************** |