예제 #1
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (this.dataGridView1.Rows.Count <= 0)
            {
                MessageBoxEx.ShowMessage("记录为空");
                return;
            }
            GlobalMethods.UI.SetCursor(this, Cursors.Default);
            PatVisitInfo patVisitLog = new PatVisitInfo();

            patVisitLog.PATIENT_ID = this.txtPatientID.Text;
            patVisitLog.VISIT_ID   = this.txtVisitID.Text;
            short               shRet = QcTimeRecordAccess.Instance.GetPatVisitLog(this.txtPatientID.Text, this.txtVisitID.Text, ref patVisitLog);
            DateTime            now   = DateTime.Now;
            List <QcTimeRecord> lstExitQCTimeRecord = new List <QcTimeRecord>();

            QcTimeRecordAccess.Instance.GetQcTimeRecords(this.txtPatientID.Text, this.txtVisitID.Text, ref lstExitQCTimeRecord);
            List <QcTimeRecord> lstQcTimeRecord = new List <QcTimeRecord>();

            foreach (DataGridViewRow item in this.dataGridView1.Rows)
            {
                TimeCheckResult resultInfo = item.Tag as TimeCheckResult;
                if (resultInfo == null)
                {
                    continue;
                }
                QcTimeRecord qcTimeRecord = new QcTimeRecord();

                qcTimeRecord.BeginDate      = resultInfo.StartTime;
                qcTimeRecord.CheckDate      = now;
                qcTimeRecord.CheckName      = "系统自动";
                qcTimeRecord.CreateID       = resultInfo.CreatorID;
                qcTimeRecord.CreateName     = resultInfo.CreatorName;
                qcTimeRecord.DeptInCharge   = patVisitLog.DEPT_CODE;
                qcTimeRecord.DeptStayed     = patVisitLog.DEPT_NAME;
                qcTimeRecord.DocID          = resultInfo.DocID;
                qcTimeRecord.DocTitle       = resultInfo.DocTitle;
                qcTimeRecord.DoctorInCharge = patVisitLog.INCHARGE_DOCTOR;
                qcTimeRecord.DocTypeID      = resultInfo.DocTypeID;
                qcTimeRecord.DocTypeName    = resultInfo.DocTypeName;
                qcTimeRecord.EndDate        = resultInfo.EndTime;
                qcTimeRecord.EventID        = resultInfo.EventID;
                qcTimeRecord.EventName      = resultInfo.EventName;
                qcTimeRecord.EventTime      = resultInfo.EventTime;
                qcTimeRecord.PatientID      = patVisitLog.PATIENT_ID;
                qcTimeRecord.PatientName    = patVisitLog.PATIENT_NAME;
                qcTimeRecord.Point          = resultInfo.QCScore;
                qcTimeRecord.DischargeTime  = patVisitLog.DISCHARGE_TIME;
                qcTimeRecord.QcExplain      = resultInfo.ResultDesc;
                qcTimeRecord.IsVeto         = resultInfo.IsVeto;
                if (resultInfo.WrittenState == WrittenState.Early)
                {
                    qcTimeRecord.QcResult = SystemData.WrittenState.Early;
                }
                if (resultInfo.WrittenState == WrittenState.Normal)
                {
                    qcTimeRecord.QcResult = SystemData.WrittenState.Normal;
                }
                if (resultInfo.WrittenState == WrittenState.Timeout)
                {
                    qcTimeRecord.QcResult = SystemData.WrittenState.Timeout;
                }
                if (resultInfo.WrittenState == WrittenState.Unwrite)
                {
                    //根据海总需求,将未书写的文书分成两种状态:一种是未书写,另一种是正常未书写。第一种代表已经超时了,需要进行扣分。
                    if (resultInfo.EndTime < now)
                    {
                        //病历未书写超过截止时间,状态为未书写超时
                        qcTimeRecord.QcResult = SystemData.WrittenState.Unwrite;
                    }
                    else
                    {
                        qcTimeRecord.QcResult = SystemData.WrittenState.UnwriteNormal;
                    }
                }
                // qcTimeRecord.QcResult = SystemData.WrittenState.Unwrite;
                qcTimeRecord.RecNo      = "0"; //未做处理
                qcTimeRecord.RecordTime = resultInfo.RecordTime;
                qcTimeRecord.DocTime    = resultInfo.DocTime;
                qcTimeRecord.VisitID    = resultInfo.VisitID;
                if (!resultInfo.IsRepeat)
                {
                    qcTimeRecord.QcExplain = string.Format("病人{0}{1},{2}内书写{3}"
                                                           , resultInfo.EventTime.ToString("yyyy-M-d HH:mm")
                                                           , resultInfo.EventName, resultInfo.WrittenPeriod, resultInfo.DocTypeName);
                }
                else
                {
                    qcTimeRecord.QcExplain = string.Format("病人{0}{1},每{2}书写一次{3}"
                                                           , resultInfo.EventTime.ToString("yyyy-M-d HH:mm")
                                                           , resultInfo.EventName, resultInfo.WrittenPeriod, resultInfo.DocTypeName);
                }

                //判断是否已短信通知,海总需求:时效记录已存在的会写入个人统计表,进行短信通知,所以主键相同的已存数据将标记为短信通知,通过该字段避免写入统计到个人的表从而解决重复短信发送的问题。
                if (lstExitQCTimeRecord != null && lstExitQCTimeRecord.Count > 0)
                {
                    foreach (QcTimeRecord exitTimeRecord in lstExitQCTimeRecord)
                    {
                        //QCTimeRecord主键为PatientId,VisitID,DocTypeID,BeginDate,EndDate,QcResult,EventTime
                        if (exitTimeRecord.PatientID == qcTimeRecord.PatientID &&
                            exitTimeRecord.VisitID == qcTimeRecord.VisitID &&
                            exitTimeRecord.DocTypeID == qcTimeRecord.DocTypeID &&
                            exitTimeRecord.BeginDate == qcTimeRecord.BeginDate &&
                            exitTimeRecord.EndDate == qcTimeRecord.EndDate &&
                            exitTimeRecord.QcResult == qcTimeRecord.QcResult &&
                            exitTimeRecord.EventTime == qcTimeRecord.EventTime)
                        {
                            //已存在的记录为当天的,则短信通知仍旧为未通知,主要是测试中会在当天运行两次以上
                            //实际情况是每日只会运行一次
                            if (qcTimeRecord.CheckDate.ToShortDateString() !=
                                exitTimeRecord.CheckDate.ToShortDateString())
                            {
                                qcTimeRecord.MessageNotify = true;
                            }
                        }
                    }
                }
                lstQcTimeRecord.Add(qcTimeRecord);
            }
            shRet = QcTimeRecordAccess.Instance.SavePatientQcTimeRecord(patVisitLog.PATIENT_ID, patVisitLog.VISIT_ID, lstQcTimeRecord);
            if (shRet != SystemData.ReturnValue.OK)
            {
                LogManager.Instance.WriteLog(string.Format("病人{0} 时效质控记录生成失败", patVisitLog.PATIENT_NAME));
            }
            else
            {
                MessageBoxEx.ShowMessage("保存成功");
                LogManager.Instance.WriteLog(string.Format("病人{0} 时效质控记录生成成功", patVisitLog.PATIENT_NAME));
            }
            GlobalMethods.UI.SetCursor(this, Cursors.Default);
            this.ShowStatusMessage(null);
        }
예제 #2
0
        /// <summary>
        /// 时效质控超时记录表查询
        /// </summary>
        /// <returns>SystemData.ReturnValue</returns>
        public short GetQcTimeRecords(DateTime dtBeginTime, DateTime dtEndTime, string szQcResult
                                      , string szDeptCode, string szTimeType, ref List <QcTimeRecord> lstQcTimeRecords)
        {
            if (base.DataAccess == null)
            {
                return(SystemData.ReturnValue.PARAM_ERROR);
            }

            string szField = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20},{21},{22},{23},{24}"
                                           , SystemData.QcTimeRecordTable.BEGIN_DATE
                                           , SystemData.QcTimeRecordTable.CHECK_DATE
                                           , SystemData.QcTimeRecordTable.CHECKER_NAME
                                           , SystemData.QcTimeRecordTable.CREATE_ID
                                           , SystemData.QcTimeRecordTable.CREATE_NAME
                                           , SystemData.QcTimeRecordTable.DEPT_IN_CHARGE
                                           , SystemData.QcTimeRecordTable.DEPT_STAYED
                                           , SystemData.QcTimeRecordTable.DOC_ID
                                           , SystemData.QcTimeRecordTable.DOC_TITLE
                                           , SystemData.QcTimeRecordTable.DOCTOR_IN_CHARGE
                                           , SystemData.QcTimeRecordTable.DOCTYPE_ID
                                           , SystemData.QcTimeRecordTable.DOCTYPE_NAME
                                           , SystemData.QcTimeRecordTable.END_DATE
                                           , SystemData.QcTimeRecordTable.EVENT_ID
                                           , SystemData.QcTimeRecordTable.PATIENT_ID
                                           , SystemData.QcTimeRecordTable.PATIENT_NAME
                                           , SystemData.QcTimeRecordTable.POINT
                                           , SystemData.QcTimeRecordTable.QC_EXPLAIN
                                           , SystemData.QcTimeRecordTable.QC_RESULT
                                           , SystemData.QcTimeRecordTable.REC_NO
                                           , SystemData.QcTimeRecordTable.RECORD_TIME
                                           , SystemData.QcTimeRecordTable.VISIT_ID
                                           , SystemData.QcTimeRecordTable.EVENT_NAME
                                           , SystemData.QcTimeRecordTable.EVENT_TIME
                                           , SystemData.QcTimeRecordTable.DOC_TIME);

            string szCondition = String.Format("1=1");

            if (!string.IsNullOrEmpty(szTimeType))
            {
                szCondition = string.Format("{0} AND {1} >= {2} AND {1} <={3}"
                                            , szCondition
                                            , szTimeType
                                            , base.DataAccess.GetSqlTimeFormat(dtBeginTime)
                                            , base.DataAccess.GetSqlTimeFormat(dtEndTime)
                                            );
            }
            else
            {
                szCondition = string.Format("{0} AND {1} >= {2} AND {1} <={3}"
                                            , szCondition
                                            , SystemData.QcTimeRecordTable.CHECK_DATE
                                            , base.DataAccess.GetSqlTimeFormat(dtBeginTime)
                                            , base.DataAccess.GetSqlTimeFormat(dtEndTime)
                                            );
            }
            if (!GlobalMethods.Misc.IsEmptyString(szQcResult))
            {
                szCondition = string.Format("{0} AND {1} in({2})"
                                            , szCondition
                                            , SystemData.QcTimeRecordTable.QC_RESULT
                                            , szQcResult
                                            );
            }
            if (!GlobalMethods.Misc.IsEmptyString(szDeptCode))
            {
                szCondition = string.Format("{0} AND {1} = '{2}' "
                                            , szCondition
                                            , SystemData.QcTimeRecordTable.DEPT_IN_CHARGE
                                            , szDeptCode
                                            );
            }
            string szOrderBy = string.Format("{0},{1},{2}"
                                             , SystemData.QcTimeRecordTable.DEPT_IN_CHARGE, SystemData.QcTimeRecordTable.PATIENT_ID
                                             , SystemData.QcTimeRecordTable.VISIT_ID);

            string szSQL = string.Format(SystemData.SQL.SELECT_WHERE_ORDER_ASC, szField
                                         , SystemData.DataTable.QC_TIME_RECORD, szCondition, szOrderBy);



            IDataReader dataReader = null;

            try
            {
                dataReader = base.DataAccess.ExecuteReader(szSQL, CommandType.Text);
                if (dataReader == null || dataReader.IsClosed || !dataReader.Read())
                {
                    return(SystemData.ReturnValue.RES_NO_FOUND);
                }
                if (lstQcTimeRecords == null)
                {
                    lstQcTimeRecords = new List <QcTimeRecord>();
                }
                do
                {
                    QcTimeRecord record = new QcTimeRecord();
                    if (!dataReader.IsDBNull(0))
                    {
                        record.BeginDate = dataReader.GetDateTime(0);
                    }
                    if (!dataReader.IsDBNull(1))
                    {
                        record.CheckDate = dataReader.GetDateTime(1);
                    }
                    if (!dataReader.IsDBNull(2))
                    {
                        record.CheckName = dataReader.GetString(2);
                    }
                    if (!dataReader.IsDBNull(3))
                    {
                        record.CreateID = dataReader.GetString(3);
                    }
                    if (!dataReader.IsDBNull(4))
                    {
                        record.CreateName = dataReader.GetString(4);
                    }
                    if (!dataReader.IsDBNull(5))
                    {
                        record.DeptInCharge = dataReader.GetString(5);
                    }
                    if (!dataReader.IsDBNull(6))
                    {
                        record.DeptStayed = dataReader.GetString(6);
                    }
                    if (!dataReader.IsDBNull(7))
                    {
                        record.DocID = dataReader.GetString(7);
                    }
                    if (!dataReader.IsDBNull(8))
                    {
                        record.DocTitle = dataReader.GetString(8);
                    }
                    if (!dataReader.IsDBNull(9))
                    {
                        record.DoctorInCharge = dataReader.GetString(9);
                    }
                    if (!dataReader.IsDBNull(10))
                    {
                        record.DocTypeID = dataReader.GetString(10);
                    }
                    if (!dataReader.IsDBNull(11))
                    {
                        record.DocTypeName = dataReader.GetString(11);
                    }
                    if (!dataReader.IsDBNull(12))
                    {
                        record.EndDate = dataReader.GetDateTime(12);
                    }
                    if (!dataReader.IsDBNull(13))
                    {
                        record.EventID = dataReader.GetString(13);
                    }
                    if (!dataReader.IsDBNull(14))
                    {
                        record.PatientID = dataReader.GetString(14);
                    }
                    if (!dataReader.IsDBNull(15))
                    {
                        record.PatientName = dataReader.GetString(15);
                    }
                    if (!dataReader.IsDBNull(16))
                    {
                        record.Point = float.Parse(dataReader.GetValue(16).ToString());
                    }
                    if (!dataReader.IsDBNull(17))
                    {
                        record.QcExplain = dataReader.GetString(17);
                    }
                    if (!dataReader.IsDBNull(18))
                    {
                        record.QcResult = dataReader.GetValue(18).ToString();
                    }
                    if (!dataReader.IsDBNull(19))
                    {
                        record.RecNo = int.Parse(dataReader.GetValue(19).ToString());
                    }
                    if (!dataReader.IsDBNull(20))
                    {
                        record.RecordTime = dataReader.GetDateTime(20);
                    }
                    if (!dataReader.IsDBNull(21))
                    {
                        record.VisitID = dataReader.GetString(21);
                    }
                    if (!dataReader.IsDBNull(22))
                    {
                        record.EventName = dataReader.GetString(22);
                    }
                    if (!dataReader.IsDBNull(23))
                    {
                        record.EventTime = dataReader.GetDateTime(23);
                    }
                    if (!dataReader.IsDBNull(24))
                    {
                        record.DocTime = dataReader.GetDateTime(24);
                    }
                    lstQcTimeRecords.Add(record);
                } while (dataReader.Read());
                return(SystemData.ReturnValue.OK);
            }
            catch (Exception ex)
            {
                LogManager.Instance.WriteLog("DbAccess.GetQcTimeRecords", new string[] { "szGroupName", "szConfigName", "SQL" }
                                             , new object[] { szSQL }, "没有查询到记录!", ex);
                return(SystemData.ReturnValue.EXCEPTION);
            }
            finally { base.DataAccess.CloseConnnection(false); }
        }
예제 #3
0
        /// <summary>
        /// 时效质控记录表查询
        /// </summary>
        /// <returns>SystemData.ReturnValue</returns>
        public bool GetQcTimeRecords(ref List <QcTimeRecord> lstQcTimeRecords)
        {
            if (base.DataAccess == null)
            {
                return(false);
            }

            string szField = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20},{21},{22},{23},{24}"
                                           , SystemData.QcTimeRecordTable.BEGIN_DATE
                                           , SystemData.QcTimeRecordTable.CHECK_DATE
                                           , SystemData.QcTimeRecordTable.CHECKER_NAME
                                           , SystemData.QcTimeRecordTable.CREATE_ID
                                           , SystemData.QcTimeRecordTable.CREATE_NAME
                                           , SystemData.QcTimeRecordTable.DEPT_IN_CHARGE
                                           , SystemData.QcTimeRecordTable.DEPT_STAYED
                                           , SystemData.QcTimeRecordTable.DOC_ID
                                           , SystemData.QcTimeRecordTable.DOC_TITLE
                                           , SystemData.QcTimeRecordTable.DOCTOR_IN_CHARGE
                                           , SystemData.QcTimeRecordTable.DOCTYPE_ID
                                           , SystemData.QcTimeRecordTable.DOCTYPE_NAME
                                           , SystemData.QcTimeRecordTable.END_DATE
                                           , SystemData.QcTimeRecordTable.EVENT_ID
                                           , SystemData.QcTimeRecordTable.PATIENT_ID
                                           , SystemData.QcTimeRecordTable.PATIENT_NAME
                                           , SystemData.QcTimeRecordTable.POINT
                                           , SystemData.QcTimeRecordTable.QC_EXPLAIN
                                           , SystemData.QcTimeRecordTable.QC_RESULT
                                           , SystemData.QcTimeRecordTable.REC_NO
                                           , SystemData.QcTimeRecordTable.RECORD_TIME
                                           , SystemData.QcTimeRecordTable.VISIT_ID
                                           , SystemData.QcTimeRecordTable.EVENT_NAME
                                           , SystemData.QcTimeRecordTable.EVENT_TIME
                                           , SystemData.QcTimeRecordTable.DOC_TIME);

            string szCondition = String.Format("1=1");

            string szSQL = null;

            szSQL = string.Format(SystemData.SQL.SELECT_WHERE
                                  , szField, SystemData.DataTable.QC_TIME_RECORD, szCondition);

            IDataReader dataReader = null;

            try
            {
                dataReader = base.DataAccess.ExecuteReader(szSQL, CommandType.Text);
                if (dataReader == null || dataReader.IsClosed || !dataReader.Read())
                {
                    return(true);
                }
                if (lstQcTimeRecords == null)
                {
                    lstQcTimeRecords = new List <QcTimeRecord>();
                }
                do
                {
                    QcTimeRecord record = new QcTimeRecord();
                    if (!dataReader.IsDBNull(0))
                    {
                        record.BeginDate = dataReader.GetDateTime(0);
                    }
                    if (!dataReader.IsDBNull(1))
                    {
                        record.CheckDate = dataReader.GetDateTime(1);
                    }
                    if (!dataReader.IsDBNull(2))
                    {
                        record.CheckName = dataReader.GetString(2);
                    }
                    if (!dataReader.IsDBNull(3))
                    {
                        record.CreateID = dataReader.GetString(3);
                    }
                    if (!dataReader.IsDBNull(4))
                    {
                        record.CreateName = dataReader.GetString(4);
                    }
                    if (!dataReader.IsDBNull(5))
                    {
                        record.DeptInCharge = dataReader.GetString(5);
                    }
                    if (!dataReader.IsDBNull(6))
                    {
                        record.DeptStayed = dataReader.GetString(6);
                    }
                    if (!dataReader.IsDBNull(7))
                    {
                        record.DocID = dataReader.GetString(7);
                    }
                    if (!dataReader.IsDBNull(8))
                    {
                        record.DocTitle = dataReader.GetString(8);
                    }
                    if (!dataReader.IsDBNull(9))
                    {
                        record.DoctorInCharge = dataReader.GetString(9);
                    }
                    if (!dataReader.IsDBNull(10))
                    {
                        record.DocTypeID = dataReader.GetString(10);
                    }
                    if (!dataReader.IsDBNull(11))
                    {
                        record.DocTypeName = dataReader.GetString(11);
                    }
                    if (!dataReader.IsDBNull(12))
                    {
                        record.EndDate = dataReader.GetDateTime(12);
                    }
                    if (!dataReader.IsDBNull(13))
                    {
                        record.EventID = dataReader.GetString(13);
                    }
                    if (!dataReader.IsDBNull(14))
                    {
                        record.PatientID = dataReader.GetString(14);
                    }
                    if (!dataReader.IsDBNull(15))
                    {
                        record.PatientName = dataReader.GetString(15);
                    }
                    if (!dataReader.IsDBNull(16))
                    {
                        record.Point = float.Parse(dataReader.GetValue(16).ToString());
                    }
                    if (!dataReader.IsDBNull(17))
                    {
                        record.QcExplain = dataReader.GetString(17);
                    }
                    if (!dataReader.IsDBNull(18))
                    {
                        record.QcResult = dataReader.GetValue(18).ToString();
                    }
                    if (!dataReader.IsDBNull(19))
                    {
                        record.RecNo = int.Parse(dataReader.GetValue(19).ToString());
                    }
                    if (!dataReader.IsDBNull(20))
                    {
                        record.RecordTime = dataReader.GetDateTime(20);
                    }
                    if (!dataReader.IsDBNull(21))
                    {
                        record.VisitID = dataReader.GetString(21);
                    }
                    if (!dataReader.IsDBNull(22))
                    {
                        record.EventName = dataReader.GetString(22);
                    }
                    if (!dataReader.IsDBNull(23))
                    {
                        record.EventTime = dataReader.GetDateTime(23);
                    }
                    if (!dataReader.IsDBNull(24))
                    {
                        record.DocTime = dataReader.GetDateTime(24);
                    }
                    lstQcTimeRecords.Add(record);
                } while (dataReader.Read());
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
            finally { base.DataAccess.CloseConnnection(false); }
        }
예제 #4
0
        public short GenerateTimeRecord(PatVisitInfo item, DateTime now)
        {
            short shRet = SystemData.ReturnValue.OK;

            if (string.IsNullOrEmpty(item.INCHARGE_DOCTOR))
            {
                string szDoctorIncharge = string.Empty;
                //通过病人视图无法取到责任医生,由于首页未录入造成,通过最近书写的一份文书去取
                shRet = EmrDocAccess.Instance.GetDoctorInChargeByEmrDoc(item.PATIENT_ID, item.VISIT_ID,
                                                                        ref szDoctorIncharge);
                if (shRet == SystemData.ReturnValue.OK)
                {
                    item.INCHARGE_DOCTOR = szDoctorIncharge;
                }
            }
            TimeCheckQuery timeCheckQuery = new TimeCheckQuery();

            timeCheckQuery.PatientID = item.PATIENT_ID;
            //timeCheckQuery.VisitID = item.VISIT_ID;
            //timeCheckQuery.VisitID = SystemParam.Instance.PatVisitLog.VISIT_ID;
            //编辑器VISIT_NO=VISIT_ID
            timeCheckQuery.VisitID     = item.VISIT_NO;
            timeCheckQuery.VisitNO     = item.VISIT_NO;
            timeCheckQuery.PatientName = item.PATIENT_NAME;
            timeCheckQuery.DeptCode    = item.DEPT_CODE;
            try
            {
                TimeCheckEngine.Instance.PerformTimeCheck(timeCheckQuery);
            }
            catch (Exception ex)
            {
                LogManager.Instance.WriteLog("TimeCheckEngine.Instance.PerformTimeCheck 时效接口调用失败", ex);

                return(SystemData.ReturnValue.EXCEPTION);
            }
            //获取已经保存在数据库QC_TIME_RECORD_T表里面的时效结果
            List <QcTimeRecord> lstExitQCTimeRecord = new List <QcTimeRecord>();

            QcTimeRecordAccess.Instance.GetQcTimeRecords(item.PATIENT_ID, item.VISIT_ID, ref lstExitQCTimeRecord);

            //保存时效质控分析结果
            List <TimeCheckResult> lstCheckResults = TimeCheckEngine.Instance.TimeCheckResults;

            if (lstCheckResults == null)
            {
                return(SystemData.ReturnValue.RES_NO_FOUND);
            }
            List <QcTimeRecord> lstQcTimeRecord = new List <QcTimeRecord>();

            for (int index = 0; index < lstCheckResults.Count; index++)
            {
                QcTimeRecord    qcTimeRecord = new QcTimeRecord();
                TimeCheckResult resultInfo   = lstCheckResults[index];
                resultInfo.VisitID          = item.VISIT_ID;
                qcTimeRecord.BeginDate      = resultInfo.StartTime;
                qcTimeRecord.CheckDate      = now;
                qcTimeRecord.CheckName      = "系统自动";
                qcTimeRecord.CreateID       = resultInfo.CreatorID;
                qcTimeRecord.CreateName     = resultInfo.CreatorName;
                qcTimeRecord.DeptInCharge   = item.DEPT_CODE;
                qcTimeRecord.DeptStayed     = item.DEPT_NAME;
                qcTimeRecord.DocID          = resultInfo.DocID;
                qcTimeRecord.DocTitle       = resultInfo.DocTitle;
                qcTimeRecord.DoctorInCharge = item.INCHARGE_DOCTOR;
                qcTimeRecord.DocTypeID      = resultInfo.DocTypeID;
                qcTimeRecord.DocTypeName    = resultInfo.DocTypeName;
                qcTimeRecord.EndDate        = resultInfo.EndTime;
                qcTimeRecord.EventID        = resultInfo.EventID;
                qcTimeRecord.EventName      = resultInfo.EventName;
                qcTimeRecord.EventTime      = resultInfo.EventTime;
                qcTimeRecord.PatientID      = item.PATIENT_ID;
                qcTimeRecord.PatientName    = item.PATIENT_NAME;
                qcTimeRecord.Point          = resultInfo.QCScore;
                qcTimeRecord.DischargeTime  = item.DISCHARGE_TIME;
                qcTimeRecord.QcExplain      = resultInfo.ResultDesc;
                qcTimeRecord.IsVeto         = resultInfo.IsVeto;
                if (resultInfo.WrittenState == WrittenState.Early)
                {
                    qcTimeRecord.QcResult = SystemData.WrittenState.Early;
                }
                if (resultInfo.WrittenState == WrittenState.Normal)
                {
                    qcTimeRecord.QcResult = SystemData.WrittenState.Normal;
                }
                if (resultInfo.WrittenState == WrittenState.Timeout)
                {
                    qcTimeRecord.QcResult = SystemData.WrittenState.Timeout;
                }
                if (resultInfo.WrittenState == WrittenState.Unwrite)
                {
                    //根据海总需求,将未书写的文书分成两种状态:一种是未书写,另一种是正常未书写。第一种代表已经超时了,需要进行扣分。
                    if (resultInfo.EndTime < now)
                    {
                        //病历未书写超过截止时间,状态为未书写超时
                        qcTimeRecord.QcResult = SystemData.WrittenState.Unwrite;
                    }
                    else
                    {
                        qcTimeRecord.QcResult = SystemData.WrittenState.UnwriteNormal;
                    }
                }
                // qcTimeRecord.QcResult = SystemData.WrittenState.Unwrite;
                qcTimeRecord.RecNo      = "0"; //未做处理
                qcTimeRecord.RecordTime = resultInfo.RecordTime;
                qcTimeRecord.DocTime    = resultInfo.DocTime;
                qcTimeRecord.VisitID    = resultInfo.VisitID;
                if (!resultInfo.IsRepeat)
                {
                    qcTimeRecord.QcExplain = string.Format("病人{0}{1},{2}内书写{3}"
                                                           , resultInfo.EventTime.ToString("yyyy-M-d HH:mm")
                                                           , resultInfo.EventName, resultInfo.WrittenPeriod, resultInfo.DocTypeName);
                }
                else
                {
                    qcTimeRecord.QcExplain = string.Format("病人{0}{1},每{2}书写一次{3}"
                                                           , resultInfo.EventTime.ToString("yyyy-M-d HH:mm")
                                                           , resultInfo.EventName, resultInfo.WrittenPeriod, resultInfo.DocTypeName);
                }

                //判断是否已短信通知,海总需求:时效记录已存在的会写入个人统计表,进行短信通知,所以主键相同的已存数据将标记为短信通知,通过该字段避免写入统计到个人的表从而解决重复短信发送的问题。
                if (lstExitQCTimeRecord != null && lstExitQCTimeRecord.Count > 0)
                {
                    foreach (QcTimeRecord exitTimeRecord in lstExitQCTimeRecord)
                    {
                        //QCTimeRecord主键为PatientId,VisitID,DocTypeID,BeginDate,EndDate,QcResult,EventTime
                        if (exitTimeRecord.PatientID == qcTimeRecord.PatientID &&
                            exitTimeRecord.VisitID == qcTimeRecord.VisitID &&
                            exitTimeRecord.DocTypeID == qcTimeRecord.DocTypeID &&
                            exitTimeRecord.BeginDate == qcTimeRecord.BeginDate &&
                            exitTimeRecord.EndDate == qcTimeRecord.EndDate &&
                            exitTimeRecord.QcResult == qcTimeRecord.QcResult &&
                            exitTimeRecord.EventTime == qcTimeRecord.EventTime)
                        {
                            //已存在的记录为当天的,则短信通知仍旧为未通知,主要是测试中会在当天运行两次以上
                            //实际情况是每日只会运行一次
                            if (qcTimeRecord.CheckDate.ToShortDateString() !=
                                exitTimeRecord.CheckDate.ToShortDateString())
                            {
                                qcTimeRecord.MessageNotify = true;
                            }
                        }
                    }
                }
                lstQcTimeRecord.Add(qcTimeRecord);
            }
            shRet = QcTimeRecordAccess.Instance.SavePatientQcTimeRecord(item.PATIENT_ID, item.VISIT_ID, lstQcTimeRecord);
            if (shRet != SystemData.ReturnValue.OK)
            {
                LogManager.Instance.WriteLog(string.Format("病人{0} 时效质控记录生成失败", item.PATIENT_NAME));
            }
            return(shRet);
        }