【发布时间】:2014-10-28 15:18:25
【问题描述】:
当尝试使用 ca.uhn.hl7v2.util.Terser 在 ca.uhn.hl7v2.model.Message 的给定特定子类上设置空字段时(在本例中为 ca.uhn.hl7v2.model.v251.message .ORU_R01),我在 .each{} 关闭期间没有收到任何错误消息,之后消息对象没有填充任何字段。
hl7Map 在类实例化时填充,其值如下: def hl7Map= [ "HL7MessageFields":['PID-3-1':"内部订单映射键", 'PID-3-4':"internal order map key"等]]
代码如下:
def buildHL7Message(order){
def date = new Date()
def format = new SimpleDateFormat(hl7Map["dateFormat"]).format(date)
//Set date on the Message Header Object
hl7Map["MSH"]["-7"]= format
def message = (context.getModelClassFactory().getMessageClass(hl7Map["MessageInstantiationMap"]["messageType"],
hl7Map["MessageInstantiationMap"]["version"],
true) as Class).newInstance()
Terser terser = new Terser(message)
hl7Map["HL7MessageFields"].each{
terser.set(it.key, order[it.value])
}
println message
return message
}
方法结束导致没有输出和记录有关编码的错误,MSH-1 是必填字段,管道分隔符但为空。如果上面的代码使用 message.initQuickstart("ORU", "R01", "T"),则只会填充默认的 initQuickstart 字段。
如果 hl7Map["HL7MessageFields"] 包含一个不是有效的 Group/Segment 字段的“it.key”,则 terser 会记录一个错误,表明它未能找到该值,上面的代码具有正确格式的映射确实不会导致错误。
谁能帮助解释为什么我没有收到错误但我的消息是空的,并帮助我用适当的 terser.set(params) 填充消息?
【问题讨论】: