-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

やあ、

nhapi Hl7 DLL を使用して HL7 メッセージを解析および変更するために、C# で DLL を作成しています。私が苦労しているのは、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-18T01:30:01.237 に答える
0

最後に入力されたフィールドの後にフィールドセパレーターを配置する意味がわかりません。ただし、これを行うことを主張する場合は、最後にカスタム セパレーターを追加できます。

于 2019-12-31T05:16:49.473 に答える