在WebLogic 12.1.2上使用DecimalType解析Fhir中的错误

时间:2016-09-30 20:59:31

标签: java weblogic hl7-fhir

我有下列药物订单

<MedicationOrder xmlns="http://hl7.org/fhir">
<id value="medicationOrder-0"/>
<identifier>
    <value value="843c3f2a-2704-11e5-b345-feff819cdc9f"/>
</identifier>
<dateWritten value="2015-03-09"/>
<status value="active"/>
<dateEnded value="2015-04-09"/>
<reasonCodeableConcept>
     <coding>
        <system value="http://hl7.org.co/fhir/vs/cie-10"/>
        <code value="D300"/>
        <display value="Malignant Tumor Internal the upper quadrant of the breast"/>
    </coding>
</reasonCodeableConcept>
<medicationCodeableConcept>
    <coding id="cum">
        <system value="http://hl7.org.co/fhir/vs/cum"/>
        <code value="16135"/>
        <display value="ACETAMINOFEN 2/350 MG/MG"/>
    </coding>
</medicationCodeableConcept>
<dosageInstruction>
    <timing>
        <repeat>
            <boundsPeriod>
                <start value="2015-03-09"/>
                <end value="2015-04-09"/>
            </boundsPeriod>
            <period value="8"/>
            <periodUnits value="d"/>
        </repeat>
    </timing>
</dosageInstruction></MedicationOrder>

我在Windows上解析以前的资源,我没有问题,但我尝试在WebLogoc 12.1.2.0上进行解析,显示以下内容:

java.lang.NullPointerException
at java.math.BigDecimal.<init>(BigDecimal.java:739)
at org.hl7.fhir.instance.model.DecimalType.<init>(DecimalType.java:83)
at org.hl7.fhir.instance.formats.XmlParser.parseDecimal(XmlParser.java:343)
at org.hl7.fhir.instance.formats.XmlParser.parseTimingTimingRepeatComponent(XmlParser.java:979)
at org.hl7.fhir.instance.formats.XmlParser.parseTiming(XmlParser.java:946)
at org.hl7.fhir.instance.formats.XmlParser.parseMedicationOrderMedicationOrderDosageInstructionComponent(XmlParser.java:6599)
at org.hl7.fhir.instance.formats.XmlParser.parseMedicationOrder(XmlParser.java:6572)
at org.hl7.fhir.instance.formats.XmlParser.parseResource(XmlParser.java:10125)
at org.hl7.fhir.instance.formats.XmlParserBase.parseResourceContained(XmlParserBase.java:294)
at org.hl7.fhir.instance.formats.XmlParser.parseDomainResourceContent(XmlParser.java:1212)
at org.hl7.fhir.instance.formats.XmlParser.parseComposition(XmlParser.java:2955)
at org.hl7.fhir.instance.formats.XmlParser.parseResource(XmlParser.java:10045)
at org.hl7.fhir.instance.formats.XmlParserBase.parse(XmlParserBase.java:94)
at org.hl7.fhir.instance.formats.XmlParserBase.parse(XmlParserBase.java:82)
at org.hl7.fhir.instance.formats.ParserBase.parse(ParserBase.java:56)
at org.hl7.fhir.instance.formats.ParserBase.parse(ParserBase.java:51)

在标签期间,值为8,我不知道reazon这会生成null。

Java源代码如下:

@POST
@Consumes(MediaType.APPLICATION_XML)
public Response createMedicationOrder(String message) {
    MedicationOrder medicationOrder;
    try {
        XmlParser xmlParser = new XmlParser();
        medicationOrder = (MedicationOrder) xmlParser.parse(message); // Generate the error
    } catch (Exception e) {
        return Response.status(Status.NOT_ACCEPTABLE.ordinal()).entity(messageError).build();
    }
    Response res = createExternalOrder(medicationOrder);
    return res; 

}

WebLogic 12.1.1.0中不会出现此问题,无法对其进行此操作,因为库中显示的堆栈跟踪并未说明问题。

更多信息:

Laguaje:Java 6 WebLogic:12.1.2.0 ApiFhir:fhir-dstu2-1.0.1.7108.jar

2 个答案:

答案 0 :(得分:0)

是否可以选择HAPI的Parser作为选项?您可能有理由不这样做,但如果它是一个选项,您将能够使用相同的数据模型与经过实战考验的解析器。

答案 1 :(得分:0)

问题是类加载器,解决方案是在weblogic.xml中设置标签wls:prefer-web-inf-classes = true并将库放在web-inf / lib上。