用正则表达式解析 hl7

parse hl7 with regex

我收到以下 hl7 消息: MSH|^~\&|EPIC|SMHRMC|JCAPS|QHN|20170626165726|EDILABIH|ORU^R01^LAB|00004841|P|2.3||||||||| PID|1||W00xxxxx^^^SMHRMC||mouse^Mickey^E||19860905|F||1|2601 somestreet AVE NO 8^^City^ST^zip^USA^^^county|MESA|(970)xxx-xxxx^P^PH|||Single||175375903|xxxxxxx||last^first^^|NON-HISPANIC|||||||||| PV1|1|I|MNEU^908^A^^R^^^^^^||||9999999^pcp^pcp^LYNNE^^^^^NPI^^^^NPI~999999999^last^first^LEE^^^^^NPI^^^^NPI||||||||||00000000^last^first^LYNNE^^^^^NPI^^^^NPI||000000603|CAID||||||||||||||||||||||||20170626000000

Hl7 很难用正则表达式提取,但我有一个始终位于同一位置的字段,我觉得这样可能更容易。我需要拉出上面流中的 'W00xxxxx' 的遇到编号。它始终位于 PID 的第三个竖线分隔部分并在 ^ 处停止。

目前我有:select 子字符串(来自 'PID\|[1]\|\|(.)\^' 的列)但这不起作用。但是,当我使用 select 子字符串(来自 'PV1\|[1]\|(.)\|' 的列)时,它将拉取 'I'。我看不到我的正则表达式中的巨大差异,无法知道为什么这不起作用。谢谢

这个怎么样:

PID\|[1]\|\|(.+?)\^

您无法使用正则表达式可靠地解析 HL7 V2.x 消息,因为编码字符在 MSH-1 和 MSH-2 中可能会发生变化。无论您使用何种语言,都可能已经有一个 HL7 解析库可供您使用。