Как разобрать NCPDP D.0 с помощью библиотеки smooks? - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу проанализировать транзакцию NCPDP D.0 в XML с помощью библиотеки smooks.

Я новичок в использовании библиотеки smooks и у меня возникают проблемы при попытке настроить поля фиксированной и динамической длины с помощью smooks.

Пример NCPDP D.0

https://docs.informatica.com/big-data-management/big-data-management/10-1/libraries-guide/descriptions-of-the-libraries/ncpdp-library/ncpdp-message-structure.html

Файл конфигурации smooks

<?xml version="1.1" encoding="UTF-8"?>
<smooks-resource-list
        xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
        xmlns:edi="http://www.milyn.org/xsd/smooks/edi-1.4.xsd">

    <edi:reader mappingModel="ncpdp-to-xml-order-mapping.xml"/>

</smooks-resource-list>

ncpdp-to-xml-order-mapping.xml

<?xml version="1.1" encoding="UTF-8"?>
<medi:edimap xmlns:medi="http://www.milyn.org/schema/edi-message-mapping-1.2.xsd">

    <medi:description name="Parse NCPDP to XML" version="1.0" />

    <medi:delimiters segment="0x1E" field="0x1C" component="0x1D"
                     sub-component="~" />
    <medi:segments xmltag="Segments">
        <medi:segment segcode="00" xmltag="Header" truncatable="true">
            <medi:field xmltag="Bin"/>
            <medi:field xmltag="Version" />
            <medi:field xmltag="TransactionCode" />
            <medi:field xmltag="ProcessControlNumber" />
            <medi:field xmltag="ServiceProviderIdQualifier" />
            <medi:field xmltag="ServiceProviderId" />
            <medi:field xmltag="DateOfService" />
            <medi:field xmltag="Software" />
        </medi:segment>

        <medi:segment segcode="01" xmltag="PatientInformation" truncatable="true">
            <medi:field xmltag="FirstName"/>
            <medi:field xmltag="LastName" />
            <medi:field xmltag="StreetAddress" />
            <medi:field xmltag="City" />
            <medi:field xmltag="State" />
            <medi:field xmltag="Zipcode" />
            <medi:field xmltag="PhoneNumber" />
        </medi:segment>
        <medi:segment segcode="07" xmltag="ClaimInformation" truncatable="true">
            <medi:field xmltag="PrescriptionReferenceNumberQualifier"/>
            <medi:field xmltag="PrescriptionReferenceNumber"/>
            <medi:field xmltag="ProductServiceIdQualifier"/>
            <medi:field xmltag="ProductServiceId"/>
            <medi:field xmltag="QuantityDispensed"/>
            <medi:field xmltag="FillNumber"/>
            <medi:field xmltag="DaySupply"/>
            <medi:field xmltag="CompoundCode"/>
            <medi:field xmltag="DispenseAsWrittenProductSelectionCode"/>
            <medi:field xmltag="DatePrescriptionWritten"/>
            <medi:field xmltag="NumberOfRefillsAuthorized"/>
            <medi:field xmltag="PrescriptionOriginCode"/>
            <medi:field xmltag="UnitOfMeasure"/>
            <medi:field xmltag="LevelOfService"/>
            <medi:field xmltag="PatientAssignmentIndicator"/>
            <medi:field xmltag="PharmacyServiceType"/>
        </medi:segment>
        <medi:segment segcode="11" xmltag="PricingInformation" truncatable="true">
            <medi:field xmltag="IngredientCostSubmitted"/>
            <medi:field xmltag="DispensingFeeSubmitted"/>
            <medi:field xmltag="PatientPaidAmountSubmitted"/>
            <medi:field xmltag="PercentageSalesTaxRateSubmitted"/>
            <medi:field xmltag="UsualAndCustomaryCharge"/>
            <medi:field xmltag="GrossAmountDue"/>
            <medi:field xmltag="BasisOfCostDetermination"/>
        </medi:segment>
    </medi:segments>
</medi:edimap>

Библиотека Smooks должна иметь возможность анализировать утверждение NCPDP D.0 и преобразовывать его в XML.

Раздел заголовка в файле ncpdp-to-xml-order-mapping.xml имеет фиксированную длину,не знаете, как настроить smooks для анализа заголовка фиксированной длины.

Вот словарь для строки фиксированной длины.https://snag.gy/IgbxpW.jpg

Спасибо за вашу помощь.

...