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(""));
        }
Exemplo n.º 2
0
        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)));
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        // 檢驗表列式明細是依病人的歷年檢驗的所有項目做匯整(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)));
        }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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));
        }
Exemplo n.º 9
0
        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));
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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(""));
        }
Exemplo n.º 12
0
        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));
        }
Exemplo n.º 13
0
        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)
        }
Exemplo n.º 15
0
        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));
        }
Exemplo n.º 17
0
        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));
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
        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);
        }
Exemplo n.º 20
0
        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     = "&nbsp;";
                    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));
        }
Exemplo n.º 21
0
        //[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());
        }
Exemplo n.º 22
0
        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));
        }
Exemplo n.º 23
0
        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);
        }
Exemplo n.º 24
0
        /// <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);
        }
Exemplo n.º 25
0
        /// <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);
        }