public ActionResult HospitalLaboratoryItemSeq_Update(string sHospID, string sHLIRowid, int iHLISeq) { if (String.IsNullOrEmpty(sHospID) != true) { GetLink(); // 判斷資料庫是否存在 if (myClass.DatabaseOrTableExist(dbs, ic, userid, password, "his" + sHospID, null, 0) == true) { LIS_HISEntities db_zmcmsdata = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs, "his" + sHospID, userid, password, @"res://*/Models.LIS_HISModel.csdl|res://*/Models.LIS_HISModel.ssdl|res://*/Models.LIS_HISModel.msl")); var lisHospitalLaboratoryItem = new lisHospitalLaboratoryItem() { HLIRowid = sHLIRowid, HLISeqno = iHLISeq }; db_zmcmsdata.lisHospitalLaboratoryItem.Attach(lisHospitalLaboratoryItem); db_zmcmsdata.Entry(lisHospitalLaboratoryItem).Property(p => p.HLISeqno).IsModified = true; var result = db_zmcmsdata.SaveChanges(); return(Json(result)); } } return(Json("")); }
public ActionResult lisPatientLaboratoryDetail_Read([DataSourceRequest] DataSourceRequest request, string sHospID, string sPLMRowid) { DataSourceResult result = ("").ToDataSourceResult(request); if (!String.IsNullOrEmpty(sHospID)) { GetLink(); // 判斷資料庫是否存在 if (myClass.DatabaseOrTableExist(dbs2, ic, userid, password, "his" + sHospID, null, 0) == true) { LIS_HISEntities db_zmcmsdata = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + sHospID, userid, password, LIS_HISEntities_String)); result = (from lpld in db_zmcmsdata.lisPatientLaboratoryDetail where lpld.PLMRowid == sPLMRowid join lhli in db_zmcmsdata.lisHospitalLaboratoryItem on lpld.PLDCode equals lhli.HLICode select new { lpld.PLDRowid, lpld.PLMRowid, lpld.HLIRowid, lpld.PLDCode, lpld.PLDName, PLDValue = (lpld.PLDValue != 0) ? lpld.PLDValue.ToString() : lpld.PLDStrValue, lpld.PLDUnit, lpld.PLDMemo, lpld.PLDType, lhli.HLISeqno }).ToDataSourceResult(request); } } return(Json(result)); }
public ActionResult HosptialLaboratoryItem_Update([DataSourceRequest] DataSourceRequest request, ViewModel_HospitalLaboratoryItem crud) { if (Session["HospID"] != null) { string sHospID = Session["HospID"].ToString(); GetLink(); LIS_HISEntities db_zmcmsdata = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs, "his" + sHospID, userid, password, @"res://*/Models.LIS_HISModel.csdl|res://*/Models.LIS_HISModel.ssdl|res://*/Models.LIS_HISModel.msl")); if (ModelState.IsValid) { var entity = new lisHospitalLaboratoryItem { HLIRowid = crud.HLIRowid, LLIRowid = crud.LLIRowid, LLISubRowid = crud.LLISubRowid, HLICode = crud.HLICode, HLIName = crud.HLIName, HLITitleName = crud.HLITitleName, HLIDisplayRange = crud.HLIDisplayRange, HLISeqno = crud.HLISeqno }; db_zmcmsdata.lisHospitalLaboratoryItem.Attach(entity); db_zmcmsdata.Entry(entity).State = System.Data.Entity.EntityState.Modified; db_zmcmsdata.SaveChanges(); } } return(Json(new[] { crud }.ToDataSourceResult(request, ModelState))); }
public ActionResult LPLDChart_Read([DataSourceRequest] DataSourceRequest request, string sHospID, string sPTRowid, string sPLDCode) { DataSourceResult result = ("").ToDataSourceResult(request); if (!String.IsNullOrEmpty(sHospID) && !String.IsNullOrEmpty(sPTRowid) && !String.IsNullOrEmpty(sPLDCode)) { GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + sHospID, userid, password, LIS_HISEntities_String)); result = (from lplm in db_his.lisPatientLaboratoryMaster where lplm.PTRowid == sPTRowid join lpld in db_his.lisPatientLaboratoryDetail on lplm.PLMRowid equals lpld.PLMRowid where lpld.PLDCode == sPLDCode orderby lplm.PLMApplyDate select new { lpld.PLDCode, lpld.PLDName, lplm.PLMApplyDate, lpld.PLDValue, PLDType = (lpld.PLDType == "H") ? "↑" : (lpld.PLDType == "L") ? "↓" : "", lpld.PLDUnit, lpld.PLDMemo }).ToDataSourceResult(request); } return(Json(result)); }
// 檢驗表列式明細是依病人的歷年檢驗的所有項目做匯整(Group)並列出左側項目供使用者單選或複選或全選以利右側介面以橫向顯示病人的驗驗值 public ActionResult lisLaboratoryClassItem_Read([DataSourceRequest] DataSourceRequest request, string HospID, string strUserId) { DataSourceResult result = ("").ToDataSourceResult(request); if (!String.IsNullOrEmpty(HospID)) { GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + HospID, userid, password, LIS_HISEntities_String)); // 2021-05-26 修正以病人身份證字號去取資料 //var r1 = (from lplm in db_his.lisPatientLaboratoryMaster // where lplm.PTRowid == strUserId // join lpld in db_his.lisPatientLaboratoryDetail on lplm.PLMRowid equals lpld.PLMRowid // select new { lpld.PLDCode }).Distinct().ToList(); var r1 = (from lplm in db_his.lisPatientLaboratoryMaster where lplm.PLMPTIdno == strUserId join lpld in db_his.lisPatientLaboratoryDetail on lplm.PLMRowid equals lpld.PLMRowid select new { lpld.PLDCode }).Distinct().ToList(); result = (from r in r1 join lhli in db_his.lisHospitalLaboratoryItem on r.PLDCode equals lhli.HLICode select new ViewModel_lisPatientLaboratoryClassGroup() { HLIRowid = lhli.HLIRowid, PLDCode = r.PLDCode, HLIName = lhli.HLIName }).ToDataSourceResult(request); } return(Json(result)); }
public ActionResult HosptialLaboratoryItem_Create([DataSourceRequest] DataSourceRequest request, ViewModel_HospitalLaboratoryItem crud, string sHospID) { GetLink(); LIS_HISEntities db_zmcmsdata = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs, "his" + sHospID, userid, password, @"res://*/Models.LIS_HISModel.csdl|res://*/Models.LIS_HISModel.ssdl|res://*/Models.LIS_HISModel.msl")); if (ModelState.IsValid) { var entity = new lisHospitalLaboratoryItem { HLIRowid = Guid.NewGuid().ToString(), LLIRowid = crud.LLIRowid, LLISubRowid = crud.LLISubRowid, HLICode = crud.HLICode, HLIName = crud.HLIName, HLITitleName = crud.HLITitleName, HLIDisplayRange = crud.HLIDisplayRange, HLISeqno = 0 }; db_zmcmsdata.lisHospitalLaboratoryItem.Add(entity); db_zmcmsdata.SaveChanges(); } return(Json(new[] { crud }.ToDataSourceResult(new DataSourceRequest(), ModelState))); }
public ActionResult lisPatientLaboratoryDetail_Read([DataSourceRequest] DataSourceRequest request, string sHospID, string sPLMRowid) { DataSourceResult result = ("").ToDataSourceResult(request); if (!String.IsNullOrEmpty(sHospID)) { GetLink(); // 判斷資料庫是否存在 if (myClass.DatabaseOrTableExist(dbs, ic, userid, password, "his" + sHospID, null, 0) == true) { LIS_HISEntities db_zmcmsdata = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs, "his" + sHospID, userid, password, @"res://*/Models.LIS_HISModel.csdl|res://*/Models.LIS_HISModel.ssdl|res://*/Models.LIS_HISModel.msl")); result = (from lpld in db_zmcmsdata.lisPatientLaboratoryDetail where lpld.PLMRowid == sPLMRowid select new { lpld.PLDRowid, lpld.PLMRowid, lpld.HLIRowid, lpld.PLDCode, lpld.PLDName, PLDValue = (String.IsNullOrEmpty(lpld.PLDStrValue.ToString())) ? lpld.PLDValue.ToString() : lpld.PLDStrValue, lpld.PLDType, lpld.PLDUnit, lpld.PLDMemo, lpld.PLDSeqno }).ToDataSourceResult(request); } } return(Json(result)); }
public ActionResult lisPatientLaboratory_Read([DataSourceRequest] DataSourceRequest request, string HospID, string strUserId) { DataSourceResult result = ("").ToDataSourceResult(request); if (!String.IsNullOrEmpty(HospID)) { GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + HospID, userid, password, LIS_HISEntities_String)); var db_dholog = (from log in db_his.lisDHOLog where log.DHOPTRowid == strUserId group log by new { log.DHOPTRowid, log.DHOExamDate } into g select new { DHOPTRowid = g.Key.DHOPTRowid, DHOExamDate = g.Key.DHOExamDate }).ToList(); // 2021/05/26 修正以病人身份字號去取得 patient 基本資料 var result1 = (from lplm in db_his.lisPatientLaboratoryMaster //where lplm.PTRowid == strUserId where lplm.PLMPTIdno == strUserId //join pt in db_his.Patient on lplm.PTRowid equals pt.id join pt in db_his.hisPatient on lplm.PLMPTIdno equals pt.PTIdno orderby lplm.PLMApplyDate descending select new { HospID = HospID, PLMRowid = lplm.PLMRowid, PTRowid = lplm.PTRowid, PTIdno = pt.PTIdno, PLMPTCode = lplm.PLMPTCode, PLMSNo = lplm.PLMSNo, PLMApplyDate = lplm.PLMApplyDate }).ToList().Select(x => new lpldg() { HospID = HospID, PLMRowid = x.PLMRowid, PTRowid = x.PTRowid, PTIdno = x.PTIdno, PLMPTCode = x.PLMPTCode, PLMSNo = x.PLMSNo, PLMApplyDate = x.PLMApplyDate.GetValueOrDefault().ToString("yyyy-MM-dd HH:mm:ss") }).ToList(); //Distinct().ToDataSourceResult(request); result = (from r1 in result1 join log in db_dholog on new { DHOPTRowid = r1.PTIdno, DHOExamDate = r1.PLMApplyDate } equals new { DHOPTRowid = log.DHOPTRowid, DHOExamDate = log.DHOExamDate } into cp from sublog in cp.DefaultIfEmpty() select new ViewModel_lisPatientLaboratoryDateGroup() { HospID = r1.HospID, PLMRowid = r1.PLMRowid, PTRowid = r1.PTRowid, PTIdno = r1.PTIdno, PLMPTCode = r1.PLMPTCode, PLMSNo = r1.PLMSNo, PLMApplyDate = (r1.PLMApplyDate.HasValue() == true) ? Convert.ToDateTime(r1.PLMApplyDate) : Convert.ToDateTime("1911-01-01"), PushFlag = (sublog != null) ? true : false }).Distinct().ToDataSourceResult(request); } return(Json(result)); }
public ActionResult lisVPNList_Read([DataSourceRequest] DataSourceRequest request, string HospID, string dtp) { DataSourceResult result = ("").ToDataSourceResult(request); if (!String.IsNullOrEmpty(HospID)) { GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + HospID, userid, password, LIS_HISEntities_String)); DateTime dt = Convert.ToDateTime(dtp); string sDt = (dt.Year - 1911).ToString("000") + (dt.Month).ToString("00") + (dt.Day).ToString("00"); var db_vpn = (from vpnh in db_his.lisVPNHData where vpnh.h11 == sDt join p in db_his.hisPatient on vpnh.h9 equals p.PTIdno into ps from q in ps.DefaultIfEmpty() select new ViewModel_lisVPN() { VHDRowid = vpnh.VHDRowid, ICHRowid = vpnh.ICHRowid, h1 = vpnh.h1, h2 = vpnh.h2, h3 = vpnh.h3, h4 = vpnh.h4, h5 = vpnh.h5, h6 = vpnh.h6, h7 = vpnh.h7, h8 = vpnh.h8, h9 = vpnh.h9, hname = q.PTChtName, h10 = vpnh.h10, h11 = vpnh.h11, h12 = vpnh.h12, h13 = vpnh.h13, h14 = vpnh.h14, h15 = vpnh.h15, h16 = vpnh.h16, h17 = vpnh.h17, h18 = vpnh.h18, h19 = vpnh.h19, h20 = vpnh.h20, h21 = vpnh.h21, h22 = vpnh.h22, h23 = vpnh.h23, h24 = vpnh.h24, h25 = vpnh.h25 }).AsEnumerable(); result = (from v in db_vpn select v).ToDataSourceResult(request); } return(Json(result)); }
public ActionResult lisPatientLaboratoryMaster_Read([DataSourceRequest] DataSourceRequest request, string sHospID, string startDate, string endDate) { DataSourceResult result = ("").ToDataSourceResult(request); DateTime sdt = DateTime.Parse(startDate); DateTime edt = DateTime.Parse(endDate); if (!String.IsNullOrEmpty(sHospID)) { GetLink(); // 判斷資料庫是否存在 if (myClass.DatabaseOrTableExist(dbs, ic, userid, password, "his" + sHospID, null, 0) == true) { LIS_HISEntities db_zmcmsdata = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs, "his" + sHospID, userid, password, @"res://*/Models.LIS_HISModel.csdl|res://*/Models.LIS_HISModel.ssdl|res://*/Models.LIS_HISModel.msl")); result = (from lplm in db_zmcmsdata.lisPatientLaboratoryMaster where lplm.PLMApplyDate >= sdt && lplm.PLMApplyDate <= edt join du in db_zmcmsdata.DHO_Users on lplm.PLMPTIdno equals du.user_id into b from obj in b.DefaultIfEmpty() select new { PLMRowid = lplm.PLMRowid, PLMPTRowid = lplm.PTRowid, PLMPTIdno = lplm.PLMPTIdno, PLMPTName = lplm.PLMPTName, PLMPTBirthday = lplm.PLMPTBirthday, PLMPTGender = lplm.PLMPTGender, PLMPTCode = lplm.PLMPTCode, PLMClinicDate = lplm.PLMClinicDate, PLMApplyDate = lplm.PLMApplyDate, PLMApplyTime = lplm.PLMApplyTime, PLMInspDate = lplm.PLMInspDate, PLMInspTime = lplm.PLMInspTime, PLMReportDate = lplm.PLMReportDate, PLMReportTime = lplm.PLMReportTime, PLMSNo = lplm.PLMSNo, PLMReqno = lplm.PLMReqno, APPFlag = (obj.user_id == null) ? false : true }).ToDataSourceResult(request); } } var jsonResult = Json(result, JsonRequestBehavior.AllowGet); jsonResult.MaxJsonLength = int.MaxValue; return(jsonResult); }
public ActionResult GetPatient([DataSourceRequest] DataSourceRequest request, string sSearchString) { if (Session["HospID"] != null) { string sHospID = Session["HospID"].ToString(); GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + sHospID, userid, password, LIS_HISEntities_String)); if (!String.IsNullOrEmpty(sSearchString)) { DataSourceResult db_patient = (from p in db_his.hisPatient where p.PTIdno.Contains(sSearchString) || p.PTCode.Contains(sSearchString) || p.PTChtName.Contains(sSearchString) || p.PTPostalAddress.Contains(sSearchString) orderby p.PTCode select new { hospID = sHospID, p.PTRowid, p.PTIdno, p.PTCode, p.PTChtName }).ToDataSourceResult(request); return(Json(db_patient)); } else { DataSourceResult db_patient = (from p in db_his.hisPatient select new { hospID = sHospID, p.PTRowid, p.PTIdno, p.PTCode, p.PTChtName }).ToDataSourceResult(request); return(Json(db_patient)); } } return(Json("")); }
public ActionResult LISDhoPushLog_Read([DataSourceRequest] DataSourceRequest request, string sHospID, string startDate, string endDate) { DataSourceResult result = ("").ToDataSourceResult(request); DateTime sdt = DateTime.Parse(startDate); DateTime edt = DateTime.Parse(endDate); if (!String.IsNullOrEmpty(sHospID)) { GetLink(); if (myClass.DatabaseOrTableExist(dbs, ic, userid, password, "his" + sHospID, null, 0) == true) { LIS_HISEntities db_lis = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs, "his" + sHospID, userid, password, @"res://*/Models.LIS_HISModel.csdl|res://*/Models.LIS_HISModel.ssdl|res://*/Models.LIS_HISModel.msl")); result = (from lplm in db_lis.lisPatientLaboratoryMaster where lplm.PLMApplyDate >= sdt && lplm.PLMApplyDate <= edt join du in db_lis.DHO_Users on lplm.PLMPTIdno equals du.user_id join log in db_lis.view_lisDHOLog on new { PLMPTIdno = lplm.PLMPTIdno, PLMApplyDate = lplm.PLMApplyDate.ToString() } equals new { PLMPTIdno = log.DHOPTRowid, PLMApplyDate = log.DHOExamDate.ToString() } into b from obj in b.DefaultIfEmpty() select new { PLMRowid = lplm.PLMRowid, PLMPTRowid = lplm.PTRowid, PLMPTIdno = lplm.PLMPTIdno, PLMPTName = lplm.PLMPTName, PLMPTBirthday = lplm.PLMPTBirthday, PLMPTGender = lplm.PLMPTGender, PLMPTCode = lplm.PLMPTCode, PLMClinicDate = lplm.PLMClinicDate, PLMApplyDate = lplm.PLMApplyDate, PLMApplyTime = lplm.PLMApplyTime, PLMInspDate = lplm.PLMInspDate, PLMInspTime = lplm.PLMInspTime, PLMReportDate = lplm.PLMReportDate, PLMReportTime = lplm.PLMReportTime, PLMSNo = lplm.PLMSNo, PLMReqno = lplm.PLMReqno, APPFlag = (obj.DHOPTRowid == null) ? false : true }).ToDataSourceResult(request); } } return(Json(result)); }
public ActionResult lisICList_Read([DataSourceRequest] DataSourceRequest request, string HospID, string dtp) { DataSourceResult result = ("").ToDataSourceResult(request); if (!String.IsNullOrEmpty(HospID)) { GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + HospID, userid, password, LIS_HISEntities_String)); DateTime dt = Convert.ToDateTime(dtp); string sDt = (dt.Year - 1911).ToString("000") + (dt.Month).ToString("00") + (dt.Day).ToString("00"); var db_vpn = (from ich in db_his.hisICHeader where ich.A17.Substring(0, 7) == sDt join p in db_his.hisPatient on ich.A12 equals p.PTIdno into ps from q in ps.DefaultIfEmpty() where ich.A23 != "AH" select new ViewModel_lisIC() { LVPTCode = q.PTCode, LVPTName = q.PTChtName, PTClinicDate = ich.A17.Substring(0, 7), LVPTBirthday = q.PTBirthday, LVPTIdno = q.PTIdno, LVPTOrder = (from icb in db_his.hisICBody where icb.ICHRowid == ich.ICHRowid select icb.ICHRowid).Count(), LVPTOrderList = (from icb in db_his.hisICBody where icb.ICHRowid == ich.ICHRowid select icb.A73).FirstOrDefault().ToString(), LVPTReportCount = 0 }).AsEnumerable(); result = (from v in db_vpn select new { v.LVPTCode, v.LVPTName, LVPTClinicDate = myClass.DateFormatConvert(v.PTClinicDate, "TW2DC", "-"), v.LVPTBirthday, v.LVPTIdno, v.LVPTOrder, v.LVPTOrderList, v.LVPTReportCount }).ToDataSourceResult(request); } return(Json(result)); }
public ActionResult HosptialLaboratoryItem_Destory([DataSourceRequest] DataSourceRequest request, string sHospID, string sRowid) { GetLink(); LIS_HISEntities db_zmcmsdata = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs, "his" + sHospID, userid, password, @"res://*/Models.LIS_HISModel.csdl|res://*/Models.LIS_HISModel.ssdl|res://*/Models.LIS_HISModel.msl")); if (ModelState.IsValid) { var entity = new lisHospitalLaboratoryItem { HLIRowid = sRowid }; db_zmcmsdata.lisHospitalLaboratoryItem.Attach(entity); db_zmcmsdata.lisHospitalLaboratoryItem.Remove(entity); db_zmcmsdata.SaveChanges(); } return(Json("")); //new[] { crud }.ToDataSourceResult(request, ModelState) }
public ActionResult LISDhoPushLogByPatient_Read([DataSourceRequest] DataSourceRequest request, string sPTRowid, string sHospID) { DataSourceResult result = ("").ToDataSourceResult(request); if (!String.IsNullOrEmpty(sPTRowid) && !String.IsNullOrEmpty(sHospID)) { GetLink(); if (myClass.DatabaseOrTableExist(dbs, ic, userid, password, "his" + sHospID, null, 0) == true) { LIS_HISEntities db_lis = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs, "his" + sHospID, userid, password, @"res://*/Models.LIS_HISModel.csdl|res://*/Models.LIS_HISModel.ssdl|res://*/Models.LIS_HISModel.msl")); result = ( from log in db_lis.lisDHOLog where log.DHOPTRowid == sPTRowid select log ).ToDataSourceResult(request); } } return(Json(result)); }
public ActionResult HosptialLaboratoryItem_Read([DataSourceRequest] DataSourceRequest request, string sHospID) { DataSourceResult result = ("").ToDataSourceResult(request); if (String.IsNullOrEmpty(sHospID) != true) { GetLink(); // 判斷資料庫是否存在 if (myClass.DatabaseOrTableExist(dbs, ic, userid, password, "his" + sHospID, null, 0) == true) { LIS_HISEntities db_zmcmsdata = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs, "his" + sHospID, userid, password, @"res://*/Models.LIS_HISModel.csdl|res://*/Models.LIS_HISModel.ssdl|res://*/Models.LIS_HISModel.msl")); result = (from lhli in db_zmcmsdata.lisHospitalLaboratoryItem join db_lliRowid in db_zmcmsdata.lisLaboratoryItem on lhli.LLIRowid equals db_lliRowid.LLIRowid into ps1 from o1 in ps1.DefaultIfEmpty() join db_lliSubRowid in db_zmcmsdata.lisLaboratoryItem on lhli.LLISubRowid equals db_lliSubRowid.LLIRowid into ps2 from o2 in ps2.DefaultIfEmpty() orderby lhli.HLISeqno, lhli.HLICode select new { //HospID = sHospID, HLIRowid = lhli.HLIRowid, LLIRowid = lhli.LLIRowid, LLISubRowid = lhli.LLISubRowid, HLICode = lhli.HLICode, HLIName = lhli.HLIName, HLITitleName = lhli.HLITitleName, HLIDisplayRange = lhli.HLIDisplayRange, LLINhiCode = o1.LLINhiCode, LLITrdCName01 = o1.LLITrdCName == null ? "" : o1.LLITrdCName, LLITrdCName02 = o2.LLITrdCName == null ? "" : o2.LLITrdCName, HLISeqno = (lhli.HLISeqno == null) ? 999999 : (int)lhli.HLISeqno }).ToDataSourceResult(request); } } return(Json(result)); }
public ActionResult _GetChart(string sHospID, string sPTIdno, string sHLIRowid) { Array result = null; if (String.IsNullOrEmpty(sHospID) && Session["HospID"] != null) { sHospID = Session["HospID"].ToString(); } if (!String.IsNullOrEmpty(sHospID) && !String.IsNullOrEmpty(sPTIdno) && !String.IsNullOrEmpty(sHLIRowid)) { GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + sHospID, userid, password, LIS_HISEntities_String)); var temp_result = (from lplm in db_his.lisPatientLaboratoryMaster where lplm.PLMPTIdno == sPTIdno join lpld in db_his.lisPatientLaboratoryDetail on lplm.PLMRowid equals lpld.PLMRowid join lhli in db_his.lisHospitalLaboratoryItem on lpld.PLDCode equals lhli.HLICode where lhli.HLIRowid == sHLIRowid orderby lplm.PLMApplyDate select new { PLMApplyDate = (DateTime)lplm.PLMApplyDate, PLDValue = lpld.PLDValue }).AsEnumerable(); result = (from lci in temp_result select new ViewModel_LISChart { PLMApplyDate = lci.PLMApplyDate.ToString("yyyy-MM-dd"), PLDValue = (decimal)lci.PLDValue }).ToArray(); } return(Json(result, JsonRequestBehavior.AllowGet)); }
public string LISVPNCreate(string sHospID, string sDate) { string sResult = String.Empty; if (!String.IsNullOrEmpty(sDate)) { // 切割日期資料取得日期 DateTime dtDate = Convert.ToDateTime(sDate); string sdt = (dtDate.Year - 1911).ToString("000") + (dtDate.Month).ToString("00") + (dtDate.Day).ToString("00") + "000000"; string edt = (dtDate.Year - 1911).ToString("000") + (dtDate.Month).ToString("00") + (dtDate.Day).ToString("00") + "235959"; if (!String.IsNullOrEmpty(sHospID)) { GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + sHospID, userid, password, LIS_HISEntities_String)); ZMLISEntities db_zmlis = new ZMLISEntities(); // 設定 ADO 連結 string sbconn = String.Format("Data Source={0};Initial Catalog={1};Persist Security Info=True; User ID={2}; Password={3}", dbs2, "his" + sHospID, userid, password); try { List <string> headerKey = new List <string>(); headerKey.Clear(); // 從 IC 卡上面取得的資料以 A17(就診日期時間,格式:yyyy-MM-dd HH:mm:ss) 做為 Key 來做清除資料依據 // A17 (就診日期時間): 基本上是以病人插入健保卡時的讀卡時間,所以,理論上不會有重覆時間的問題,精細計算單位至秒 var dt_icheader = (from ich in db_his.hisICHeader where ich.A17.CompareTo(sdt) >= 1 && ich.A17.CompareTo(edt) <= 1 select ich); List <string> key_delete = new List <string>(); if (dt_icheader != null) { foreach (var icHeader in dt_icheader) { headerKey.Add(icHeader.A17); } // 取得與匯入資料相同的檢驗單號 var r_header = from e in db_his.hisICHeader where e.A17.CompareTo(sdt) >= 1 && e.A17.CompareTo(edt) <= 1 select e; foreach (var a in r_header) { key_delete.Add(a.ICHRowid); } } if (key_delete.Count > 0) { db_his.lisVPN2PLM.Where(x => key_delete.Contains(x.ICHRowid)).Delete(); db_his.lisVPNHData.Where(x => key_delete.Contains(x.ICHRowid)).Delete(); db_his.lisVPNRData.Where(x => key_delete.Contains(x.ICHRowid)).Delete(); } #region 處理IC卡上傳資料與檢驗單據做媒合 // 把IC上傳VPN資料Header段與檢驗單據做媒合 // Key:看診日期 + 身份證字號 // 把取到媒合的檢驗單據放到 lisVPN2PLM table 內 var db_v2p = (from ic_hdata in db_his.hisICHeader where ic_hdata.ICHClinicDate >= dtDate && ic_hdata.ICHClinicDate <= dtDate join lpm in db_his.lisPatientLaboratoryMaster on new { q1 = ic_hdata.ICHClinicDate, q2 = ic_hdata.A12 } equals new { q1 = (DateTime)lpm.PLMClinicDate, q2 = lpm.PLMPTIdno } select new { V2LSRowid = Guid.NewGuid().ToString(), ICHRowid = ic_hdata.ICHRowid, PLMRowid = lpm.PLMRowid, PLMSNo = lpm.PLMSNo, LLSLabID = lpm.LLSLabID }); string sLLSLabID = String.Empty; if (db_v2p != null) { sLLSLabID = db_v2p.First().LLSLabID; } // 取得資料單媒合的 Key List <string> v2pKey = new List <string>(); foreach (var i in db_v2p) { v2pKey.Add(i.PLMSNo); } // 先把資料清除,清除 Key:PLMSNo(檢驗單號) db_his.lisVPN2PLM.Where(x => v2pKey.Contains(x.PLMSNo)).Delete(); // 把 db_v2p 寫到資料庫內 DataTable dt_v2p = myClass.LinqQueryToDataTable(db_v2p); if (dt_v2p.Rows.Count > 0) { using (SqlBulkCopy bcp_v2p = new SqlBulkCopy(sbconn)) { bcp_v2p.DestinationTableName = "lisVPN2PLM"; bcp_v2p.ColumnMappings.Add("V2LSRowid", "V2LSRowid"); bcp_v2p.ColumnMappings.Add("ICHRowid", "ICHRowid"); bcp_v2p.ColumnMappings.Add("PLMRowid", "PLMRowid"); bcp_v2p.ColumnMappings.Add("PLMSNo", "PLMSNo"); bcp_v2p.WriteToServer(dt_v2p); } } #endregion #region 媒合好的資料匯入到 MSSQL 內 // 處理檢驗上傳基本資料段-依每個醫令逐一儲存 var db_ich = (from ic_hdata in db_his.hisICHeader where ic_hdata.ICHClinicDate >= dtDate && ic_hdata.ICHClinicDate <= dtDate join ic_bdata in db_his.hisICBody on ic_hdata.ICHRowid equals ic_bdata.ICHRowid join vpn in db_his.lisLaboratoryVPNItem on ic_bdata.A73 equals vpn.LIVMNHICode select new { VHDRowid = "", //ic_hdata.ICHRowid, ICHRowid = ic_hdata.ICHRowid, h1 = ic_hdata.A00, h2 = ic_hdata.A14, h3 = "11", h4 = ic_hdata.A17.Substring(0, 5), h5 = ic_hdata.A17, h6 = ic_hdata.A23, h7 = ic_hdata.A18, h8 = ic_hdata.A19, h9 = ic_hdata.A12, h10 = ic_hdata.A13, h11 = ic_hdata.A17.Substring(0, 7), h12 = "", h13 = "", h14 = "", h15 = ic_bdata.A73, h16 = "", h17 = ic_hdata.A15, h18 = "", h19 = ic_hdata.A17.Substring(0, 7) + "0000", h20 = "", // From lisSys h21 = "", // From lisSys h22 = "", // From lisSys h23 = ic_hdata.A20, h24 = ic_hdata.A21, h25 = "" }).AsEnumerable(); // 取出符合VPN檢驗上傳名單的健保碼檢驗單資料,LisVPN2PLM 是已經媒合好的病人所屬的檢驗單 // 取出該診所的檢驗項目:需在診所所屬的結構表內取出檢驗項目清單 var db_lisItemData = (from sh in db_zmlis.sysHospital where sh.HospID == sHospID join lls in db_zmlis.lisLaboratorySchedule on sh.HospRowid equals lls.HospRowid where lls.LLSLabID == sLLSLabID join llm in db_zmlis.lisLaboratoryMaster on lls.LLMRowid equals llm.LLMRowid join lhli in db_zmlis.lisHospitalLaboratoryItem on llm.LLMRowid equals lhli.LLMRowid join lli in db_zmlis.lisLaboratoryItem on lhli.LLIRowid equals lli.LLIRowid select new { lhli.HLICode, lli.LLINhiCode, lli.LLIUnit, lli.LLIUp_Male, lli.LLILo_Male, lli.LLIUp_Female, lli.LLILo_Female }).AsEnumerable(); // 取得檢驗資料媒合 var db_lisData = (from a1 in db_his.lisVPN2PLM join lplm in db_his.lisPatientLaboratoryMaster on a1.PLMRowid equals lplm.PLMRowid join lpld in db_his.lisPatientLaboratoryDetail on lplm.PLMRowid equals lpld.PLMRowid select new { a1.V2LSRowid, a1.ICHRowid, a1.PLMRowid, lplm.PLMPTIdno, lplm.PLMClinicDate, lplm.PLMApplyDate, lplm.PLMReportDate, lplm.PLMSNo, lpld.PLDCode, lpld.PLDName, PLDValue = (lpld.PLDValue != 0) ? lpld.PLDValue.ToString() : lpld.PLDStrValue, lpld.PLDUnit }).AsEnumerable(); var db = (from a1 in db_lisData join lid in db_lisItemData on a1.PLDCode equals lid.HLICode select new { a1.V2LSRowid, a1.ICHRowid, a1.PLMRowid, a1.PLMPTIdno, a1.PLMClinicDate, a1.PLMApplyDate, a1.PLMReportDate, a1.PLMSNo, a1.PLDCode, lid.LLINhiCode, a1.PLDName, a1.PLDValue, PLDUnit = (String.IsNullOrEmpty(a1.PLDUnit)) ? lid.LLIUnit : a1.PLDUnit, lid.LLIUp_Male, lid.LLILo_Male, lid.LLIUp_Female, lid.LLILo_Female }).ToList(); var result = (from ich in db_ich join a in db on new { o1 = ich.ICHRowid, o2 = ich.h15.Trim() } equals new { o1 = a.ICHRowid, o2 = a.LLINhiCode.Trim() } orderby ich.ICHRowid select new { VHDRowid = ich.VHDRowid, ICHRowid = ich.ICHRowid, h1 = ich.h1, h2 = ich.h2, h3 = ich.h3, h4 = ich.h4, h5 = ich.h5, h6 = ich.h6, h7 = ich.h7, h8 = ich.h8, h9 = ich.h9, h10 = ich.h10, h11 = ich.h11, h12 = ich.h12, h13 = ich.h13, h14 = ich.h14, h15 = ich.h15, h16 = ich.h16, h17 = ich.h17, h18 = ich.h18, h19 = ich.h19, h20 = (a.PLMApplyDate.Value.Year - 1911).ToString("000") + (a.PLMApplyDate.Value.Month).ToString("00") + (a.PLMApplyDate.Value.Day).ToString("00") + a.PLMApplyDate.Value.ToString("HHmm"), h21 = (a.PLMReportDate == null) ? (a.PLMApplyDate.Value.Year - 1911).ToString("000") + (a.PLMApplyDate.Value.Month).ToString("00") + (a.PLMApplyDate.Value.Day).ToString("00") + a.PLMApplyDate.Value.ToString("HHmm") : (a.PLMReportDate.Value.Year - 1911).ToString("000") + (a.PLMReportDate.Value.Month).ToString("00") + (a.PLMReportDate.Value.Day).ToString("00") + a.PLMReportDate.Value.ToString("HHmm"), h22 = "血液", h23 = ich.h23, h24 = ich.h24, h25 = ich.h25, a.PLDName, a.PLDValue, a.PLDUnit, a.LLIUp_Male, a.LLILo_Male, a.LLIUp_Female, a.LLILo_Female, PLMReportDate = (a.PLMReportDate == null) ? (a.PLMApplyDate.Value.Year - 1911).ToString("000") + (a.PLMApplyDate.Value.Month).ToString("00") + (a.PLMApplyDate.Value.Day).ToString("00") + a.PLMApplyDate.Value.ToString("HHmm") : (a.PLMReportDate.Value.Year - 1911).ToString("000") + (a.PLMReportDate.Value.Month).ToString("00") + (a.PLMReportDate.Value.Day).ToString("00") + a.PLMReportDate.Value.ToString("HHmm") }).ToList(); // 取得資料 Key List <string> icKey = new List <string>(); foreach (var i in result) { icKey.Add(i.ICHRowid); } List <lisVPNHDataClass> vh = new List <lisVPNHDataClass>(); List <lisVPNRDataClass> vr = new List <lisVPNRDataClass>(); // 開始取得產生基本資料段及報告資料段 foreach (var vpn_data in result) { // 產生基本資料段 string sGuid_VHDRowid = Guid.NewGuid().ToString(); DateTime dt = DateTime.Now; //string h16_date = (dt.Year - 1911).ToString("000") + dt.ToString("MMddHHmmss"); string h16_date = vpn_data.h11 + dt.ToString("HHmmss"); lisVPNHDataClass vpn_hdata = new lisVPNHDataClass(); vpn_hdata.VHDRowid = sGuid_VHDRowid; vpn_hdata.ICHRowid = vpn_data.ICHRowid; vpn_hdata.h1 = vpn_data.h1; vpn_hdata.h2 = vpn_data.h2; vpn_hdata.h3 = vpn_data.h3; vpn_hdata.h4 = vpn_data.h4; vpn_hdata.h5 = vpn_data.h5; vpn_hdata.h6 = vpn_data.h6; vpn_hdata.h7 = vpn_data.h7; vpn_hdata.h8 = vpn_data.h8; vpn_hdata.h9 = vpn_data.h9; vpn_hdata.h10 = vpn_data.h10; vpn_hdata.h11 = vpn_data.h11; vpn_hdata.h12 = vpn_data.h12; vpn_hdata.h13 = vpn_data.h13; vpn_hdata.h14 = vpn_data.h14; vpn_hdata.h15 = vpn_data.h15; vpn_hdata.h16 = h16_date; vpn_hdata.h17 = vpn_data.h17; vpn_hdata.h18 = vpn_data.h18; vpn_hdata.h19 = vpn_data.h19; vpn_hdata.h20 = vpn_data.h20; vpn_hdata.h21 = vpn_data.h21; vpn_hdata.h22 = vpn_data.h22; vpn_hdata.h23 = vpn_data.h23; vpn_hdata.h24 = vpn_data.h24; vpn_hdata.h25 = vpn_data.h25; vh.Add(vpn_hdata); // 產生報告資料段 int seq = 0; lisVPNRDataClass vpn_rdata = new lisVPNRDataClass(); vpn_rdata.VRDRowid = Guid.NewGuid().ToString(); vpn_rdata.VHDRowid = sGuid_VHDRowid; vpn_rdata.ICHRowid = vpn_data.ICHRowid; vpn_rdata.r1 = seq + 1; vpn_rdata.r2 = vpn_data.PLDName; vpn_rdata.r3 = "未定義"; vpn_rdata.r4 = vpn_data.PLDValue; vpn_rdata.r5 = vpn_data.PLDUnit; vpn_rdata.r61 = vpn_data.LLILo_Male.ToString(); vpn_rdata.r62 = vpn_data.LLIUp_Male.ToString(); vpn_rdata.r7 = ""; vpn_rdata.r81 = ""; vpn_rdata.r82 = ""; vpn_rdata.r83 = ""; vpn_rdata.r84 = ""; vpn_rdata.r85 = ""; vpn_rdata.r86 = ""; vpn_rdata.r87 = ""; vpn_rdata.r88 = ""; vpn_rdata.r89 = ""; vpn_rdata.r9 = sHospID; vpn_rdata.r10 = vpn_data.PLMReportDate; vpn_rdata.r11 = ""; vpn_rdata.r12 = 0; vpn_rdata.r13 = ""; vpn_rdata.r14 = ""; vr.Add(vpn_rdata); } // 刪除原有的資料 if (icKey.Count > 0) { db_his.lisVPNHData.Where(x => icKey.Contains(x.ICHRowid)).Delete(); db_his.lisVPNRData.Where(x => icKey.Contains(x.ICHRowid)).Delete(); } #region 開始把整理好的檢驗上傳資料儲存到 lisVPNHData及 lisVPNRData if (vh != null) // && db_icb != null { DataTable dt_header = myClass.LinqQueryToDataTable(vh); DataTable dt_body = myClass.LinqQueryToDataTable(vr); //string sbconn = String.Format("Data Source={0};Initial Catalog={1};Persist Security Info=True; User ID={2}; Password={3}", dbs, "his" + sHospID, userid, password); if (dt_header.Rows.Count > 0) { using (SqlBulkCopy bcp_ich = new SqlBulkCopy(sbconn)) { bcp_ich.DestinationTableName = "lisVPNHData"; bcp_ich.ColumnMappings.Add("VHDRowid", "VHDRowid"); bcp_ich.ColumnMappings.Add("ICHRowid", "ICHRowid"); bcp_ich.ColumnMappings.Add("h1", "h1"); bcp_ich.ColumnMappings.Add("h2", "h2"); bcp_ich.ColumnMappings.Add("h3", "h3"); bcp_ich.ColumnMappings.Add("h4", "h4"); bcp_ich.ColumnMappings.Add("h5", "h5"); bcp_ich.ColumnMappings.Add("h6", "h6"); bcp_ich.ColumnMappings.Add("h7", "h7"); bcp_ich.ColumnMappings.Add("h8", "h8"); bcp_ich.ColumnMappings.Add("h9", "h9"); bcp_ich.ColumnMappings.Add("h10", "h10"); bcp_ich.ColumnMappings.Add("h11", "h11"); bcp_ich.ColumnMappings.Add("h12", "h12"); bcp_ich.ColumnMappings.Add("h13", "h13"); bcp_ich.ColumnMappings.Add("h14", "h14"); bcp_ich.ColumnMappings.Add("h15", "h15"); bcp_ich.ColumnMappings.Add("h16", "h16"); bcp_ich.ColumnMappings.Add("h17", "h17"); bcp_ich.ColumnMappings.Add("h18", "h18"); bcp_ich.ColumnMappings.Add("h19", "h19"); bcp_ich.ColumnMappings.Add("h20", "h20"); bcp_ich.ColumnMappings.Add("h21", "h21"); bcp_ich.ColumnMappings.Add("h22", "h22"); bcp_ich.ColumnMappings.Add("h23", "h23"); bcp_ich.ColumnMappings.Add("h24", "h24"); bcp_ich.ColumnMappings.Add("h25", "h25"); bcp_ich.WriteToServer(dt_header); } } if (dt_body.Rows.Count > 0) { using (SqlBulkCopy bcp_icb = new SqlBulkCopy(sbconn)) { bcp_icb.DestinationTableName = "lisVPNRData"; bcp_icb.ColumnMappings.Add("VRDRowid", "VRDRowid"); bcp_icb.ColumnMappings.Add("VHDRowid", "VHDRowid"); bcp_icb.ColumnMappings.Add("ICHRowid", "ICHRowid"); bcp_icb.ColumnMappings.Add("r1", "r1"); bcp_icb.ColumnMappings.Add("r2", "r2"); bcp_icb.ColumnMappings.Add("r3", "r3"); bcp_icb.ColumnMappings.Add("r4", "r4"); bcp_icb.ColumnMappings.Add("r5", "r5"); bcp_icb.ColumnMappings.Add("r61", "r61"); bcp_icb.ColumnMappings.Add("r62", "r62"); bcp_icb.ColumnMappings.Add("r7", "r7"); bcp_icb.ColumnMappings.Add("r81", "r81"); bcp_icb.ColumnMappings.Add("r82", "r82"); bcp_icb.ColumnMappings.Add("r83", "r83"); bcp_icb.ColumnMappings.Add("r84", "r84"); bcp_icb.ColumnMappings.Add("r85", "r85"); bcp_icb.ColumnMappings.Add("r86", "r86"); bcp_icb.ColumnMappings.Add("r87", "r87"); bcp_icb.ColumnMappings.Add("r88", "r88"); bcp_icb.ColumnMappings.Add("r89", "r89"); bcp_icb.ColumnMappings.Add("r9", "r9"); bcp_icb.ColumnMappings.Add("r10", "r10"); bcp_icb.ColumnMappings.Add("r11", "r11"); bcp_icb.ColumnMappings.Add("r12", "r12"); bcp_icb.ColumnMappings.Add("r13", "r13"); bcp_icb.ColumnMappings.Add("r14", "r14"); bcp_icb.WriteToServer(dt_body); } } vh.Clear(); vr.Clear(); sResult = "Code(200): 檢驗資料媒合成功 !!!"; } else { sResult = "Code(992): 沒有任何檢驗資料可供媒合 !!!"; } #endregion #endregion } catch (Exception ex) { sResult = "Code(999):" + ex.ToString(); } } else { sResult = "Code(990):醫事機構代碼沒傳入 ! (sHospID is Null !)"; } } else { sResult = "Code(991):日期沒傳入 ! (sDate is Null !)"; } return(sResult); }
public string LISVPNList(string sHospID, string sXMLDate) { string sResult = String.Empty; // 切割資料取得日期 if (!String.IsNullOrEmpty(sXMLDate)) { DateTime dtXMLDate = Convert.ToDateTime(sXMLDate); string sdt = (dtXMLDate.Year - 1911).ToString("000") + (dtXMLDate.Month).ToString("00") + (dtXMLDate.Day).ToString("00") + "0000"; if (!String.IsNullOrEmpty(sHospID)) { GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + sHospID, userid, password, LIS_HISEntities_String)); #region XML產出到系統數設定的指定目錄 try { var db_ic = (from vpnh in db_his.lisVPNHData where vpnh.h19.CompareTo(sdt) >= 0 && vpnh.h19.CompareTo(sdt) <= 0 join vpnr in db_his.lisVPNRData on vpnh.VHDRowid equals vpnr.VHDRowid group new { vpnh, vpnr } by new { vpnh.h1, vpnh.h2, vpnh.h3, vpnh.h4, vpnh.h5, vpnh.h6, vpnh.h7, vpnh.h8, vpnh.h9, vpnh.h10, vpnh.h11, vpnh.h12, vpnh.h13, vpnh.h14, vpnh.h15, vpnh.h16, vpnh.h17, vpnh.h18, vpnh.h19, vpnh.h20, vpnh.h21, vpnh.h22, vpnh.h23, vpnh.h24, vpnh.h25, vpnr.r1, vpnr.r2, vpnr.r3, vpnr.r4, vpnr.r5, vpnr.r61, vpnr.r62, vpnr.r7, vpnr.r81, vpnr.r82, vpnr.r83, vpnr.r84, vpnr.r85, vpnr.r86, vpnr.r87, vpnr.r88, vpnr.r89, vpnr.r9, vpnr.r10, vpnr.r11, vpnr.r12, vpnr.r13, vpnr.r14 } into gr select new { gr.Key.h1, gr.Key.h2, gr.Key.h3, gr.Key.h4, gr.Key.h5, gr.Key.h6, gr.Key.h7, gr.Key.h8, gr.Key.h9, gr.Key.h10, gr.Key.h11, gr.Key.h12, gr.Key.h13, gr.Key.h14, gr.Key.h15, gr.Key.h16, gr.Key.h17, gr.Key.h18, gr.Key.h19, gr.Key.h20, gr.Key.h21, gr.Key.h22, gr.Key.h23, gr.Key.h24, gr.Key.h25, gr.Key.r1, gr.Key.r2, gr.Key.r3, gr.Key.r4, gr.Key.r5, gr.Key.r61, gr.Key.r62, gr.Key.r7, gr.Key.r81, gr.Key.r82, gr.Key.r83, gr.Key.r84, gr.Key.r85, gr.Key.r86, gr.Key.r87, gr.Key.r88, gr.Key.r89, gr.Key.r9, gr.Key.r10, gr.Key.r11, gr.Key.r12, gr.Key.r13, gr.Key.r14 }).AsEnumerable().Where(t => decimal.TryParse(t.r4, out decimal i)); if (db_ic != null) { DataTable table = myClass.LinqQueryToDataTable(db_ic); string sYYMMDD = (dtXMLDate.Year - 1911).ToString("000") + (dtXMLDate.Month).ToString("00") + (dtXMLDate.Day).ToString("00"); //string sXMLTarget = Server.MapPath("~/") + @"FileCloud\LISTemp\" + sHospID + @"\"; // 得到應用程式目錄(含\) //string sXMLTarget = System.Web.Hosting.HostingEnvironment.MapPath("~") + @"FileCloud\LISTemp\" + sHospID + @"\"; // 得到應用程式目錄(含\) string sXMLTarget = Server.MapPath("~/FileCloud") + @"/LISTemp/" + sHospID + "/"; string sXMLPath = sXMLTarget + @"LISXML/" + sYYMMDD + @"/"; // XML暫存檔 string sZIPPath = sXMLTarget + @"LISZIP/" + sYYMMDD + @"/"; // 壓縮檔存檔位置 if (Directory.Exists(sXMLPath) == false) // XML暫存檔 { Directory.CreateDirectory(sXMLPath); //新增資料夾 } if (Directory.Exists(sZIPPath) == false) //壓縮檔存檔位置 { Directory.CreateDirectory(sZIPPath); //新增資料夾 } CreateXML lis = new CreateXML(); int nCode = lis.ConvertXML(table, sXMLTarget, sYYMMDD); sResult = String.Empty; if (nCode == 200) { sResult = String.Format("Code({0}): TOTFA.ZIP 已完成下載 !! ", nCode); } else { sResult = String.Format("Code({0}):XML檔案建立失敗,請查明原因 !{1}", nCode, ""); } } else { sResult = "Code(9):沒有資料可供建立XML檔案,建立失敗,請查明原因!"; } } catch (Exception ex) { sResult = "Code(999):" + ex.ToString(); } #endregion } } return(sResult); }
public JsonResult GetLisTemplate(string jsonString) { LisTemplate db_data = JsonConvert.DeserializeObject <LisTemplate>(jsonString); // 存放結果清單 List <string> myLists = new List <string>(); if (db_data != null) { HospitalParameters hp = new HospitalParameters(); // 取得醫事機構的參數設定 if (Session["HospID"] != null && Session["HospRowid"] != null) { string sHospRowid = Session["HospRowid"].ToString(); string sHospID = Session["HospID"].ToString(); // change hospital database GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + sHospID, userid, password, LIS_HISEntities_String)); var db_hospParam = (from shp in db_zmcmsv2.sysHospitalParam where shp.HospRowid == sHospRowid select shp).First(); if (db_hospParam != null) // 表示有找到數資料 { hp.HospLisDateStyle = db_hospParam.HospLisDateStyle; hp.HospLisDateFormat = db_hospParam.HospLisDateFormat; hp.HospLisItemTemp01 = db_hospParam.HospLisItemTemp01; hp.HospLisItemTemp02 = db_hospParam.HospLisItemTemp02; hp.HospLisItemTemp03 = db_hospParam.HospLisItemTemp03; hp.HospLisItemTemp04 = db_hospParam.HospLisItemTemp04; hp.HospLisItemAndValueTemplate = db_hospParam.HospLisItemAndValueTemplate; hp.HospLisDelimiter = db_hospParam.HospLisDelimiter; hp.HospLisEndingSymbol = db_hospParam.HospLisEndingSymbol; hp.HospLisRowCount = db_hospParam.HospLisRowCount; hp.HospLisColumnSpace = db_hospParam.HospLisColumnSpace; } // 帶 Default else { hp.HospLisDateStyle = "yyyy-MM-dd"; hp.HospLisDateFormat = "{0}:"; hp.HospLisItemTemp01 = false; hp.HospLisItemTemp02 = true; hp.HospLisItemTemp03 = false; hp.HospLisItemTemp04 = false; hp.HospLisItemAndValueTemplate = "{0}:{1}"; hp.HospLisDelimiter = ","; hp.HospLisEndingSymbol = "."; hp.HospLisRowCount = 3; hp.HospLisColumnSpace = 25; } // 取得日期格式是否是國曆型態 var stwc = (from cbd in db_zmcmsv2.ComboDetail where cbd.CBDCode == hp.HospLisDateFormat select new { CBDDescription = cbd.CBDDescription }).First(); CultureInfo culture = new CultureInfo("zh-TW"); culture.DateTimeFormat.Calendar = new TaiwanCalendar(); // 檢驗項目呈現方式 int icount = 0; bool lDateFlag = false; string sHospLisItemTemp = ""; string sColumnSpace = " "; string result = ""; foreach (var db in db_data.Data) { lDateFlag = false; string sPLDCode = db.PLDCode; string sPLDValue = db.PLDValue; DateTime dt = DateTime.Now; if (sPLDCode == "PLMApplyDate") { dt = Convert.ToDateTime(db.PLDValue); lDateFlag = true; string sdt = stwc.CBDDescription.Contains("國") == true?dt.ToString(hp.HospLisDateFormat, culture) : dt.ToString(hp.HospLisDateFormat); // 日期顯示結果 result = String.Format(hp.HospLisDateStyle, sdt); } // 取得檢驗代碼、檢驗簡稱、英文全名、中文全名 if (lDateFlag == false) { var db_laboratoryItem = (from li in db_his.lisHospitalLaboratoryItem where li.HLICode == sPLDCode select li).First(); if (db_laboratoryItem != null) { sHospLisItemTemp += (hp.HospLisItemTemp01 == true) ? String.Format("{0} ", db_laboratoryItem.HLICode.Trim()) : ""; // 檢驗代碼 sHospLisItemTemp += (hp.HospLisItemTemp02 == true) ? String.Format("{0} ", db_laboratoryItem.HLIName.Trim()) : ""; // 檢驗簡稱 sHospLisItemTemp += (hp.HospLisItemTemp03 == true) ? String.Format("{0} ", db_laboratoryItem.HLIName.Trim()) : ""; // 英文全名 sHospLisItemTemp += (hp.HospLisItemTemp04 == true) ? String.Format("{0} ", db_laboratoryItem.HLIName.Trim()) : ""; // 中文全名 } else { sHospLisItemTemp += (hp.HospLisItemTemp01 == true) ? String.Format("{0} ", sPLDCode.Trim()) : ""; // 檢驗代碼 sHospLisItemTemp += (hp.HospLisItemTemp02 == true) ? String.Format("{0} ", sPLDCode.Trim()) : ""; // 檢驗簡稱 sHospLisItemTemp += (hp.HospLisItemTemp03 == true) ? String.Format("{0} ", sPLDCode.Trim()) : ""; // 英文全名 sHospLisItemTemp += (hp.HospLisItemTemp04 == true) ? String.Format("{0} ", sPLDCode.Trim()) : ""; // 中文全名 } if (icount < hp.HospLisRowCount) { icount++; } else { icount = 1; result += Environment.NewLine + sColumnSpace.Repeat(hp.HospLisColumnSpace); } result += String.Format(hp.HospLisItemAndValueTemplate, sHospLisItemTemp, sPLDValue) + hp.HospLisDelimiter; sHospLisItemTemp = ""; } } // 去掉最後一個的分隔符號 result = result.Substring(0, result.LastIndexOf(hp.HospLisDelimiter)); // 加上結尾符號 result += hp.HospLisEndingSymbol; myLists.Add(result); } } return(Json(myLists, JsonRequestBehavior.AllowGet)); }
//[Authorize] public ActionResult LISBoardIndex(string HospID, string PTIdno) { if (Session["HospID"] != null) { ViewBag.HospID = HospID; ViewBag.PTIdno = PTIdno; ViewBag.ClassItem = null; DataTable data = GetDataTable(HospID, PTIdno, null); // 取得檢驗類別的筆數以利產生動態圖表 if (Session["HospID"] != null && HospID == null) { string sHospID = Session["HospID"].ToString(); string sHospRowid = Session["HospRowid"].ToString(); //GetLink(); //LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + sHospID, userid, password, LIS_HISEntities_String)); //var db_lhli = (from lhli in db_his.lisHospitalLaboratoryItem select new ClassItem { HLIRowid = lhli.HLIRowid, HLITitleName = lhli.HLITitleName, HLIUnit = lhli.HLIUnit }).ToList(); var db_lhli = (from sche in db_zmlis.lisLaboratorySchedule where sche.HospRowid == sHospRowid join llm in db_zmlis.lisLaboratoryMaster on sche.LLMRowid equals llm.LLMRowid join lhli in db_zmlis.lisHospitalLaboratoryItem on llm.LLMRowid equals lhli.LLMRowid where llm.LLMFormat == "XML" && lhli.LLISubRowid != null join lli in db_zmlis.lisLaboratoryItem on lhli.LLISubRowid equals lli.LLIRowid select new ClassItem { HLIRowid = lhli.HLIRowid, HLITitleName = lhli.HLITitleName, HLIUnit = lhli.HLIUnit }).ToList(); ViewBag.ClassItem = db_lhli; } else if (Session["HospID"] != null && HospID != null) { //string sHospID = Session["HospID"].ToString(); GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + HospID, userid, password, LIS_HISEntities_String)); var db_lhli = (from lhli in db_his.lisHospitalLaboratoryItem select new ClassItem { HLIRowid = lhli.HLIRowid, HLITitleName = lhli.HLITitleName, HLIUnit = lhli.HLIUnit }).ToList(); ViewBag.ClassItem = db_lhli; } return(View(data)); } else { RedirectToAction("LoginV2", "Account"); } //if (!String.IsNullOrEmpty(HospID) && !String.IsNullOrEmpty(PTIdno)) //{ // return View(data); //} return(View()); }
public JsonResult PatientBase(string HospID, string strUserId) { List <string> myLists = new List <string>(); if (!String.IsNullOrEmpty(HospID) && !String.IsNullOrEmpty(strUserId)) { var db_DHOUser = (from cms2 in db_zmcmsv2.DHO_Users where cms2.user_id == strUserId && cms2.org_code == "TW" + HospID select new { cms2.user_id }).AsEnumerable(); string sDHOUser = "******"; if (db_DHOUser.Count() > 0) { sDHOUser = "******"; } GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + HospID, userid, password, LIS_HISEntities_String)); var db_patient = (from p in db_his.hisPatient //where p.id == strUserId where p.PTIdno == strUserId select new { //p.strIdno, //p.strUserAccount, //p.strName, //p.datBirthday, //p.bolisMale, //p.strTel p.PTIdno, p.PTCode, p.PTChtName, p.PTBirthday, p.PTGender, p.PTHomePhone }).FirstOrDefault(); if (db_patient != null) { myLists.Add(db_patient.PTChtName); myLists.Add((db_patient.PTGender == "1" || db_patient.PTGender == "+") ? "男" : "女"); // 取得病人姓名 //ViewBag.PatientName = db_patient.strName; // 取得病人姓名 //ViewBag.Gender = db_patient.bolisMale == true ? "男" : "女"; // 計算年齡 CAge myAge = GetCalculateAge((DateTime)db_patient.PTBirthday, DateTime.Now); string sAge = myAge.Years + " 歲 " + myAge.Months + " 個月又 " + myAge.Days + " 天 "; string sMyAge = myAge.Years.ToString(); myLists.Add(sAge); // 取該病人的量測資料 var db_bodymeasure = (from b in db_antifat.body_measure where b.strUserAccount == db_patient.PTIdno && (b.floWeight > 0 && b.floHeight > 0) orderby b.datRecordTime descending select new { b.datRecordTime, b.floHeight, b.floWeight }).FirstOrDefault(); if (db_bodymeasure != null) { myLists.Add(((DateTime)db_bodymeasure.datRecordTime).ToString("yyyy-MM-dd")); myLists.Add(db_bodymeasure.floHeight.ToString()); myLists.Add(db_bodymeasure.floWeight.ToString()); } else { myLists.Add("N/A"); myLists.Add("0"); myLists.Add("0"); } myLists.Add(db_patient.PTHomePhone); myLists.Add(sMyAge); myLists.Add(sDHOUser); } } return(Json(myLists, JsonRequestBehavior.AllowGet)); }
private DataTable GetDataTable(string HospID, string sPTIdno, string sJsonString) { //string sHospID = "3532040438"; //sPTRowid = "8bb5060f-dcff-448f-8c59-8351802232a5"; if (String.IsNullOrEmpty(HospID) && Session["HospID"] != null) { HospID = Session["HospID"].ToString(); } var dataTable = new DataTable(); if (!String.IsNullOrEmpty(HospID) && !String.IsNullOrEmpty(sJsonString)) { string sPattern = @"[\W*]"; GetLink(); LIS_HISEntities db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs2, "his" + HospID, userid, password, LIS_HISEntities_String)); // 序列化 LisClassTemplate db_data = JsonConvert.DeserializeObject <LisClassTemplate>(sJsonString); // 存放結果清單 List <string> myLists = new List <string>(); if (db_data != null) { if (String.IsNullOrEmpty(HospID)) { HospID = Session["HospID"].ToString(); } if (!String.IsNullOrEmpty(sPTIdno)) { string sCommand = @"SELECT FORMAT(PLMApplyDate,'yyyy-MM-dd') '檢驗日期', "; string sIN = String.Empty; foreach (var db in db_data.Data) { string sPLDCode = db.PLDCode; // 取得檢驗項目名稱(簡稱) var db_lisHospitalLaboratoryItem = (from lhli in db_his.lisHospitalLaboratoryItem where lhli.HLICode == sPLDCode select new { lhli.HLITitleName }).First(); string sPLDName = ""; if (db_lisHospitalLaboratoryItem != null) { sPLDName = db_lisHospitalLaboratoryItem.HLITitleName.Trim(); sPLDName = Regex.Replace(sPLDName, sPattern, "_"); sCommand += "[" + sPLDCode + "] '" + sPLDName + "', "; //sCommand += "[" + sPLDCode + "], "; sIN += "[" + sPLDCode + "],"; } } sCommand = sCommand.Trim().TrimEnd(','); sIN = sIN.TrimEnd(','); sCommand += @" FROM ( SELECT PLMApplyDate, PLDCode, PLDValue FROM lisPatientLaboratoryMaster lplm join lisPatientLaboratoryDetail lpld on lplm.PLMRowid = lpld.PLMRowid where lplm.PLMPTIdno = '{0}' group by lplm.PLMApplyDate, PLDCode, PLDValue ) as GroupTable PIVOT ( MAX(PLDValue) FOR PLDCode IN (" + sIN + @") ) AS PivotTable"; string sConn = string.Format(ConfigurationManager.ConnectionStrings["HIS_ConnectionString"].ConnectionString, "his" + HospID); string sSQLString = String.Format(sCommand, sPTIdno); using (var dataAdapter = new SqlDataAdapter(sSQLString, sConn)) { dataAdapter.Fill(dataTable); dataAdapter.FillSchema(dataTable, SchemaType.Mapped); } } } } return(dataTable); }
/// <summary> /// 推送病人檢驗資料至名醫實時通APP /// </summary> /// <param name="HospID">醫事機構代碼</param> /// <param name="UserId">使用者身份證ID</param> /// <param name="PLMRowid">檢驗主檔資料序號</param> /// <returns> /// sReturnCode:回應代碼 /// 00=推送成功 /// 01=推送成功,但寫log失敗 /// 900=沒授權 /// 901=取不到 Token /// 902=取不到病人的檢驗資料 /// 998=Get Token發生了 exception 狀況 /// 999=推送失敗 /// </returns> public string PushDHO(string HospID, string UserId, string PLMRowid) { string sReturnCode = String.Empty; string sOrg_code = "TW" + HospID; #region 切換醫療機構所屬資料庫 LIS_HISEntities db_his = new LIS_HISEntities(); GetLink(); db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs, "his" + HospID, userid, password, @"res://*/Models.LIS_HISModel.csdl|res://*/Models.LIS_HISModel.ssdl|res://*/Models.LIS_HISModel.msl")); #endregion // 確認傳進來的病人是否有在名醫實時通裡面授權 // 2021-03-16 修正此病人可能有一隻手機以上並註冊一個以上的帳號,所以,改成以迴圈方式處理 var db_dho = (from du in db_zmcms.DHO_Users where du.user_id == UserId && du.org_code == sOrg_code select new { du.org_code, du.dho_uid, du.user_id }); foreach (var dt_dho_uid in db_dho) { #region 設定 Json 類別及相關變數初值 GENERAL db_general = new GENERAL(); db_general = null; List<EXAMS> listEXAMS = new List<EXAMS>(); List<EXAMITEMS> listEXAMITEMS = new List<EXAMITEMS>(); LISDATA db_lisdata = new LISDATA(); List<USER> listUser = new List<USER>(); string access_token = String.Empty; string sHospID = HospID; // 病人所屬的醫事機構代碼 string sHospName = String.Empty; // 病人所屬的醫事機構名稱 string sUserId = UserId; // 病人的資料 id string sDHOUid = dt_dho_uid.dho_uid; // 病人的 DHO uid #endregion if (dt_dho_uid != null) // 表示名醫實時通裡面有資料可以推播 { // 開始傳送檢驗資料 #region 取得醫事機構名稱 var db_sh = (from sh in db_zmcms.sysHospital where sh.HospID == sHospID select new { sh.HospName }).First(); if (db_sh != null) { sHospName = db_sh.HospName; } #endregion // 取得病人的檢驗資料及檢驗數值。 var lis_result = from lplm in db_his.lisPatientLaboratoryMaster where lplm.PLMRowid == PLMRowid join lpld in db_his.lisPatientLaboratoryDetail on lplm.PLMRowid equals lpld.PLMRowid join lhli in db_his.lisHospitalLaboratoryItem on lpld.PLDCode equals lhli.HLICode where lhli.LLISubRowid != null && lhli.LLISubRowid != "" join lli in db_his.lisLaboratoryItem on lhli.LLISubRowid equals lli.LLIRowid select new { lli.LLINhiCode, lli.LLIUnit, lhli.LLISubRowid, lplm.PLMPTIdno, lplm.PLMPTName, lplm.PLMApplyDate, lpld.PLDCode, lpld.PLDName, lpld.PLDValue, lpld.PLDStrValue }; // 若有檢驗資料執行下面程序 if (lis_result != null) { DateTime dtPLMApplyDate = DateTime.Now; foreach (var dt_lis in lis_result) { dtPLMApplyDate = (DateTime)dt_lis.PLMApplyDate; listEXAMITEMS.Add(new EXAMITEMS { exam_item_id = dt_lis.LLINhiCode, prefered_unit = "", //dt_lis.LLIUnit, si_value = (String.IsNullOrEmpty(dt_lis.PLDStrValue)) ? dt_lis.PLDValue.ToString() : "", cu_value = (String.IsNullOrEmpty(dt_lis.PLDStrValue)) ? dt_lis.PLDValue.ToString() : "", cu_string = (String.IsNullOrEmpty(dt_lis.PLDStrValue)) ? "" : dt_lis.PLDStrValue.Replace('(',' ').TrimStart(), si_string = (String.IsNullOrEmpty(dt_lis.PLDStrValue)) ? "" : dt_lis.PLDStrValue.Replace(')', ' ').TrimEnd() }); } if (listEXAMITEMS.Count > 0) { listEXAMS.Add(new EXAMS { resource_id = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds(), exam_name = sHospID + " " + sHospName, exam_date = dtPLMApplyDate.ToString("yyyy-MM-dd HH:mm:ss"), exam_items = listEXAMITEMS }); listUser.Add(new USER { dho_uid = sDHOUid, general = db_general, exams = listEXAMS }); } } // 如果上面的檢驗有取到資料則執行下面的程序 if (listUser.Count > 0) { // Get Access_Token // var access_token = myDHOClass.GetAccessTokens("TW" + sHospID + "*"); // var access_token = myDHOClass.GetAccessTokens("CMSTEST001*"); // Get Access_Token try { access_token = myDHOClass.GetAccessTokens("TW" + sHospID + "*"); if (!String.IsNullOrEmpty(access_token)) { db_lisdata.access_token = access_token; db_lisdata.nrange = "NR_YEADONG"; db_lisdata.users = listUser; LISJSONDATA gt = new LISJSONDATA(); gt.data = JsonConvert.SerializeObject(db_lisdata); string sJsonString = JsonConvert.SerializeObject(gt); // 推送資料 sReturnCode = Post2DHO(sJsonString); } else { sReturnCode = "901"; } } catch (Exception e) { sReturnCode = e.ToString(); sReturnCode = "998"; } } else { sReturnCode = "902"; } // 無論有無推播都要把 listUser 清空. listUser.Clear(); } else { sReturnCode = "900"; } // 無論推送成功否一律寫 Log, EF SaveData try { lisDHOLog dhol = new lisDHOLog(); dhol.DHORowid = Guid.NewGuid().ToString(); dhol.DHOHospID = HospID; dhol.DHOPTRowid = UserId; dhol.DHOResourceID = listEXAMS.First().resource_id; dhol.DHOExamName = listEXAMS.First().exam_name; dhol.DHOExamDate = listEXAMS.First().exam_date; dhol.DHOExamItems = JsonConvert.SerializeObject(listEXAMS.First().exam_items); dhol.DHOCode = sReturnCode; dhol.DHOSendDateTime = DateTime.Now; dhol.DHOSendType = "M"; db_his.lisDHOLog.Add(dhol); db_his.SaveChanges(); } catch (Exception e) { sReturnCode = e.ToString(); sReturnCode = "01"; } } return (sReturnCode); }
/// <summary> /// 推送病人檢驗資料至名醫實時通APP /// </summary> /// <param name="HospID">醫事機構代碼</param> /// <param name="UserId">使用者身份證ID</param> /// <param name="PLMRowid">檢驗主檔資料序號</param> /// <returns> /// sReturnCode:回應代碼 /// 00=推送成功 /// 01=推送成功,但寫log失敗 /// 900=沒授權 /// 901=取不到 Token /// 902=取不到病人的檢驗資料 /// 998=Get Token發生了 exception 狀況 /// 999=推送失敗 /// </returns> public string PushDHO(string HospID, string UserId, string PLMRowid) { string sReturnCode = String.Empty; string sOrg_code = "TW" + HospID; // 2021-04-14 修正有下列字樣時在Post至DHO的時候 strValue 需轉成 "-" string[] sMinus = { "Non-reactive", "NOT FOUND", "(-)", "NORMAL" }; string[] sPlus = { "(+)" }; #region 切換醫療機構所屬資料庫 LIS_HISEntities db_his = new LIS_HISEntities(); GetLink(); db_his = new LIS_HISEntities(myClass.GetSQLConnectionString(dbs, "his" + HospID, userid, password, @"res://*/Models.LIS_HISModel.csdl|res://*/Models.LIS_HISModel.ssdl|res://*/Models.LIS_HISModel.msl")); #endregion // 確認醫事機構所屬的名醫實時通格式,若沒設定格式就不推直接給 Error Code var db_DROnline = (from sh in db_zmcms.sysHospital where sh.HospID == HospID join shp in db_zmcms.sysHospitalParam on sh.HospRowid equals shp.HospRowid select new { shp.HospDrOnline }).First(); if (db_DROnline != null) { string sHospRowid = String.Empty; string sDrOnline = db_DROnline.HospDrOnline.Trim(); // 確認傳進來的病人是否有在名醫實時通裡面授權 // 2021-03-16 修正此病人可能有一隻手機以上並註冊一個以上的帳號,所以,改成迴圈方式處理 var db_dho = (from du in db_zmcms.DHO_Users where du.user_id == UserId && du.org_code == sOrg_code select new { du.org_code, du.dho_uid, du.user_id }); foreach (var dt_dho_uid in db_dho) { #region 設定 Json 類別及相關變數初值 GENERAL db_general = new GENERAL(); db_general = null; List <EXAMS> listEXAMS = new List <EXAMS>(); List <EXAMITEMS> listEXAMITEMS = new List <EXAMITEMS>(); LISDATA db_lisdata = new LISDATA(); List <USER> listUser = new List <USER>(); string access_token = String.Empty; string sHospID = HospID; // 病人所屬的醫事機構代碼 string sHospName = String.Empty; // 病人所屬的醫事機構名稱 string sUserId = UserId; // 病人的資料 id string sDHOUid = dt_dho_uid.dho_uid; // 病人的 DHO uid #endregion if (dt_dho_uid != null) // 表示名醫實時通裡面有資料可以推播 { // 開始傳送檢驗資料 #region 取得醫事機構名稱 var db_sh = (from sh in db_zmcms.sysHospital where sh.HospID == sHospID select new { sh.HospRowid, sh.HospName }).First(); if (db_sh != null) { sHospRowid = db_sh.HospRowid; sHospName = db_sh.HospName; } #endregion // 20210623 修正取得檢驗項目來源 // 需考慮一家醫事機構在 lisLaboratorySchedule 會有二筆以上的設定 var db_sche = (from sche in db_zmlis.lisLaboratorySchedule where sche.HospRowid == sHospRowid join llm in db_zmlis.lisLaboratoryMaster on sche.LLMRowid equals llm.LLMRowid join lhli in db_zmlis.lisHospitalLaboratoryItem on llm.LLMRowid equals lhli.LLMRowid where llm.LLMFormat == "XML" && lhli.LLISubRowid != null join lli in db_zmlis.lisLaboratoryItem on lhli.LLISubRowid equals lli.LLIRowid select new { lli.LLINhiCode, lli.LLIUnit, lhli.HLICode, lhli.LLISubRowid }).AsEnumerable(); // 把資料轉成 DataTable //DataTable dt_sche = myClass.LinqQueryToDataTable(db_sche); // 取得病人的檢驗資料及檢驗數值。 var db_result = (from lplm in db_his.lisPatientLaboratoryMaster where lplm.PLMRowid == PLMRowid join lpld in db_his.lisPatientLaboratoryDetail on lplm.PLMRowid equals lpld.PLMRowid //join lhli in db_his.lisHospitalLaboratoryItem on //join lhli in dt_sche on //lpld.PLDCode equals lhli.HLICode //where lhli.LLISubRowid != null && lhli.LLISubRowid != "" //join lli in db_his.lisLaboratoryItem on lhli.LLISubRowid equals lli.LLIRowid select new { //lli.LLINhiCode, //lli.LLIUnit, //lhli.LLISubRowid, lplm.PLMPTIdno, lplm.PLMPTName, lplm.PLMApplyDate, lpld.PLDCode, lpld.PLDName, lpld.PLDValue, PLDStrValue = (sMinus.Contains(lpld.PLDStrValue)) ? "-" : (sPlus.Contains(lpld.PLDStrValue)) ? "+" : lpld.PLDStrValue }).AsEnumerable(); // 把資料轉成 DataTable //DataTable dt_result = myClass.LinqQueryToDataTable(db_result); var lis_result = from a in db_result join b in db_sche on a.PLDCode equals b.HLICode where b.LLISubRowid != null && b.LLISubRowid != "" select new { b.LLINhiCode, b.LLIUnit, b.LLISubRowid, a.PLMPTIdno, a.PLMPTName, a.PLMApplyDate, a.PLDCode, a.PLDName, a.PLDValue, a.PLDStrValue }; // 若有檢驗資料執行下面程序 if (lis_result != null) { DateTime dtPLMApplyDate = DateTime.Now; foreach (var dt_lis in lis_result) { dtPLMApplyDate = (DateTime)dt_lis.PLMApplyDate; listEXAMITEMS.Add(new EXAMITEMS { exam_item_id = dt_lis.LLINhiCode, prefered_unit = "", //dt_lis.LLIUnit, si_value = (String.IsNullOrEmpty(dt_lis.PLDStrValue)) ? dt_lis.PLDValue.ToString() : "", cu_value = (String.IsNullOrEmpty(dt_lis.PLDStrValue)) ? dt_lis.PLDValue.ToString() : "", cu_string = (String.IsNullOrEmpty(dt_lis.PLDStrValue)) ? "" : dt_lis.PLDStrValue, si_string = (String.IsNullOrEmpty(dt_lis.PLDStrValue)) ? "" : dt_lis.PLDStrValue }); } if (listEXAMITEMS.Count > 0) { listEXAMS.Add(new EXAMS { resource_id = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds(), exam_name = sHospID + " " + sHospName, exam_date = dtPLMApplyDate.ToString("yyyy-MM-dd HH:mm:ss"), exam_items = listEXAMITEMS }); listUser.Add(new USER { dho_uid = sDHOUid, general = db_general, exams = listEXAMS }); } } // 如果上面的檢驗有取到資料則執行下面的程序 if (listUser.Count > 0) { // Get Access_Token // var access_token = myDHOClass.GetAccessTokens("TW" + sHospID + "*"); // var access_token = myDHOClass.GetAccessTokens("CMSTEST001*"); // Get Access_Token try { access_token = myDHOClass.GetAccessTokens("TW" + sHospID + "*"); if (!String.IsNullOrEmpty(access_token)) { db_lisdata.access_token = access_token; //db_lisdata.nrange = "NR_YEADONG"; // 亞東介接參數 db_lisdata.nrange = sDrOnline; db_lisdata.users = listUser; LISJSONDATA gt = new LISJSONDATA(); gt.data = JsonConvert.SerializeObject(db_lisdata); string sJsonString = JsonConvert.SerializeObject(gt); // 推送資料 sReturnCode = Post2DHO(sJsonString); } else { sReturnCode = "91"; } } catch (Exception e) { sReturnCode = e.ToString(); sReturnCode = "93"; } } else { sReturnCode = "92"; } // 無論有無推播都要把 listUser 清空. listUser.Clear(); } else { sReturnCode = "90"; } // 無論推送成功否一律寫 Log, EF SaveData try { lisDHOLog dhol = new lisDHOLog(); dhol.DHORowid = Guid.NewGuid().ToString(); dhol.DHOHospID = HospID; dhol.DHOPTRowid = UserId; dhol.DHOResourceID = listEXAMS.First().resource_id; dhol.DHOExamName = listEXAMS.First().exam_name; dhol.DHOExamDate = listEXAMS.First().exam_date; dhol.DHOExamItems = JsonConvert.SerializeObject(listEXAMS.First().exam_items); dhol.DHOCode = sReturnCode; dhol.DHOSendDateTime = DateTime.Now; dhol.DHOSendType = "M"; db_his.lisDHOLog.Add(dhol); db_his.SaveChanges(); } catch (Exception e) { //sReturnCode = e.ToString(); sReturnCode = sReturnCode + "01"; } } } else { // 該醫事機構沒有設定介接參數 sReturnCode = "98"; } // sReturnCode : // 00 : 成功 // 11 : Error // 99 : 檢驗資料與名醫實時通App傳輸當中出現問題 // 98 : 該醫事機構沒有設定介接參數 // sReturnCode+01 : 後二碼01表示寫 Log 資料失敗 // 90 : 名醫實時通裡面沒有資料可以推播 // 92 : 檢驗沒有取到資料 // 93 : 介接名醫實時通API時系統出現例外狀況 // 91 : Access Token 取得失敗 return(sReturnCode); }