Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析后在HL7中保留可选管道_C#_Hl7_Nhapi - Fatal编程技术网

C# 解析后在HL7中保留可选管道

C# 解析后在HL7中保留可选管道,c#,hl7,nhapi,C#,Hl7,Nhapi,原HL7 MSH^ ~\&RadImage^124 | xxx | EI-artifact | xxx | 123456789 | ORM^O01 | 1234 | 2.3 | AL PID | 1 | xxxxxx | xxxxx | xxxxx | xxxxx | xxx | xxx | 19391007 | F | | 104-430,xxx ^ xxx ^ xx ^ xx ^ xx | |(999)999-999 PV1 | 1 | A | 11-1 | 2 | | | | | | |

原HL7

MSH^ ~\&RadImage^124 | xxx | EI-artifact | xxx | 123456789 | ORM^O01 | 1234 | 2.3 | AL
PID | 1 | xxxxxx | xxxxx | xxxxx | xxxxx | xxx | xxx | 19391007 | F | | 104-430,xxx ^ xxx ^ xx ^ xx ^ xx | |(999)999-999
PV1 | 1 | A | 11-1 | 2 | | | | | | | | | | 123 | | | | | 01 | | | | | | | | | | | | | | | | | | | | | | | ||||||||
ORC | XO | | xxx | CM | | | | | xxx | | R | | | 123456789 |接口| | 123 | xxx |医院| | | | | KDICTE | 3A | | | | | |
1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,3月12日,1日,1日,1日,1日,1日,1日,1日,1日,1日,1,3方,1日,3,1日,1日,1日,3方,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,扫描窦C,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 124xxx | A | B|||
ZDS | 1.11.11.11.1.11^RadImage^应用程序^DICOM
最终结果HL7

MSH^ ~\&RadImage^124 | xxx | EI-artifact | xxx | 123456789 | ORM^O01 | 1234 | 2.3 | AL
PID | 1 | xxxxxx | xxxxx | xxxxx | xxxxx | xxx | xxx | 19391007 | F | | 104-430,xxx ^ xxx ^ xx ^ xx ^ xx | |(999)999-999
PV1 | 1 | A | 11-1 | 2 | | | | | | | | | | 123 | | | | | 01 | | | | | | | | | | | | | | | | | | | | | | | |
ORC | XO | | xxx | CM | | | | | xxx | | R | | | 123456789 |接口| | 123 | xxx |医院| | | | | KDICTE | 3A | | | | | |
1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,1月12日,3月12日,1日,1日,1日,1日,1日,1日,1日,1日,1日,1,3方,1日,3,1日,1日,1日,3方,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,扫描窦C,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 124xxx | A | B|||
ZDS | 1.11.11.11.1.11^RadImage^应用程序^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));
            }
        }
。。。
使用NHapi.Base.Model;
使用NHapi.Base.Parser;
使用NHapi.Base.Util;
使用系统诊断;
使用NHapi.Model.V23.Segment;
使用NHapi.Model.V22.Segment;
使用NHapi.Model.V21.Segment;
使用NHapi.Model.V231.Segment;
...
...
公共无效预分析(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);//消息在此处丢失空管道
var genericMethod=parsedMessage作为AbstractMessage;
//通过环绕消息对象创建一个更简洁的对象实例
Terser Terser=新的Terser(已解析消息);
OurTerserHelper terserHelper=新的OurTerserHelper(terser);
字符串terserExpression=“MSH-12”;
字符串HL7Version=terserHelper.GetData(terserExpression);
如果(HL7Version==“2.3”)
{
var obr=genericMethod.GetStructure(“obr”)为NHapi.Model.V23.Segment.obr;
如果(obr!=null)
{
for(int i=0;i

非常感谢

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

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

我明白你的意思,但我的问题是我怎样才能保留它们。