Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用一致性配置文件XML进行HL7 ADT消息验证_Java_Validation_Hl7 V2 - Fatal编程技术网

Java 使用一致性配置文件XML进行HL7 ADT消息验证

Java 使用一致性配置文件XML进行HL7 ADT消息验证,java,validation,hl7-v2,Java,Validation,Hl7 V2,需要根据同一版本的一致性XML配置文件验证HL7 V2 ADT_A01版本3消息 我有一个Java程序,它根据XML验证消息,但是我得到了一些错误。如果不解决这些问题,我就不能继续前进 publicstaticvoidmain(字符串[]args)引发异常{ 试一试{ //加载一致性概要文件 ProfileParser ourProfileParser=新的ProfileParser(false); RuntimeProfile ourConformanceProfile=ourProfileP

需要根据同一版本的一致性XML配置文件验证HL7 V2 ADT_A01版本3消息

我有一个Java程序,它根据XML验证消息,但是我得到了一些错误。如果不解决这些问题,我就不能继续前进

publicstaticvoidmain(字符串[]args)引发异常{
试一试{
//加载一致性概要文件
ProfileParser ourProfileParser=新的ProfileParser(false);
RuntimeProfile ourConformanceProfile=ourProfileParser。
parseClasspath(“A01_v23.xml”);
//从文件中读取测试不符合HL7。有关此文件,请参阅my GitHub页面
String message=readHl7FileDataAsString(“C:\\Jai\\ADT\\ADT\u A01\u v2.5\u一致性\u XML\\A01\u v23.txt”);
PipeParser=新的PipeParser();
System.out.println(“解析器配置”+parser.getParserConfiguration().toString());
//从文件数据解析HL7消息
Message msg=parser.parse(消息);
//使用我提供的示例HL7一致性概要文件验证HL7消息。有关XML文件,请参阅我的GitHub页面
HL7Exception[]errors=newDefaultValidator().validate(msg,ourConformanceProfile.getMessage());
//显示生成的所有验证错误。
System.out.println(“在消息验证期间发现以下验证错误:”);
对于(HL7Exception HL7Exception:错误){
System.out.println(HL7异常);
}
}捕获(例外e){
e、 printStackTrace();
}
}
输入信息为:

MSH|^~\&|NSI^UID^D|A^B^C|RID^UID^h|hm|201907071123||ADT^A01^ADT_A01|MSGA01023|P|2.3
EVN|A01|201907071153|201908081153|02|11|20190708105155
PID|||HO2^^^A^MR||Ada^Pal^Kin^Jr^Mr||196101011153|M|Aam^Pau^Kin^Jr^Mr^MA^Ali^AL|Bl|St^^Blr^Ka^56^Ind^Off|91|^Off^Ph^^91^80^123^567^PHo|^91^Ph^d^91^^080^767^P1|Eng^Hin|M|Hin|124|SSN503|DL3|I|For|Bir|Y|2|C||91|201801012022|Y
PV1||I|6N^01^B23^ICU||||010^ATT^AON^A|018^ATT^AAR^A|||||||||014^END^RON^A|S|100|A|||||||||||||||||ISH^200701102300||GL|||||201907071153|201907080500
控制台输出:

The following validation errors were found during message validation:
ca.uhn.hl7v2.conf.check.ProfileNotFollowedException: The type Field Separator has length 3 which exceeds max of 1 at MSH-1(0)
ca.uhn.hl7v2.conf.check.ProfileNotFollowedException: The type Encoding Characters has length 12 which exceeds max of 4 at MSH-2(0)
ca.uhn.hl7v2.conf.check.ProfileNotFollowedException: The type Message Type has length 15 which exceeds max of 9 at MSH-9(0)

您可以使用HAPI执行两个级别的验证

第一种方法是将ER7格式的消息序列化到HAPI对象中,该对象允许验证所需的字段和数据类型。因此,上面的示例应该无法说明HL7v2.3中的MSH.9没有第三个组件

第二类验证基于HL7v2概要文件。为了使此部分成功,您需要通过约束消息模型(删除未使用的段、标记不支持未使用的可选字段、强化使用和重复等)来构建这样的概要文件。但是,我发现概要文件验证并不总是一致地工作,可能是因为嵌套的段组


我建议先从第一个开始,然后再转到配置文件验证。

您可以使用HAPI执行两个级别的验证

第一种方法是将ER7格式的消息序列化到HAPI对象中,该对象允许验证所需的字段和数据类型。因此,上面的示例应该无法说明HL7v2.3中的MSH.9没有第三个组件

第二类验证基于HL7v2概要文件。为了使此部分成功,您需要通过约束消息模型(删除未使用的段、标记不支持未使用的可选字段、强化使用和重复等)来构建这样的概要文件。但是,我发现概要文件验证并不总是一致地工作,可能是因为嵌套的段组


我建议从第一个开始,然后继续进行概要文件验证。

我们尝试使用message workbench构建一个验证概要文件,根据规范验证传入的消息。它似乎更复杂,我们的工作范围是使用很少的段


因此,我们提出了自己的验证配置文件,并编写了一个自定义算法来验证消息。它验证段、组件、子组件、数据类型,长度等。它对我们很有效。

我们尝试使用message workbench构建一个验证配置文件,根据规范验证传入的消息。它似乎更复杂,我们的工作范围是使用很少的段


因此,我们提出了自己的验证配置文件,并编写了一个自定义算法来验证消息。它可以验证段、组件、子组件、数据类型、长度等。这对我们来说很好。

有人能帮忙吗?您使用什么来生成配置文件?您的配置文件似乎格式不正确,例如,字段分隔符定义为-,为什么在您的情况下长度为“3”?一旦您修复了配置文件,以下错误将随给定的示例消息返回:|警告:PID.13[电话号码-主页]-捕获的值比指定的数据类型(TN)更复杂意外数据将被忽略|警告:PID.14[电话号码-业务]-捕获的值比指定的数据类型(TN)更复杂-意外数据将被忽略|警告:MSH.9.2[消息类型.触发事件]-9.3未计算。9.2之外的数据元素将被忽略|错误:PV1.20.1[Financial Class.Financial Class]-代码值(A)不是表0064 Financial Class ``的元素``我的xml包含以下内容:DynamicDef acack=“NE”AppAck=“AL”MsgAckMode=“Deferred”/>11.6.1它应该以定义您的配置文件开始。我建议重新生成配置文件。有人能帮忙吗?你用什么来生成配置文件?您的配置文件似乎格式不正确,例如,字段分隔符定义为-,为什么在您的情况下长度为“3”?一旦您修复了配置文件,以下错误将随给定的示例消息返回:|警告:PID.13[电话号码-主页]-捕获的值比指定的数据类型(TN)更复杂意外数据将被忽略|警告:PID.14[电话号码-业务]-捕获的值比指定的数据类型(TN)更复杂-意外数据将被忽略|警告:MSH.9.2[消息类型.触发事件]-9.3未计算。9.2之外的数据元素将被忽略|错误:PV1.20.1[Financial Class.Financial Class]-代码值(A)不是表0064 Financial Class ``的元素``我的xml包含以下内容:DynamicDef acack=“NE”AppAck=“AL”MsgAckMode=“Deferred”/>11.6.1它应该以定义您的配置文件开始。我建议重新任命教授