-1

原装 HL7

MSH|^~\&|RadImage^124|xxx|EI-ARTEFACT|xxx|123456789||ORM^O01|1234||2.3|||AL
PID|1|xxxxxx|xxxx||xxxxx^xxxxx xxxxx|xxx xxx|19391007|F|||104-430, xxx^^xxx^xx^xx^xx||(999)999-999|"||V|||||"||||||||"|N
PV1|1|A|11^11-1^^^^^2|||||123^xxx, xxx|||||||||123^xxx, xxx|||01|||||||||||||||||||NA|||||20191211082900|||||||
ORC|XO|"^"|xxx||CM||^^^xxx^^R||123456789|INTERF^INTERFACE||123^xxx, xxx|HOSPI^Hospitalisé|||KDICTE|3A^3A||"^"
OBR|1|"^"|xxx|82561^SCAN SINUS C+^^82561^SCAN SINUS C+|VU|xxx|"|"|||||"|||1234^xxx, xxx||xx|xxx|xxx|IMAGES^|xxxx||CT|"||^^^xxx^^VU||||AAAA~BBB~CCC|"^"||","~"|"|xxx|A|B|||
ZDS|1.11.11.11.1.11.1.1.11^RadImage^Application^DICOM

最终结果 HL7

MSH|^~\&|RadImage^124|xxx|EI-ARTEFACT|xxx|123456789||ORM^O01|1234||2.3|||AL
PID|1|xxxxxx|xxxx||xxxxx^xxxxx xxxxx|xxx xxx|19391007|F|||104-430, xxx^^xxx^xx^xx^xx||(999)999-999|"||V|||||"||||||||"|N
PV1|1|A|11^11-1^^^^^2|||||123^xxx, xxx|||||||||123^xxx, xxx|||01|||||||||||||||||||NA|||||20191211082900
ORC|XO|"^"|xxx||CM||^^^xxx^^R||123456789|INTERF^INTERFACE||123^xxx, xxx|HOSPI^Hospitalisé|||KDICTE|3A^3A||"^"
OBR|1|"^"|xxx|82561^SCAN SINUS C+^^82561^SCAN SINUS C+|VU|xxx|"|"|||||"|||1234^xxx, xxx||xx|xxx|xxx|IMAGES^|xxxx||CT|"||^^^xxx^^VU||||AAAA~BBB~CCC|"^"||","~"|"|xxx|A|B|||
ZDS|1.11.11.11.1.11.1.1.11^RadImage^Application^DICOM

你好,

我正在 C# 中制作一个 DLL,用于使用 nhapi Hl7 DLL 解析和修改 HL7 消息。我唯一在努力的是将空管保持在 PV1 段的末端。它正在删除“最终结果 HL7”与“原始 HL7”中的管道。

我想保留那些管道

这是我的实际代码

...
    using NHapi.Base.Model;
    using NHapi.Base.Parser;
    using NHapi.Base.Util;
    using System.Diagnostics;
    using NHapi.Model.V23.Segment;
    using NHapi.Model.V22.Segment;
    using NHapi.Model.V21.Segment;
    using NHapi.Model.V231.Segment;
...
...
    public void PreAnalysis(ITratmContext ctx, MemBuf mb)
        {
            var parser = new PipeParser();
            Debug.WriteLine(mb.ToString());
            var parsedMessage = parser.Parse(mb.ToString());
            var pipeDelimitedMessage = parser.Encode(parsedMessage);
            Debug.WriteLine(pipeDelimitedMessage);  //Message lose the empty pipe HERE
            var genericMethod = parsedMessage as AbstractMessage;

            // create a terser object instance by wrapping it around the message object
            Terser terser = new Terser(parsedMessage);

            OurTerserHelper terserHelper = new OurTerserHelper(terser);
            String terserExpression = "MSH-12";
            String HL7Version = terserHelper.GetData(terserExpression);

            if (HL7Version == "2.3")
            {
                var obr = genericMethod.GetStructure("OBR") as NHapi.Model.V23.Segment.OBR;
                if (obr != null)
                {
                    for (int i = 0; i < obr.ReasonForStudyRepetitionsUsed; i++)
                    {
                        obr.GetReasonForStudy(i).Identifier.Value = StringExtention.Clean(obr.GetReasonForStudy(i).Identifier.ToString());
                    }
                }
                //var obrRep = obr.ReasonForStudyRepetitionsUsed;
                Debug.WriteLine(parser.Encode(genericMethod.Message));
                mb.Init(parser.Encode(genericMethod.Message));
            }
        }

非常感谢 !!!!

4

2 回答 2

0

在最后一个填充字段之后,我没有看到有字段分隔符的意义。但是,如果您坚持这样做,您可以在末尾附加一个自定义分隔符。

于 2019-12-31T05:16:49.473 回答
0

在段中的最后一个填充字段之后无需保留任何字段分隔符。它们是多余的,浪费空间。

于 2019-12-18T01:30:01.237 回答