public void ParseORMwithCompleteOBXToXML() { string Message = @"MSH|^~\&|INVISION|DHC|SUNQUEST LAB||200606191615||ORM^O01|ORDR|P|2.3.1|LAB PID|0001||3020956||TRAINONLYPOE^ONE||19770903|F||W||||||||40230443 PV1|0001|I|MICU^W276^01||||045716^ABAZA, MONA M|||MED|||||||045716|F|000000030188 ORC|NW|01444^00001|||||||||||L OBR||01444^00001||CAI^CALCIUM IONIZED|||200606191614||||L|||||045716^STEELE, ANDREW W|||||||||||00001&UNITS^ONCE&ONCE^000^200606191614^200606191614^ROUTINE OBX|1|TX|SDES||Blood, peripheral||||||Z OBX|2|TX|SREQ||LEFT ANTECUBITAL||||||Z OBX|3|TX|CULT||Beta hemolytic Streptococcus Group A||||||Z OBX|4|TX|CULT||Critical result(s) called to and verification "; Message += "\"read-back\""; Message += @" received from: Nu~||||||Z "; PipeParser Parser = new PipeParser(); IMessage m = Parser.Parse(Message); ORM_O01 msgObj = m as ORM_O01; Assert.IsNotNull(msgObj); XMLParser xmlParser = new DefaultXMLParser(); string recoveredMessage = xmlParser.Encode(msgObj); Assert.IsNotNull(recoveredMessage); Assert.IsFalse(string.Empty.Equals(recoveredMessage)); }
public void ParseORMwithOBXToXML() { string Message = @"MSH|^~\&|INVISION|DHC|SUNQUEST LAB||200606191615||ORM^O01|ORDR|P|2.3.1|LAB PID|0001||3020956||TRAINONLYPOE^ONE||19770903|F||W||||||||40230443 PV1|0001|I|MICU^W276^01||||045716^ABAZA, MONA M|||MED|||||||045716|F|000000030188 ORC|NW|01444^00001|||||||||||L OBR||01444^00001||CAI^CALCIUM IONIZED|||200606191614||||L|||||045716^STEELE, ANDREW W|||||||||||00001&UNITS^ONCE&ONCE^000^200606191614^200606191614^ROUTINE OBX||NM|||999|||||| OBX||NM|||999|||||| OBX||NM|||999||||||"; PipeParser Parser = new PipeParser(); IMessage m = Parser.Parse(Message); ORM_O01 msgObj = m as ORM_O01; Assert.IsNotNull(msgObj); XMLParser xmlParser = new DefaultXMLParser(); string recoveredMessage = xmlParser.Encode(msgObj); Assert.IsNotNull(recoveredMessage); Assert.IsFalse(string.Empty.Equals(recoveredMessage)); }
public HL7Handler(string fileText) { PipeParser parser = new PipeParser(); HapiModel.IMessage m = parser.Parse(fileText); orm001 = m as ORM_O01; }
public void Test() { var msg = new ORM_O01(); var order = msg.GetORDER(0); var placerNumber = order.ORC.GetPlacerOrderNumber(0); placerNumber.EntityIdentifier.Value = "123"; }
/// <summary> /// Get ORDER Records from ORM_O01 /// </summary> public static IEnumerable GetORDERRecords(this ORM_O01 message) { object[] result = message.GetRecords("ORDERRepetitionsUsed", "GetORDER"); if ((result != null) && (result.Count() > 0)) { for (int i = 0; i < result.Count(); i++) { yield return(result[i]); } } }
public override string DoProcess(IMessage m) { ORM_O01 ormO01 = m as ORM_O01; try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)) { ORC orc = ormO01.GetORDER(0).ORC; int yeWuLx = 0;//-1:退单,0:单据恢复到初时状态,1:预约,2:登记,3:报告完成,4:审核报告 string shenQingDId = orc.PlacerOrderNumber.EntityIdentifier.Value; string caoZuoYuan = orc.GetEnteredBy(0).IDNumber.Value; string caoZuoKs = orc.EntererSLocation.PointOfCare.Value; string errMsg = string.Empty; //检查登记 if (orc.OrderControl.Value == "SC" && orc.OrderStatus.Value == "SC") { yeWuLx = 2; //解析消息,得到消息内容 } if (!string.IsNullOrEmpty(errMsg)) { return(SetACK(ormO01, "ACK", "", "", errMsg)); } StringBuilder sb = new StringBuilder(); sb.Append("申请单ID:[").Append(shenQingDId).Append("]").Append(Environment.NewLine); sb.Append("操作员:[").Append(caoZuoYuan).Append("]").Append(Environment.NewLine); sb.Append("附:接收到消息后,可参考组装消息进行解析,在此不再罗列,只以[申请单ID]作为测试"); LogHelp.WriteLog("接收消息内容:" + Environment.NewLine, sb.ToString()); scope.Complete(); return(SetACK(ormO01, "ACK", "", "")); } } catch (Exception ex) { if (ex.InnerException == null) { return(SetACK(ormO01, "ACK", "", "", ex.Message)); } else { return(SetACK(ormO01, "ACK", "", "", ex.Message + Environment.CommandLine + ex.InnerException.Message)); } } }
/// <summary> /// 产生ORM_O01消息 /// </summary> /// <param name="patientInfo"></param> /// <param name="order"></param> /// <returns></returns> public static ORM_O01 ProduceORM_O01(Neusoft.HISFC.Models.Order.Order order) { if (order == null) { throw new ArgumentNullException("order"); } NHapi.Model.V231.Message.ORM_O01 orm = new ORM_O01(); ProduceMSH(orm.MSH, "ORM", "O01", "1001"); ProducePID(orm.PATIENT.PID, order.Patient); ProducePV1(orm.PATIENT.PATIENT_VISIT.PV1, order.Patient.PVisit); NHapi.Model.V231.Group.ORM_O01_ORDER order1 = orm.GetORDER(); ProduceORC(order1.ORC, order); ProduceOBR(order1.ORDER_DETAIL.OBR, order); return(orm); }
public void ParseORMo01PIDSegment() { string Message = "MSH|^~\\&|INVISION|DHC|SUNQUEST LAB||200606191615||ORM^O01|ORDR|P|2.3.1|LAB\r\n" + "PID|0001||3020956||TRAINONLYPOE^ONE||19770903|F||W||||||||40230443\r\n" + "PV1|0001|I|MICU^W276^01||||045716^ABAZA, MONA M|||MED|||||||045716|F|000000030188\r\n" + "ORC|NW|01444^00001|||||||||||L\r\n" + "OBR||01444^00001||CAI^CALCIUM IONIZED|||200606191614||||L|||||045716^STEELE, ANDREW W|||||||||||00001&UNITS^ONCE&ONCE^000^200606191614^200606191614^ROUTINE\r\n"; PipeParser Parser = new PipeParser(); IMessage m = Parser.Parse(Message); ORM_O01 ormo01 = m as ORM_O01; Assert.NotNull(ormo01); Assert.Equal("TRAINONLYPOE", (ormo01.PATIENT.PID.GetPatientName()[0]).FamilyLastName.FamilyName.Value); Assert.Equal("19770903", ormo01.PATIENT.PID.DateTimeOfBirth.TimeOfAnEvent.Value); Assert.Equal("F", ormo01.PATIENT.PID.Sex.Value); Assert.Equal("W", ((ormo01.PATIENT.PID.GetRace()[0]).Identifier.Value)); Assert.Equal("ABAZA, MONA M", ormo01.PATIENT.PATIENT_VISIT.PV1.GetAttendingDoctor(0).FamilyLastName.FamilyName.Value); }
/// <summary> /// 确定手术安排 /// </summary> /// <param name="patid"></param> /// <returns></returns> private string AppendHL7stringConfig(string patid) { ORM_O01 orm = new ORM_O01(); DataTable dtResult = dal.GetPaiban(patid); DataRow dr = dtResult.Rows[0]; int ostateNum = UserFunction.ToInt32(dr["Ostate"].ToString()); LogHelp.SaveLogHL7("状态" + dr["Ostate"].ToString()); string SCH_1 = ""; #region 组装消息头 SCH_1 = "确定手术安排"; orm.MSH.MessageType.TriggerEvent.Value = "S18"; orm.MSH.MessageType.MessageStructure.Value = "SIU_S12"; //if (ostateNum == 0) //{ // SCH_1 = "确定手术安排"; // orm.MSH.MessageType.TriggerEvent.Value = "S18"; // orm.MSH.MessageType.MessageStructure.Value = "SIU_S12"; //} //else //{ // SCH_1 = "修改手术安排"; // orm.MSH.MessageType.TriggerEvent.Value = "S19"; // orm.MSH.MessageType.MessageStructure.Value = "SIU_S12"; //} orm.MSH.MessageType.MessageType.Value = "SIU"; orm.MSH.FieldSeparator.Value = MessageConstant.FieldSeparator; orm.MSH.SendingApplication.NamespaceID.Value = "SSMZ1"; orm.MSH.SendingFacility.NamespaceID.Value = "SSMZ1"; orm.MSH.ReceivingApplication.NamespaceID.Value = "MediII"; orm.MSH.ReceivingFacility.NamespaceID.Value = "MediII"; orm.MSH.EncodingCharacters.Value = MessageConstant.EncodingCharacters; orm.MSH.VersionID.VersionID.Value = MessageConstant.VersionID; orm.MSH.DateTimeOfMessage.TimeOfAnEvent.SetLongDateWithSecond(DateTime.Now); orm.MSH.MessageControlID.Value = MediII.Common.GUIDHelper.NewGUID(); orm.MSH.ProcessingID.ProcessingID.Value = MessageConstant.ProcessingID; #endregion int Jieguo = dal.UpdatePaibanConfig(patid);//修改成 已排班 #region SCH| String SCH = "SCH||||||^" + SCH_1 + "^^^原因" + "|||||"; SCH += "^^^" + Convert.ToDateTime(dr["odate"]).AddDays(-1).ToString("yyyyMMdd") + DateTime.Now.ToString("HHmmss") + "|||||"; SCH += "SZ1168^^缪兰芬" + "|||"; SCH += "^^^^^^^^" + dr["patdpm"].ToString() + "|"; SCH += "SZ1168^^缪兰芬" + "||||||"; SCH += dr["patid"].ToString() + "\n"; #endregion String PID = dr["PidInfo"].ToString(); String PV1 = dr["Pv1Info"].ToString(); #region RGS| String RGS = "RGS|1" + "\n"; #endregion #region AIS| String AIS = "AIS|1||"; AIS += dr["OperNo"].ToString() + "^" + dr["Oname"].ToString() + "|||||||"; AIS += dr["Oroom"].ToString() + "^^^" + dr["Second"].ToString() + "|" + "\n"; #endregion #region 手术医生 String AIP = "AIP|1||"; AIP += dr["OsNo"].ToString() + "^" + dr["OS"].ToString() + "|主刀医生" + "\n"; #endregion #region 护士 DataTable dt = dal.GetUserNoByName(dr["SN1"].ToString()); string UserNO = " "; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|2||"; AIP += UserNO + "^" + dr["SN1"].ToString() + "|4^洗手护士" + "\n"; dt = dal.GetUserNoByName(dr["SN2"].ToString()); UserNO = " "; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|3||"; AIP += UserNO + "^" + dr["SN2"].ToString() + "|4^洗手护士" + "\n"; dt = dal.GetUserNoByName(dr["ON1"].ToString()); UserNO = " "; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|4||"; AIP += UserNO + "^" + dr["ON1"].ToString() + "|5^巡回护士" + "\n"; dt = dal.GetUserNoByName(dr["ON2"].ToString()); UserNO = " "; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|5||"; AIP += UserNO + "^" + dr["ON2"].ToString() + "|5^巡回护士" + "\n"; dt = dal.GetUserNoByName(dr["ON3"].ToString()); UserNO = " "; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|6||"; AIP += UserNO + "^" + dr["ON3"].ToString() + "|5^巡回护士" + "\n"; #endregion #region 手术助手 AIP += "AIP|7||"; AIP += dr["OA1No"].ToString() + "^" + dr["OA1"].ToString() + "|2^助理医生" + "\n"; AIP += "AIP|8||"; AIP += dr["OA2No"].ToString() + "^" + dr["OA2"].ToString() + "|2^助理医生" + "\n"; AIP += "AIP|9||"; AIP += dr["OA3No"].ToString() + "^" + dr["OA3"].ToString() + "|2^助理医生" + "\n"; #endregion #region 麻醉医生 dt = dal.GetUserNoByName(dr["AP1"].ToString()); UserNO = " "; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|11||"; AIP += UserNO + "^" + dr["AP1"].ToString() + "|麻醉医师" + "\n"; dt = dal.GetUserNoByName(dr["AP2"].ToString()); UserNO = " "; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|12||"; AIP += UserNO + "^" + dr["AP2"].ToString() + "|麻醉医师" + "\n"; dt = dal.GetUserNoByName(dr["AP3"].ToString()); UserNO = " "; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|13||"; AIP += UserNO + "^" + dr["AP3"].ToString() + "|麻醉医师" + "\n"; #endregion #region 转换消息对象为字符串 String hl7Message = SCH + PID + PV1 + RGS + AIS + AIP; NHapi.Base.Parser.PipeParser parser = new NHapi.Base.Parser.PipeParser(); string message = parser.Encode(orm) + hl7Message; return(message); #endregion }
/// <summary> /// Add a new ORM_O01 to ORDER /// </summary> public static ORM_O01_ORDER AddORDER(this ORM_O01 message) { return(message.GetORDER(message.ORDERRepetitionsUsed)); }
/// <summary> /// Get all ORDER Records from ORM_O01 /// </summary> public static List <ORM_O01_ORDER> GetAllORDERRecords(this ORM_O01 message) { return(message.GetAllRecords <ORM_O01_ORDER>("ORDERRepetitionsUsed", "GetORDER")); }
/// <summary> /// 手术消息反馈 /// </summary> /// <returns></returns> public static string AppendHL7stringOperConfig(string patzhuyuanId, string userNo, string userName) { ORM_O01 orm = new ORM_O01(); #region 组装消息头 orm.MSH.MessageType.MessageType.Value = "SIU"; orm.MSH.MessageType.TriggerEvent.Value = "S21"; orm.MSH.MessageType.MessageStructure.Value = "SIU_S12"; orm.MSH.FieldSeparator.Value = MessageConstant.FieldSeparator; orm.MSH.SendingApplication.NamespaceID.Value = "SSMZ"; orm.MSH.SendingFacility.NamespaceID.Value = "SSMZ"; orm.MSH.ReceivingApplication.NamespaceID.Value = "MediII"; orm.MSH.ReceivingFacility.NamespaceID.Value = "MediII"; orm.MSH.EncodingCharacters.Value = MessageConstant.EncodingCharacters; orm.MSH.VersionID.VersionID.Value = MessageConstant.VersionID; orm.MSH.DateTimeOfMessage.TimeOfAnEvent.SetLongDateWithSecond(DateTime.Now); orm.MSH.MessageControlID.Value = MediII.Common.GUIDHelper.NewGUID(); orm.MSH.ProcessingID.ProcessingID.Value = MessageConstant.ProcessingID; #endregion var mzjldDto = dal.GetPaibanAndMzjld(patzhuyuanId); #region SCH| String SCH = "SCH||1||||"; string mzff = mzjldDto.Amethod; //DataTable dtMzff = dal.GetMzffID(mzff); string mzff_No = "00"; SCH += "SSMZ" + "^^^" + mzff_No + "^" + mzff + "|||||"; SCH += "^^^" + mzjldDto.sskssj.Value.ToString("yyyyMMddHHmmss") + "^" + mzjldDto.ssjssj.Value.ToString("yyyyMMddHHmmss"); SCH += "~^^^" + mzjldDto.Otime.Value.ToString("yyyyMMddHHmmss") + "^" + DateTime.Now.ToString("yyyyMMddHHmmss") + "|||||"; SCH += userNo + "^^" + userName + "||||"; SCH += userNo + "^^" + userName + "||||||"; SCH += mzjldDto.ApplyId + "\n"; #endregion #region NTE| String NTE = "NTE|1|||~" + "\n"; #endregion string PID = mzjldDto.PidInfo + "\n"; string PV1 = mzjldDto.Pv1Info + "\n"; string RGS = "RGS|1" + "\n"; #region AIS| String AIS = "AIS|1||"; string OperName = mzjldDto.Oname; AIS += mzjldDto.Ocode + "^" + mzjldDto.Oname + "|||||||"; AIS += mzjldDto.Oroom + "^" + mzjldDto.Second + "\n"; #endregion #region 手术医生 String AIP = "AIP|1||"; var listUser = dal.GetUser(); AIP += mzjldDto.OsNo + "^" + mzjldDto.OS + " |主刀医生" + "\n"; AIP += "AIP|7||"; AIP += mzjldDto.Os1No + "^" + mzjldDto.OS1 + "|2^助理医生" + "\n"; AIP += "AIP|8||"; AIP += mzjldDto.Os2No + "^" + mzjldDto.OS2 + "|2^助理医生" + "\n"; AIP += "AIP|9||"; AIP += mzjldDto.Os2No + "^" + mzjldDto.OS3 + "|2^助理医生" + "\n"; #endregion #region 护士 string UserNO = string.Empty; var user = listUser.FirstOrDefault(a => a.User_name == mzjldDto.SN1); if (user != null) { UserNO = user.Uid; } AIP += "AIP|2||"; AIP += mzjldDto.SN1No + "^" + mzjldDto.SN1 + "|4^洗手护士" + "\n"; UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == mzjldDto.SN2); if (user != null) { UserNO = user.Uid; } AIP += "AIP|3||"; AIP += mzjldDto.SN2No + "^" + mzjldDto.SN2 + "|4^洗手护士" + "\n"; UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == mzjldDto.ON1); if (user != null) { UserNO = user.Uid; } AIP += "AIP|4||"; AIP += mzjldDto.ON1No + "^" + mzjldDto.ON1 + "|5^巡回护士" + "\n"; UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == mzjldDto.ON2); if (user != null) { UserNO = user.Uid; } AIP += "AIP|5||"; AIP += mzjldDto.ON2No + "^" + mzjldDto.ON2 + "|5^巡回护士" + "\n"; AIP += "AIP|6||"; AIP += "^" + "" + "|5^巡回护士" + "\n"; #endregion AIP += "AIP|10|||6^体外循环师" + "\n"; #region 麻醉医生 UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == mzjldDto.AP1); if (user != null) { UserNO = user.Uid; } AIP += "AIP|11||"; AIP += mzjldDto.AP1No + "^" + mzjldDto.AP1 + "|3^麻醉师" + "\n"; UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == mzjldDto.AP2); if (user != null) { UserNO = user.Uid; } AIP += "AIP|12||"; AIP += mzjldDto.AP2No + "^" + mzjldDto.AP2 + "|7^助理麻醉师" + "\n"; UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == mzjldDto.AP3); if (user != null) { UserNO = user.Uid; } AIP += "AIP|13||"; AIP += mzjldDto.AP3No + "^" + mzjldDto.AP3 + "|7^助理麻醉师" + "\n"; #endregion #region 转换消息对象为字符串 String hl7Message = SCH + NTE + PID + PV1 + RGS + AIS + AIP; NHapi.Base.Parser.PipeParser parser = new NHapi.Base.Parser.PipeParser(); string message = parser.Encode(orm) + hl7Message; return(message); #endregion }
/// <summary> /// Get all NTE Records from ORM_O01 /// </summary> public static List <NTE> GetAllNTERecords(this ORM_O01 message) { return(message.GetAllRecords <NTE>("NTERepetitionsUsed", "GetNTE")); }
/// <summary> /// 确定手术安排 /// </summary> /// <param name="id"></param> /// <param name="userName">用户名</param> /// <param name="uid">用户ID</param> /// <returns></returns> public static string AppendHL7stringConfig(int id, string userName, string uid) { ORM_O01 orm = new ORM_O01(); var paiban = dal.GetPaiban(id); int ostateNum = paiban.Ostate.ToInt32(); LogHelp.SaveLogHL7("状态" + ostateNum.ToString()); string SCH_1 = ""; #region 组装消息头 if (paiban.IsSend == 0) { SCH_1 = "确定手术安排"; orm.MSH.MessageType.TriggerEvent.Value = "S18"; orm.MSH.MessageType.MessageStructure.Value = "SIU_S12"; } else { SCH_1 = "修改手术安排"; orm.MSH.MessageType.TriggerEvent.Value = "S19"; orm.MSH.MessageType.MessageStructure.Value = "SIU_S12"; } orm.MSH.MessageType.MessageType.Value = "SIU"; orm.MSH.FieldSeparator.Value = MessageConstant.FieldSeparator; orm.MSH.SendingApplication.NamespaceID.Value = "SSMZ"; orm.MSH.SendingFacility.NamespaceID.Value = "SSMZ"; orm.MSH.ReceivingApplication.NamespaceID.Value = "MediII"; orm.MSH.ReceivingFacility.NamespaceID.Value = "MediII"; orm.MSH.EncodingCharacters.Value = MessageConstant.EncodingCharacters; orm.MSH.VersionID.VersionID.Value = MessageConstant.VersionID; orm.MSH.DateTimeOfMessage.TimeOfAnEvent.SetLongDateWithSecond(DateTime.Now); orm.MSH.MessageControlID.Value = MediII.Common.GUIDHelper.NewGUID(); orm.MSH.ProcessingID.ProcessingID.Value = MessageConstant.ProcessingID; #endregion // int Jieguo = dal.UpdatePaibanConfig(id);//修改成 已排班 #region SCH| String SCH = "SCH||||||^" + SCH_1 + "^^^原因" + "|||||"; SCH += "^^^" + paiban.Odate.AddDays(-1).ToString("yyyyMMdd") + DateTime.Now.ToString("HHmmss") + "|||||"; SCH += uid + "^^" + userName + "|||"; SCH += "^^^^^^^^" + paiban.Patdpm.ToString() + "|"; SCH += uid + "^^" + userName + "||||||"; SCH += paiban.ApplyId + "\n"; #endregion string PID = paiban.PidInfo + "\n"; string PV1 = paiban.Pv1Info + "\n"; #region RGS| String RGS = "RGS|1" + "\n"; #endregion #region AIS| String AIS = "AIS|1||"; AIS += paiban.OperNo + "^" + paiban.Oname + "|||||||"; AIS += paiban.Oroom + "^^^" + paiban.Second + "|" + "\n"; #endregion #region 手术医生 String AIP = "AIP|1||"; var listUser = dal.GetUser(); AIP += paiban.OsNo + "^" + paiban.OS + " |主刀医生" + "\n"; AIP += "AIP|7||"; AIP += paiban.Os1No + "^" + paiban.OS1 + "|2^助理医生" + "\n"; AIP += "AIP|8||"; AIP += paiban.Os2No + "^" + paiban.OS2 + "|2^助理医生" + "\n"; AIP += "AIP|9||"; AIP += paiban.Os3No + "^" + paiban.OS3 + "|2^助理医生" + "\n"; #endregion #region 护士 string UserNO = string.Empty; var user = listUser.FirstOrDefault(a => a.User_name == paiban.SN1); if (user != null) { UserNO = user.Uid; } AIP += "AIP|2||"; AIP += paiban.SN1No + "^" + paiban.SN1 + "|4^洗手护士" + "\n"; UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == paiban.SN2); if (user != null) { UserNO = user.Uid; } AIP += "AIP|3||"; AIP += paiban.SN2No + "^" + paiban.SN2 + "|4^洗手护士" + "\n"; UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == paiban.ON1); if (user != null) { UserNO = user.Uid; } AIP += "AIP|4||"; AIP += paiban.ON1No + "^" + paiban.ON1 + "|5^巡回护士" + "\n"; UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == paiban.ON2); if (user != null) { UserNO = user.Uid; } AIP += "AIP|5||"; AIP += paiban.ON2No + "^" + paiban.ON2 + "|5^巡回护士" + "\n"; AIP += "AIP|6||"; AIP += "^" + "" + "|5^巡回护士" + "\n"; #endregion AIP += "AIP|10|||6^体外循环师" + "\n"; #region 麻醉医生 UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == paiban.AP1); if (user != null) { UserNO = user.Uid; } AIP += "AIP|11||"; AIP += paiban.AP1No + "^" + paiban.AP1 + "|3^麻醉师" + "\n"; UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == paiban.AP2); if (user != null) { UserNO = user.Uid; } AIP += "AIP|12||"; AIP += paiban.AP2No + "^" + paiban.AP2 + "|7^助理麻醉师" + "\n"; UserNO = string.Empty; user = listUser.FirstOrDefault(a => a.User_name == paiban.AP3); if (user != null) { UserNO = user.Uid; } AIP += "AIP|13||"; AIP += paiban.AP3No + "^" + paiban.AP3 + "|7^助理麻醉师" + "\n"; #endregion #region 转换消息对象为字符串 String hl7Message = SCH + PID + PV1 + RGS + AIS + AIP; NHapi.Base.Parser.PipeParser parser = new NHapi.Base.Parser.PipeParser(); string message = parser.Encode(orm) + hl7Message; return(message); #endregion }
private void button1_Click(object sender, EventArgs e) { ORM_O01 orm = new ORM_O01(); #region 组装消息头 orm.MSH.MessageType.MessageType.Value = "ORM"; orm.MSH.MessageType.TriggerEvent.Value = "O01"; orm.MSH.MessageType.MessageStructure.Value = "ORM_O01"; orm.MSH.FieldSeparator.Value = MessageConstant.FieldSeparator; orm.MSH.SendingApplication.NamespaceID.Value = "SSMZ1"; orm.MSH.SendingFacility.NamespaceID.Value = "SSMZ1"; orm.MSH.ReceivingApplication.NamespaceID.Value = "MediII"; orm.MSH.ReceivingFacility.NamespaceID.Value = "MediII"; orm.MSH.EncodingCharacters.Value = MessageConstant.EncodingCharacters; orm.MSH.VersionID.VersionID.Value = MessageConstant.VersionID; orm.MSH.DateTimeOfMessage.TimeOfAnEvent.SetLongDateWithSecond(DateTime.Now); orm.MSH.MessageControlID.Value = MediII.Common.GUIDHelper.NewGUID(); orm.MSH.ProcessingID.ProcessingID.Value = MessageConstant.ProcessingID; #endregion for (int i = 0; i < messageList.Count; i++) { MessageNode node = messageList[i]; #region 组装PID段 PID pid = orm.PATIENT.PID; pid.PatientID.ID.Value = node.PIDList["PatientIdentifier"]; pid.GetPatientIdentifierList(0).ID.Value = node.PIDList["PatientIdentifier"]; pid.GetPatientIdentifierList(1).ID.Value = node.PIDList["jiuzhenkh"]; pid.GetPatientIdentifierList(2).ID.Value = node.PIDList["binganhao"]; pid.GetPatientIdentifierList(3).ID.Value = node.PIDList["shebaokh"]; pid.GetPatientIdentifierList(4).ID.Value = node.PIDList["gongfeizh"]; string bingRenXM = node.PIDList["bingrenxm"]; #region 姓名转全拼 StringBuilder sb = new StringBuilder(); foreach (char c in bingRenXM) { if (ChineseChar.IsValidChar(c)) { ChineseChar pinYinConvert = new ChineseChar(c); string pinYin = pinYinConvert.Pinyins[0]; if (!string.IsNullOrEmpty(pinYin)) { string word = pinYin.Substring(0, pinYin.Length - 1); //首字母大写,其他小写 StringBuilder sbW = new StringBuilder(word.Length); for (int n = 0; n < word.Length; n++) { string s = word.Substring(n, 1); if (n == 0) { sbW.Append(s.ToUpper()); } else { sbW.Append(s.ToLower()); } } sb.Append(sbW.ToString()); } } else { sb.Append(c); } } #endregion pid.GetPatientName(0).FamilyName.Surname.Value = sb.ToString(); pid.GetPatientName(0).GivenName.Value = bingRenXM; DateTime dtCHUSHENGRQ = DateTime.Parse(node.PIDList["chushengrq"]); pid.DateTimeOfBirth.TimeOfAnEvent.SetLongDateWithSecond((DateTime)dtCHUSHENGRQ);//出生日期 //if (string.IsNullOrEmpty(bingRenXx.XINGBIE)) //性别 // pid.AdministrativeSex.Value = "O"; //else if (bingRenXx.XINGBIE == "男") // pid.AdministrativeSex.Value = "M"; //else if (bingRenXx.XINGBIE == "女") pid.AdministrativeSex.Value = node.PIDList["sex"]; XAD address = pid.GetPatientAddress(0); address.City.Value = node.PIDList["city"]; address.StateOrProvince.Value = node.PIDList["province"]; address.StreetAddress.StreetOrMailingAddress.Value = node.PIDList["streetaddress"]; address.ZipOrPostalCode.Value = node.PIDList["postcode"]; address.OtherDesignation.Value = node.PIDList["postcode"]; pid.GetPhoneNumberHome(0).PhoneNumber.Value = node.PIDList["homephone"]; pid.GetPhoneNumberBusiness(0).PhoneNumber.Value = node.PIDList["workphone"]; pid.MaritalStatus.Text.Value = node.PIDList["hunyin"]; string hunYinDm = string.Empty; //if (bingRenXx.HUNYINDM == "0") // hunYinDm = "S"; //else if (bingRenXx.HUNYINDM == "1") // hunYinDm = "M"; //else hunYinDm = "O"; //婚姻代码 pid.MaritalStatus.Identifier.Value = hunYinDm; //婚姻代码 pid.PatientAccountNumber.ID.Value = node.PIDList["yibaokh"]; pid.SSNNumberPatient.Value = node.PIDList["idnumber"]; pid.GetEthnicGroup(0).Identifier.Value = node.PIDList["EthicGroupID"]; pid.GetEthnicGroup(0).Text.Value = node.PIDList["EthicGroupName"]; pid.BirthPlace.Value = node.PIDList["BirthPlace"]; pid.Nationality.Identifier.Value = node.PIDList["NationalityID"]; pid.Nationality.Text.Value = node.PIDList["NationalityName"]; #endregion #region 组装PV1 PV1 pv1 = orm.PATIENT.PATIENT_VISIT.PV1; string menZhenZhuYuanBZ = node.PV1List["menZhenZhuYuanBZ"]; if (menZhenZhuYuanBZ == "0") { //门诊 pv1.SetIDPV1.Value = node.PV1List["SetID"]; pv1.AdmissionType.Value = "R"; pv1.PatientClass.Value = "O"; //门诊O pv1.GetAttendingDoctor(0).IDNumber.Value = node.PV1List["AdmittingDoctorID"]; pv1.HospitalService.Value = node.PV1List["HospitalService"]; pv1.PatientType.Value = node.PV1List["PatientType"]; pv1.VisitNumber.ID.Value = node.PV1List["VisitNumber"]; pv1.ServicingFacility.Value = node.PV1List["ServicingFacility"]; //上下午标志 0-上午,1-下午,2-晚上 pv1.PendingLocation.PointOfCare.Value = node.PV1List["PendingLocation"]; DateTime dtZHIDANRQ = DateTime.Parse(node.PV1List["AdmitDate"]); pv1.AdmitDateTime.TimeOfAnEvent.SetLongDateWithSecond((DateTime)dtZHIDANRQ);//制单医生日期 就诊日期 pv1.VisitIndicator.Value = "V"; pv1.ChargePriceIndicator.Value = node.PV1List["ChargePriceIndicator"]; } else { //住院 pid.GetPatientIdentifierList(1).ID.Value = node.PIDList["jiuzhenkh"]; pid.GetAlternatePatientIDPID(0).ID.Value = node.PIDList["yingerbz"];//婴儿标志0非婴儿1婴儿 pid.GetMotherSIdentifier(0).ID.Value = node.PIDList["MothersIdentifier"]; pv1.VisitNumber.ID.Value = node.PV1List["VisitNumber"]; pv1.SetIDPV1.Value = node.PV1List["AlternateVisitID"]; //住医生院次数 pv1.PatientClass.Value = "I"; //住院病人 pv1.AssignedPatientLocation.PointOfCare.Value = node.PV1List["PointOfCare"]; pv1.AssignedPatientLocation.Bed.Value = node.PV1List["Bed"]; pv1.AssignedPatientLocation.Room.Value = node.PV1List["Room"]; if (!String.IsNullOrEmpty(node.PV1List["Facility"]))//当前科室,当前科室名称 { pv1.AssignedPatientLocation.Facility.NamespaceID.Value = node.PV1List["Facility"]; } pv1.GetAttendingDoctor(0).IDNumber.Value = node.PV1List["AttendingDoctorID"]; pv1.GetAttendingDoctor(0).GivenName.Value = node.PV1List["AttendingDoctorFamilyName"]; DateTime dtRuYuanRQ = DateTime.Parse(node.PV1List["AdmitDate"]); pv1.AdmitDateTime.TimeOfAnEvent.SetLongDateWithSecond((DateTime)dtRuYuanRQ); //入院日期 pv1.PendingLocation.PointOfCare.Value = node.PV1List["PendingLocation"]; //当前科室 pv1.PatientType.Value = node.PV1List["PatientType"]; //费用类别 DateTime dtRuKeRQ = DateTime.Parse(node.PV1List["AdmitDate"]); if (dtRuKeRQ != null) { pv1.GetContractEffectiveDate(0).Value = ((DateTime)dtRuKeRQ).ToString("yyyyMMddHHmmss");//入科日期 } pv1.VisitIndicator.Value = "V"; pv1.ChargePriceIndicator.Value = node.PV1List["ChargePriceIndicator"]; pv1.AlternateVisitID.ID.Value = node.PV1List["AlternateVisitID"];//住院次数 } #endregion #region 组装检验申请内容 for (int j = 0; j < node.ORCList.Count; j++) { ORC orc = orm.GetORDER(j).ORC; orc.OrderControl.Value = "SC"; orc.PlacerOrderNumber.EntityIdentifier.Value = node.ORCList[j]["PlacerOrderNumber"]; //申请单ID orc.FillerOrderNumber.EntityIdentifier.Value = node.ORCList[j]["FillterOrderNumber"]; //检查号 orc.OrderStatus.Value = "SC"; orc.DateTimeOfTransaction.TimeOfAnEvent.SetLongDateWithSecond(DateTime.Parse(node.ORCList[j]["DateTimeOfTransaction"])); //登记时间 orc.GetEnteredBy(0).IDNumber.Value = node.ORCList[j]["EnteredBy"]; //录入者 orc.EnteringOrganization.Identifier.Value = node.ORCList[j]["EnteringOrganizationIdentifier"]; //申请科室ID orc.EnteringOrganization.Text.Value = node.ORCList[j]["EnteringOrganizationText"]; //申请科室名称 orc.GetOrderingProvider(j).IDNumber.Value = node.ORCList[j]["OrderingProviderID"]; //申请医生ID orc.GetOrderingProvider(j).GivenName.Value = node.ORCList[j]["OrderingProviderName"]; //申请医生姓名 orc.OrderControlCodeReason.Text.Value = node.ORCList[j]["OrderControlCodeReason"]; //检查目的 OBR obr = orm.GetORDER(j).ORDER_DETAIL.OBR; obr.SetIDOBR.Value = (j + 1).ToString(); obr.PlacerOrderNumber.EntityIdentifier.Value = node.OBRList[j]["PlacerOrderNumber"]; //申请单ID obr.FillerOrderNumber.EntityIdentifier.Value = node.OBRList[j]["FillterOrderNumber"]; //检查号 obr.UniversalServiceIdentifier.Identifier.Value = node.OBRList[j]["UniversalServiceIdentifier"]; //检查部位ID obr.UniversalServiceIdentifier.Text.Value = node.OBRList[j]["UniversalServiceText"]; //检查部位名称 obr.Priority.Value = node.OBRList[j]["Priority"]; //优先级 obr.DangerCode.Identifier.Value = node.OBRList[j]["DangerCodeIdentifier"];; //执行科室 obr.DangerCode.Text.Value = node.OBRList[j]["DangerCodeText"]; //执行科室名称 } #endregion } #region 转换消息对象为字符串 NHapi.Base.Parser.PipeParser parser = new PipeParser(); message = parser.Encode(orm); this.txtOutput.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); this.txtOutput.AppendText("构建消息内容完成,消息内容如下:"); this.txtOutput.AppendText(System.Environment.NewLine); this.txtOutput.AppendText(message); this.txtOutput.AppendText(System.Environment.NewLine); #endregion }
/// <summary> /// Add a new ORM_O01 to NTE /// </summary> public static NTE AddNTE(this ORM_O01 message) { return(message.GetNTE(message.NTERepetitionsUsed)); }
/// <summary> /// 手术消息反馈 /// </summary> /// <returns></returns> private string AppendHL7stringOperConfig(string patID, string userNo, string userName) { ORM_O01 orm = new ORM_O01(); #region 组装消息头 orm.MSH.MessageType.MessageType.Value = "SIU"; orm.MSH.MessageType.TriggerEvent.Value = "S21"; orm.MSH.MessageType.MessageStructure.Value = "SIU_S12"; orm.MSH.FieldSeparator.Value = MessageConstant.FieldSeparator; orm.MSH.SendingApplication.NamespaceID.Value = "SSMZ1"; orm.MSH.SendingFacility.NamespaceID.Value = "SSMZ1"; orm.MSH.ReceivingApplication.NamespaceID.Value = "MediII"; orm.MSH.ReceivingFacility.NamespaceID.Value = "MediII"; orm.MSH.EncodingCharacters.Value = MessageConstant.EncodingCharacters; orm.MSH.VersionID.VersionID.Value = MessageConstant.VersionID; orm.MSH.DateTimeOfMessage.TimeOfAnEvent.SetLongDateWithSecond(DateTime.Now); orm.MSH.MessageControlID.Value = MediII.Common.GUIDHelper.NewGUID(); orm.MSH.ProcessingID.ProcessingID.Value = MessageConstant.ProcessingID; #endregion DataTable dtResult = dal.GetPaibanAndMZJLD(patID); DataRow dr = dtResult.Rows[0]; #region SCH| String SCH = "SCH||1||||"; string mzff = dr["Amethod"].ToString(); DataTable dtMzff = dal.GetMzffID(mzff); string mzff_No = "00"; if (dtMzff.Rows.Count > 0) { mzff_No = dtMzff.Rows[0][0].ToString(); } SCH += "SSMZ" + "^^^" + mzff_No + "^" + mzff + "|||||"; SCH += "^^^" + Convert.ToDateTime(dr["sskssj"]).ToString("yyyyMMddHHmmss") + "^" + Convert.ToDateTime(dr["ssjssj"]).ToString("yyyyMMddHHmmss"); SCH += "~^^^" + Convert.ToDateTime(dr["otime"]).ToString("yyyyMMddHHmmss") + "^" + DateTime.Now.ToString("yyyyMMddHHmmss") + "|||||"; SCH += userNo + "^^" + userName + "||||"; SCH += userNo + "^^" + userName + "||||||"; SCH += dr["patid"].ToString() + "\n"; #endregion #region NTE| String NTE = "NTE|1|||~" + "\n"; #endregion string PID = dr["PidInfo"].ToString(); string PV1 = dr["Pv1Info"].ToString(); string RGS = "RGS|1" + "\n"; #region AIS| String AIS = "AIS|1||"; string OperName = dr["Oname"].ToString(); DataTable dtSSSS = dal.GetOperNo(OperName); string OperCode = "00"; if (dtSSSS.Rows.Count > 0) { OperCode = dtSSSS.Rows[0]["OperCode"].ToString(); } AIS += OperCode + "^" + OperName + "||||||"; AIS += dr["GL"].ToString() + "|"; AIS += dr["Oroom"].ToString() + "^" + dr["Second"].ToString() + "\n"; #endregion #region 手术医生 String AIP = "AIP|1||"; DataTable dtOsNo = dal.GetShoushuYishengNo(dr["OS"].ToString()); string OsNO = ""; if (dtOsNo.Rows.Count > 0) { OsNO = dtOsNo.Rows[0]["nameNo"].ToString(); } AIP += OsNO + "^" + dr["OS"].ToString() + "|主刀医生" + "\n"; AIP += "AIP|7||"; dtOsNo = dal.GetShoushuYishengNo(dr["OA1"].ToString()); OsNO = ""; if (dtOsNo.Rows.Count > 0) { OsNO = dtOsNo.Rows[0]["nameNo"].ToString(); } AIP += OsNO + "^" + dr["OA1"].ToString() + "|2^助理医生" + "\n"; AIP += "AIP|8||"; dtOsNo = dal.GetShoushuYishengNo(dr["OA2"].ToString()); OsNO = ""; if (dtOsNo.Rows.Count > 0) { OsNO = dtOsNo.Rows[0]["nameNo"].ToString(); } AIP += OsNO + "^" + dr["OA2"].ToString() + "|2^助理医生" + "\n"; AIP += "AIP|9||"; dtOsNo = dal.GetShoushuYishengNo(dr["OA3"].ToString()); OsNO = ""; if (dtOsNo.Rows.Count > 0) { OsNO = dtOsNo.Rows[0]["nameNo"].ToString(); } AIP += OsNO + "^" + dr["OA3"].ToString() + "|2^助理医生" + "\n"; #endregion #region 护士 DataTable dt = dal.GetUserNoByName(dr["SN1"].ToString()); string UserNO = string.Empty; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|2||"; AIP += UserNO + "^" + dr["SN1"].ToString() + "|4^洗手护士" + "\n"; dt = dal.GetUserNoByName(dr["SN2"].ToString()); UserNO = string.Empty; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|3||"; AIP += UserNO + "^" + dr["SN2"].ToString() + "|4^洗手护士" + "\n"; dt = dal.GetUserNoByName(dr["ON1"].ToString()); UserNO = string.Empty; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|4||"; AIP += UserNO + "^" + dr["ON1"].ToString() + "|5^巡回护士" + "\n"; dt = dal.GetUserNoByName(dr["ON2"].ToString()); UserNO = string.Empty; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|5||"; AIP += UserNO + "^" + dr["ON2"].ToString() + "|5^巡回护士" + "\n"; dt = dal.GetUserNoByName(dr["ON3"].ToString()); UserNO = string.Empty; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|6||"; AIP += UserNO + "^" + dr["ON3"].ToString() + "|5^巡回护士" + "\n"; #endregion AIP += "AIP|10|||6^体外循环师" + "\n"; #region 麻醉医生 dt = dal.GetUserNoByName(dr["AP1"].ToString()); UserNO = string.Empty; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|11||"; AIP += UserNO + "^" + dr["AP1"].ToString() + "|3^麻醉师" + "\n"; dt = dal.GetUserNoByName(dr["AP2"].ToString()); UserNO = string.Empty; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|12||"; AIP += UserNO + "^" + dr["AP2"].ToString() + "|7^助理麻醉师" + "\n"; dt = dal.GetUserNoByName(dr["AP3"].ToString()); UserNO = string.Empty; if (dt.Rows.Count > 0) { UserNO = dt.Rows[0][0].ToString(); } AIP += "AIP|13||"; AIP += UserNO + "^" + dr["AP3"].ToString() + "|7^助理麻醉师" + "\n"; #endregion #region 转换消息对象为字符串 String hl7Message = SCH + NTE + PID + PV1 + RGS + AIS + AIP; NHapi.Base.Parser.PipeParser parser = new NHapi.Base.Parser.PipeParser(); string message = parser.Encode(orm) + hl7Message; return(message); #endregion }