Thanks a lot Christian, really appreciated.
From: Christian Ohr [mailto:christian....@gmail.com]
Sent: Monday, November 16, 2015 8:23 AM
To: Davies, Brian
Cc: hl7api-devel@lists.sourceforge.net
Subject: Re: [HAPI-devel] ClassCastException when casting down
In your case, nothing tells HAPI to instantiate a "PFM" message when it comes
across a message with MFN^M01 in the MSH-9 field.
This is the task of the so-called event map. It's a file located in the
ca.uhn.hl7v2.parser.eventmap package and called <version>.properties (i.e. in
your case "2.5.properties").
The file contains two columns: col 1 specifies the message structure and col 2
specifies the custom class that implements this structure. If there is no
match, it falls back to the standard event map, instantiating a instance of
ca.uhn.hl7v2.model.v25.message.MFN_M01, which gives you the ClassCastException.
Check the existing HAPI structure libraries for these eventmap files.
So you have two choices
* rename the class com.msh.bgapp.hl7.custommodel.v25.message.PFM class to
MFN_M01. You don't need an custom eventmap then.
* add an event map file to your project that explicitly maps MFN_M01 to PFM
I usually choose option 1 as it keeps the naming convention and also indicates
in the class name what is replaced.
Also note that you do not necessarily have to extend from the original message
structure class.
cheers
Christian
2015-10-26 20:08 GMT+01:00 Davies, Brian
<brian.dav...@mckesson.com<mailto:brian.dav...@mckesson.com>>:
Related to the previous issue, I get an exception when casting down to my
object which extends the MFN_M01 message. I am extending MFN_M01 because this
is specified in the message type field, so I’m unable to avoid it. I am using
the v25 libraries and JDK1.7
Exception in thread "main" java.lang.ClassCastException:
ca.uhn.hl7v2.model.v25.message.MFN_M01 cannot be cast to
com.msh.bgapp.hl7.custommodel.v25.message.PFM
at com.msh.bgapp.hl7.custommodel.v25.message.PFM.main(PFM.java:106)
String HDR="MSH|^~\\&|DSF||Vendor||20150926151426||MFN^M01|610-100672|P|2.5\r"
public class PFM extends MFN_M01 {
private static final long serialVersionUID = -6182782287494872212L;
public PFM(ModelClassFactory theFactory) {
super(theFactory);
init(theFactory);
}
private void init(ModelClassFactory factory) {
try {
this.add(MSH.class, true, false);
this.add(MFI.class, false, false);
this.add(MFE.class, false, false);
} catch(HL7Exception e) {
log.error("Unexpected error creating PFM ,e);
}
}
public MSH getMSH() {
return getTyped("MSH", MSH.class);
}
public ZRQ getZRQ() {
return (ZRQ)getTyped("ZRQ", ZRQ.class);
}
public String getVersion() {
return "2.5";
}
public static void main(String[] args) throws DataTypeException,
HL7Exception, IOException {
String
HDR="MSH|^~\\&|DSF||Vendor||20150926151426||MFN^M01|610-100672|P|2.5\r"
+"MFI|ZBM||UPD|20150917172522|20150917172522|AL\r"
+"MFE|MAD|610-100672|20150917172522|610-100672|CE\r"
ModelClassFactory cmf = new
CustomModelClassFactory("com.msh.bgapp.hl7.custommodel");
@SuppressWarnings("resource")
HapiContext context=new DefaultHapiContext(cmf);
Parser parser = context.getPipeParser();
PFM o=(PFM)parser.parse(HDR);
}
}
------------------------------------------------------------------------------
_______________________________________________
Hl7api-devel mailing list
Hl7api-devel@lists.sourceforge.net<mailto:Hl7api-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/hl7api-devel
------------------------------------------------------------------------------
Presto, an open source distributed SQL query engine for big data, initially
developed by Facebook, enables you to easily query your data on Hadoop in a
more interactive manner. Teradata is also now providing full enterprise
support for Presto. Download a free open source copy now.
http://pubads.g.doubleclick.net/gampad/clk?id=250295911&iu=/4140
_______________________________________________
Hl7api-devel mailing list
Hl7api-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hl7api-devel