首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从HL7中提取PDF

从HL7中提取PDF
EN

Stack Overflow用户
提问于 2017-10-25 20:26:45
回答 2查看 2.2K关注 0票数 2

我正在用C#编写一个程序,它将解析HL7消息并将数据写入文本文件。HL7还包含一个base64格式的嵌入式PDF。我必须解码base64编码的pdf和它也。

代码语言:javascript
复制
        string fileLocation = @"hl7file.hl7";

        var message = File.ReadAllText(fileLocation);

        PipeParser parser = new PipeParser();

        IMessage m = parser.Parse(message);//str message will contain your HL7 Message
        ADT_A03 adtA02 = m as ADT_A03;

        ORU_R01 oru = m as ORU_R01;
        ORU_R01_PATIENT patient = oru.GetPATIENT_RESULT().PATIENT;

        ORU_R01_ORDER_OBSERVATION orderObservation = oru.GetPATIENT_RESULT().GetORDER_OBSERVATION();
        OBR obr = orderObservation.OBR;

        PID pid = patient.PID;

        string PatientId = pid.GetPatientIdentifierList(0).IDNumber.ToString();

        ORU_R01_OBSERVATION observation = orderObservation.GetOBSERVATION(0);
        OBX obx = observation.OBX;


        var pdfFile = obx.GetObservationValue(0).data;

        Dictionary<string, string> hl7Data = new Dictionary<string, string>();

        hl7Data.Add("Patient ID", PatientId = pid.GetPatientIdentifierList(0).IDNumber.ToString());
        hl7Data.Add("Last_Name", pid.GetPatientName(0).FamilyName.Surname.Value);
        hl7Data.Add("First_Name", pid.GetPatientName(0).GivenName.Value);
        hl7Data.Add("DOB", pid.DateTimeOfBirth.Time.ToString());
        hl7Data.Add("Sex", pid.AdministrativeSex.Value);
        hl7Data.Add("Address", pid.GetPatientAddress(0).StreetAddress.StreetOrMailingAddress.Value);
        hl7Data.Add("City", pid.GetPatientAddress(0).City.Value);
        hl7Data.Add("State", pid.GetPatientAddress(0).StateOrProvince.Value);
        hl7Data.Add("Zip_Code", pid.GetPatientAddress(0).ZipOrPostalCode.Value);
        hl7Data.Add("Signature_Required", obr.PriorityOBR.Value);
        hl7Data.Add("Referring_Physician_Last_Name", obr.GetOrderingProvider(0).FamilyName.Surname.Value);
        hl7Data.Add("Referring_Physician_First_Name", obr.GetOrderingProvider(0).GivenName.Value);
        hl7Data.Add("NPI", obr.GetOrderingProvider(0).IdentifierTypeCode.Value);
        hl7Data.Add("Observation_Date", obr.ObservationDateTime.Time.ToString());
        hl7Data.Add("File_Type", obr.UniversalServiceIdentifier.Identifier.Value);
        hl7Data.Add("File_Description", obr.UniversalServiceIdentifier.Text.Value);

        using (StreamWriter file = new StreamWriter(@"C:\Users\samin.khan\Desktop\myfile.txt"))
        {
            foreach (var entry in hl7Data)
            {
                file.WriteLine("{0}: {1}", entry.Key, entry.Value);
            }
        }

因此,var pdfFile = obx.GetObservationValue(0).data以base64格式显示PDF,但我无法访问数据。我可以清楚地看到pdffile对象中的pdf值,但无法访问它。请检查图像附件。

如何访问PDF数据?

使用:

代码语言:javascript
复制
 using NHapi.Base.Parser;
 using NHapi.Model.V25.Datatype;
 using NHapi.Model.V25.Message;
 using NHapi.Model.V25.Group;
 using NHapi.Model.V25.Segment;
 using NHapi.Base.Model;

图片:

将其转换为ED (封装数据)对象后:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-25 20:53:08

只需删除原来的屏幕截图,您就可以执行以下操作:

代码语言:javascript
复制
var ed = axc.Data as ED;
if (ed != null)
{
    var bytes = Convert.FromBase64String(ed.Data);
    File.WriteAllBytes("SomeFileName.pdf", bytes);
}
票数 2
EN

Stack Overflow用户

发布于 2017-10-25 20:59:28

代码语言:javascript
复制
        ED embeddedPDF = (ED)obx.GetObservationValue(0).Data;

        if (embeddedPDF != null)
        {
           var bytes = Convert.FromBase64String(embeddedPDF.Data.Value);
           File.WriteAllBytes("SomeFileName.pdf", bytes);
        }

非常感谢大家。

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

https://stackoverflow.com/questions/46941487

复制
相关文章

相似问题

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