首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Smooks EDI解析.重复段

Smooks EDI解析.重复段
EN

Stack Overflow用户
提问于 2014-07-28 21:12:00
回答 1查看 1.3K关注 0票数 1

我正在尝试构建一个通用的EDI解析器,它可以处理在给定文件中不存在任何情景段的情况。在XML映射中使用minOccurs="0"属性是非常容易的,但是当多个段重复使用相同的标记时,我很难弄清楚如何处理这个问题。例如:

代码语言:javascript
复制
CAS*PR*1*793~
NM1*QC*1*SHEPHARD*SAM*O***HN*666666666A~    --PatientName
NM1*IL*1*SHEPARD*JESSICA****HN*999887777A~  --InsuredName
MIA*0***138018.4~

使用以下XML映射:

代码语言:javascript
复制
<medi:segment segcode="NM1" xmltag="PatientNameSegment" minOccurs="0" truncatable="true">
    <medi:field xmltag="EntityIdentifierCode" />
    <medi:field xmltag="EntityTypeQualifier" />
    <medi:field xmltag="LastName" />
    <medi:field xmltag="FirstName" />
    <medi:field xmltag="MiddleName" />
    <medi:field xmltag="NamePrefix" />
    <medi:field xmltag="NameSuffix" />
    <medi:field xmltag="IdentificationCodeQualifer" />
    <medi:field xmltag="IdentificationCode" />
</medi:segment>
<medi:segment segcode="NM1" xmltag="InsuredNameSegment" minOccurs="0" truncatable="true">
    <medi:field xmltag="EntityIdentifierCode" />
    <medi:field xmltag="EntityTypeQualifier" />
    <medi:field xmltag="LastName" />
    <medi:field xmltag="FirstName" />
    <medi:field xmltag="MiddleName" />
    <medi:field xmltag="NamePrefix" />
    <medi:field xmltag="NameSuffix" />
    <medi:field xmltag="IdentificationCodeQualifer" />
    <medi:field xmltag="IdentificationCode" />
</medi:segment>

但是,当从输入文件中删除患者姓名的第一行时,它只会将保险名称加载到患者名称中,并跳过加载受保名称,而不是将患者姓名保留为空白。

基本上,我想要的相当于将"NM1*QC“指定为分段代码(实际上将其设置为扼杀解析器)。我看到Smooks文档也允许regex匹配,但是我不确定它是什么比较的,并且还没有幸运地尝试过它。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-28 21:22:36

您需要让解析器限定符(第一个元素中的QCIL )知道。我不知道这是否和如何与您的具体产品,但我很确定这是一个基本的要求正常。5秒的谷歌告诉我,你可以使用segcode="NM1\*IL.*",但我怀疑这是正确的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25004438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档