//提交条码获取数据——此处要去院系统获取数据 /// <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(); }
/// <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; }