//提交条码获取数据——此处要去院系统获取数据 /// <summary> /// 根据条码获取医院数据 /// </summary> /// <param name="barcode">条码号</param> /// <returns>datagrid需要的数据</returns> public string GetOPListForSpecimenByBarcode(string barcode) { StringBuilder result = new StringBuilder(); //01.根据条码号调用webservice获取数据 RuRo.BLL.WebService.ForCenterLabService centerLabServiceSoapClient = new RuRo.BLL.WebService.ForCenterLabService(); try { string getDataFromHospitalStr = centerLabServiceSoapClient.GetPatientInfoSpecimen(barcode);//(调用webservice时取消注释) #region 有数据并且不为null if (getDataFromHospitalStr != "" && getDataFromHospitalStr != null)//有数据并且不为null { //02.将数据转换成xml数据 XmlDocument getDataFromHospitalXml = HospitalXmlStrHelper.HospitalXmlStrToXmlDoc(getDataFromHospitalStr); if (getDataFromHospitalXml != null)//有数据并且能转换成xml文档 { if (getDataFromHospitalXml.HasChildNodes) { //创建前台页面Grid的字段数据 string sampleSourceName = "", sampleSourceType = "", sampleSourceDescription = "", patientId = "", patientName = "", scheduledDateTime = "", importStatus = "待导入", diagBeforeOperation = "", hiddenXml = getDataFromHospitalStr; XmlNodeList xmlnodelist = getDataFromHospitalXml.SelectNodes("/OPListForSpecimen/*");//获取OPListForSpecimen下的所有子节点 #region 有子节点返回节点数据 if (xmlnodelist.Count > 0)//有子节点返回节点数据 { foreach (XmlNode item in xmlnodelist) { switch (item.Name) { case "PatientId": patientId = item.InnerText;//标识号 sampleSourceName = item.InnerText; break; case "DeptCode": sampleSourceType = item.InnerText == "" ? "" : (item.InnerText.Split('-'))[1]; sampleSourceDescription = sampleSourceType == "" ? "" : sampleSourceType + "病区";//此处是后台生成前台页面的Grid,当前台改变时需要子前台页面再次绑定。 break; case "Name": patientName = item.InnerText == "" ? "" : item.InnerText; break; //case "Sex": // patientSex = item.InnerText == "" ? "" : item.InnerText; // break; case "ScheduledDateTime": scheduledDateTime = item.InnerText == "" ? "" : item.InnerText; break; case "DiagBeforeOperation": diagBeforeOperation = item.InnerText; break; default: break; } } result.Append("{"); result.AppendFormat("\"sampleSourceName\":\"{0}\",\"sampleSourceTypeName\":\"{1}\",\"sampleSourceDescription\":\"{2}\",\"scheduledDateTime\":\"{3}\",\"patientName\":\"{4}\",\"diagBeforeOperation\":\"{5}\",\"importStatus\":\"{6}\",\"patientId\":\"{7}\"", sampleSourceName, sampleSourceType, sampleSourceDescription, scheduledDateTime, patientName, diagBeforeOperation, importStatus, patientId); result.Append("}"); } //\"hiddenXml\":\"{7}\" , hiddenXml #endregion //OPListForSpecimen无子节点并且OPListForSpecimen下有数据, else if (xmlnodelist.Count == 0 && getDataFromHospitalXml.SelectSingleNode("/OPListForSpecimen").InnerText != "") { result.Append(getDataFromHospitalXml.SelectSingleNode("/OPListForSpecimen").InnerText); } } else//有数据并且能转换成xml,但是数据下面无OPListForSpecimen节点 { result.Append(string.Empty); } #region 直接返回的测试数据 //if (barcode == "1") //{ // return "{\"sampleSourceName\":\"0000217014\",\"sampleSourceType\":\"感染科\",\"sampleSourceDescription\":\"蔡XX\",\"patientId\":\"0000217014\",\"patientName\":\"蔡XX\",\"patientSex\":\"女\",\"importStatus\":\"待导入\",\"hiddenXml\":\"隐藏的数据\"}"; //} //if (barcode == "2") //{ // return "{\"sampleSourceName\":\"0001815970\",\"sampleSourceDescription\":\"李XX\",\"patientId\":\"0001815970\",\"patientName\":\"李XX\",\"patientSex\":\"女\",\"importStatus\":\"待导入\",\"hiddenXml\":\"隐藏的数据\",\"sampleSourceType\":\"风湿科\",\"selected\":true,}"; #endregion } else//不能转化成XML { result.Append(string.Empty); } } #endregion else //没数据返回 { result.Append(string.Empty); } } catch (Exception ex) { result.Append(string.Empty); } return result.ToString(); }
//根据日期和调用webservice查询数据 /// <summary> /// 根据日期和调用webservice查询数据 /// </summary> /// <param name="dateBegin">开始时间</param> /// <param name="dateEnd">结束时间</param> /// <returns>OPInfoListForSpecimen数据字典集合</returns> private List<Dictionary<string, string>> GetOPInfoListForSpecimenByTimeRangeAndToDicList(string dateBegin, string dateEnd) { //创建病人字典集合。 List<Dictionary<string, string>> oPListForSpecimensDicList = new List<Dictionary<string, string>>(); RuRo.BLL.WebService.ForCenterLabService centerLabServiceSoapClient = new RuRo.BLL.WebService.ForCenterLabService(); try { string oPInfoListForSpecimenStr = centerLabServiceSoapClient.GetOPInfoListForSpecimen(dateBegin, dateEnd); if (oPInfoListForSpecimenStr != null && oPInfoListForSpecimenStr != "")//有数据并且不为null { //02.将数据转换成xml数据 XmlDocument getDataFromHospitalXml = HospitalXmlStrHelper.HospitalXmlStrToXmlDoc(oPInfoListForSpecimenStr); if (getDataFromHospitalXml != null)//有数据并且能转换成xml文档 { if (getDataFromHospitalXml.HasChildNodes) { XmlNode xmlNode = getDataFromHospitalXml.SelectSingleNode("/OPListForSpecimenRt/ResultCode"); //创建临时集合保存多个人的数据 Dictionary<string, string> oPListForSpecimenTempDic = new Dictionary<string, string>(); if (xmlNode.InnerText == "0") //获取数据成功 { //OPListForSpecimens/OPListForSpecimen XmlNodeList xmlNodeList = getDataFromHospitalXml.SelectNodes("//OPListForSpecimens/*"); foreach (XmlNode item in xmlNodeList) { string tempOPListForSpecimenXml = item.OuterXml; oPListForSpecimenTempDic = ConvertOPListForSpecimenStrToDic(tempOPListForSpecimenXml); oPListForSpecimensDicList.Add(oPListForSpecimenTempDic); } } else if (xmlNode.InnerText == "-1") //获取数据失败 { oPListForSpecimenTempDic.Clear(); oPListForSpecimenTempDic.Add("OPListForSpecimenRt", FpJsonHelper.SerializationStr(getDataFromHospitalXml.SelectSingleNode("/OPListForSpecimenRt/ResultContent").InnerText)); oPListForSpecimensDicList.Add(oPListForSpecimenTempDic); } } } } } catch (Exception) { oPListForSpecimensDicList.Clear(); } return oPListForSpecimensDicList; }
/// <summary> /// 根据条码号获取医院数据并将数据转换成字典 /// </summary> /// <param name="barcode">条码</param> /// <returns>数据字典</returns> private Dictionary<string, string> GetOPListForSpecimenByBarcodeAndToDic(string barcode) { //01.创建字典 Dictionary<string, string> hospitalDic = new Dictionary<string, string>(); //02.创建webservice获取数据 RuRo.BLL.WebService.ForCenterLabService centerLabServiceSoapClient = new RuRo.BLL.WebService.ForCenterLabService(); try { //02.1 根据条码号调用GetPatientInfoSpecimen方法获取单个人的数据 string getDataFromHospitalStr = centerLabServiceSoapClient.GetPatientInfoSpecimen(barcode); // string getDataFromHospitalStr = GetOPListForSpecimenByLocalBracodeFileToJsonStr();//调用本地数据 if (getDataFromHospitalStr != null && getDataFromHospitalStr != "")//有数据并且不为null { //03.将数据转换成xml数据有数据并且能转换成xml文档 XmlDocument getDataFromHospitalXml = new XmlDocument(); //转换失败时返回null getDataFromHospitalXml = HospitalXmlStrHelper.HospitalXmlStrToXmlDoc(getDataFromHospitalStr); //转换成功 if (getDataFromHospitalXml != null) { //有子元素 if (getDataFromHospitalXml.HasChildNodes) { ////获取OPListForSpecimen下的所有子节点 //XmlNodeList xmlnodelist = getDataFromHospitalXml.SelectNodes("/OPListForSpecimen/*"); ////有子节点返回节点数据 //if (xmlnodelist.Count > 0) //{ hospitalDic = ConvertOPListForSpecimenStrToDic(getDataFromHospitalStr); //} } } } else //没数据返回 { hospitalDic.Clear(); } } catch (Exception ex) { hospitalDic.Clear(); } return hospitalDic; }
public void HF(RuRo.BLL.WebService.SpecimenRt specimenRt) { #region 正式代码 Thread.Sleep(100);//休眠1秒钟 //检查当前数据是否需要回发——数据库中不存在当前样本id的数据或者数据库中的数据和当前样本id的样本数据不一样 //a、数据库中存在数据——更新 //b、数据库中不存在数据——添加 bool exist = false; //检查数据是否存在 true存在 bool checkSpecimenRtResult = CheckSpecimenRt(specimenRt, ref exist); if (!checkSpecimenRtResult) { string result = ""; //数据库中不存在当前样本Id的数据 try { RuRo.BLL.WebService.ForCenterLabService CenterLab = new RuRo.BLL.WebService.ForCenterLabService(); result = CenterLab.StoreSpecimenInfo(specimenRt); } catch (Exception ex) { result = ex.Message; } //保存日志:a、直接保存SpecimenRtLog;b、成功之后保存详细的SpecimenRt bool SaveSpecimenRtLogResult = AddToSpecimenRtLog(specimenRt, result); if (result == "0^成功")//此处需要判断回发数据之后保存是否成功——判断回发之后返回的状态。 { //保存当前记录到数据库 bool SaveSpecimenRtResult = AddToSpecimenRt(specimenRt); } //检查当前的数据是否和数据库中的数据一直 } else//数据库中存在当前样本id的数据 { if (exist)//数据不一样 { string result = ""; try { RuRo.BLL.WebService.ForCenterLabService CenterLab = new RuRo.BLL.WebService.ForCenterLabService(); result = CenterLab.StoreSpecimenInfo(specimenRt);//回发数据 } catch (Exception ex) { result = ex.Message; } //保存日志:a、直接保存SpecimenRtLog;b、成功之后保存详细的SpecimenRt bool SaveSpecimenRtLogResult = AddToSpecimenRtLog(specimenRt, result); if (result == "0^成功")//此处需要判断回发数据之后保存是否成功——判断回发之后返回的状态。 { //更新当前记录到数据库 bool SaveSpecimenRtResult = UpdateSpecimenRt(specimenRt); } } } #endregion }