Example #1
0
        /// <summary>
        /// 获取某份病历的最新质控记录
        /// </summary>
        /// <returns>SystemData.ReturnValue</returns>
        public short GetQCLogInfo(string szDocSetID, int nLogType, ref MedicalQcLog qcActionLog)
        {
            if (base.MedQCAccess == null)
            {
                return(SystemData.ReturnValue.PARAM_ERROR);
            }

            string szField = string.Format("{0},{1},{2},{3}"
                                           , SystemData.MedicalQCLogTable.DOC_SETID
                                           , SystemData.MedicalQCLogTable.CHECK_DATE
                                           , SystemData.MedicalQCLogTable.CHECKED_ID
                                           , SystemData.MedicalQCLogTable.CHECKED_BY);
            string szCondition = string.Format("{0} ='{1}' AND {2}={3}"
                                               , SystemData.MedicalQCLogTable.DOC_SETID, szDocSetID
                                               , SystemData.MedicalQCLogTable.LOG_TYPE, nLogType);
            string szSQL = string.Format(SystemData.SQL.SELECT_WHERE_ORDER_DESC, szField, SystemData.DataTable.MEDICAL_QC_LOG, szCondition
                                         , SystemData.MedicalQCLogTable.CHECK_DATE);

            IDataReader dataReader = null;

            try
            {
                dataReader = base.MedQCAccess.ExecuteReader(szSQL, CommandType.Text);
                if (dataReader == null || dataReader.IsClosed || !dataReader.Read())
                {
                    return(SystemData.ReturnValue.RES_NO_FOUND);
                }
                if (qcActionLog == null)
                {
                    qcActionLog = new MedicalQcLog();
                }
                if (!dataReader.IsDBNull(0))
                {
                    qcActionLog.DOC_SETID = dataReader.GetString(0);
                }
                if (!dataReader.IsDBNull(1))
                {
                    qcActionLog.CHECK_DATE = dataReader.GetDateTime(1);
                }
                if (!dataReader.IsDBNull(2))
                {
                    qcActionLog.CHECKED_ID = dataReader.GetString(2);
                }
                if (!dataReader.IsDBNull(3))
                {
                    qcActionLog.CHECKED_BY = dataReader.GetString(3);
                }


                return(SystemData.ReturnValue.OK);
            }
            catch (Exception ex)
            {
                LogManager.Instance.WriteLog("MedDocAccess.GetQCActionLogInfo", new string[] { "szSQL" }, new object[] { szSQL }, ex);
                return(SystemData.ReturnValue.EXCEPTION);
            }
            finally { base.MedQCAccess.CloseConnnection(false); }
        }
Example #2
0
        /// <summary>
        ///  病历质控系统,保存一条病案质量监控日志
        /// </summary>
        /// <param name="qcActionLog">病案质量监控日志</param>
        /// <returns>SystemData.ReturnValue</returns>
        public short Insert(MedicalQcLog qcActionLog)
        {
            if (qcActionLog == null)
            {
                LogManager.Instance.WriteLog("", new string[] { "timeQCRule" }
                                             , new object[] { qcActionLog }, "参数不能为空");
                return(SystemData.ReturnValue.PARAM_ERROR);
            }

            string szField = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12}"
                                           , SystemData.MedicalQCLogTable.CHECKED_BY
                                           , SystemData.MedicalQCLogTable.CHECKED_ID
                                           , SystemData.MedicalQCLogTable.CHECK_DATE
                                           , SystemData.MedicalQCLogTable.CHECK_TYPE
                                           , SystemData.MedicalQCLogTable.DEPT_CODE
                                           , SystemData.MedicalQCLogTable.DEPT_NAME
                                           , SystemData.MedicalQCLogTable.DEPT_STAYED
                                           , SystemData.MedicalQCLogTable.DOC_SETID
                                           , SystemData.MedicalQCLogTable.LOG_DESC
                                           , SystemData.MedicalQCLogTable.LOG_TYPE
                                           , SystemData.MedicalQCLogTable.PATIENT_ID
                                           , SystemData.MedicalQCLogTable.VISIT_ID
                                           , SystemData.MedicalQCLogTable.QC_MSG_CODE);

            string szValue = string.Format("'{0}','{1}',{2},{3},'{4}','{5}','{6}','{7}','{8}',{9},'{10}','{11}','{12}'"
                                           , qcActionLog.CHECKED_BY
                                           , qcActionLog.CHECKED_ID
                                           , base.MedQCAccess.GetSqlTimeFormat(qcActionLog.CHECK_DATE)
                                           , qcActionLog.CHECK_TYPE
                                           , qcActionLog.DEPT_CODE
                                           , qcActionLog.DEPT_NAME
                                           , qcActionLog.DEPT_STAYED
                                           , qcActionLog.DOC_SETID
                                           , qcActionLog.LOG_DESC
                                           , qcActionLog.LOG_TYPE
                                           , qcActionLog.PATIENT_ID
                                           , qcActionLog.VISIT_ID
                                           , qcActionLog.QC_MSG_CODE);

            string szSQL  = string.Format(SystemData.SQL.INSERT, SystemData.DataTable.MEDICAL_QC_LOG, szField, szValue);
            int    nCount = 0;

            try
            {
                nCount = base.MedQCAccess.ExecuteNonQuery(szSQL, CommandType.Text);
            }
            catch (Exception ex)
            {
                LogManager.Instance.WriteLog("", new string[] { "szSQL" }, new object[] { szSQL }, ex);
                return(SystemData.ReturnValue.EXCEPTION);
            }
            if (nCount <= 0)
            {
                LogManager.Instance.WriteLog("", new string[] { "szSQL" }, new object[] { szSQL }, "SQL语句执行后返回0!");
                return(SystemData.ReturnValue.EXCEPTION);
            }
            return(SystemData.ReturnValue.OK);
        }
Example #3
0
        /// <summary>
        /// 根据病人ID和就诊号获取病历最近一次被操作的相关信息
        /// </summary>
        ///<param name="szPatientID">病人ID</param>
        /// <param name="szVisitID">就诊号</param>
        /// <param name="nLogType">日志类型</param>
        /// <param name="nOperateType">病历操作类型</param>
        /// <param name="lstEmrLogs">病历读写日志信息列表</param>
        /// <returns>SystemData.ReturnValue</returns>
        public short GetQCLogInfo(string szPatientID, string szVisitID, int nLogType, int nOperateType, ref List <MedicalQcLog> lstQcLog)
        {
            if (base.MedQCAccess == null)
            {
                return(SystemData.ReturnValue.PARAM_ERROR);
            }

            string szField = string.Format("{0},MAX({1})"
                                           , SystemData.MedicalQCLogTable.DOC_SETID, SystemData.MedicalQCLogTable.CHECK_DATE);
            string szCondition = string.Format("{0} ='{1}' AND {2}='{3}' AND {4}={5} AND {6}={7}"
                                               , SystemData.MedicalQCLogTable.PATIENT_ID, szPatientID
                                               , SystemData.MedicalQCLogTable.VISIT_ID, szVisitID
                                               , SystemData.MedicalQCLogTable.LOG_TYPE, nLogType
                                               , SystemData.MedicalQCLogTable.CHECK_TYPE, nOperateType);
            string szSQL = string.Format(SystemData.SQL.SELECT_FROM_WHERE_GROUP, szField, SystemData.DataTable.MEDICAL_QC_LOG, szCondition
                                         , SystemData.MedicalQCLogTable.DOC_SETID);

            IDataReader dataReader = null;

            try
            {
                dataReader = base.MedQCAccess.ExecuteReader(szSQL, CommandType.Text);
                if (dataReader == null || dataReader.IsClosed || !dataReader.Read())
                {
                    return(SystemData.ReturnValue.RES_NO_FOUND);
                }
                if (lstQcLog == null)
                {
                    lstQcLog = new List <MedicalQcLog>();
                }
                do
                {
                    MedicalQcLog qcLog = new MedicalQcLog();
                    if (!dataReader.IsDBNull(0))
                    {
                        qcLog.DOC_SETID = dataReader.GetString(0);
                    }
                    if (!dataReader.IsDBNull(1))
                    {
                        qcLog.CHECK_DATE = dataReader.GetDateTime(1);
                    }
                    lstQcLog.Add(qcLog);
                } while (dataReader.Read());
                return(SystemData.ReturnValue.OK);
            }
            catch (Exception ex)
            {
                LogManager.Instance.WriteLog("MedDocAccess.GetQCLogInfo", new string[] { "szSQL" }, new object[] { szSQL }, ex);
                return(SystemData.ReturnValue.EXCEPTION);
            }
            finally { base.MedQCAccess.CloseConnnection(false); }
        }
Example #4
0
        private void virtualTree1_NodeMouseDoubleClick(object sender, VirtualTreeEventArgs e)
        {
            if (this.MainForm == null || this.MainForm.IsDisposed)
            {
                return;
            }
            if (e.Node == null || e.Type == HitTestType.None)
            {
                return;
            }

            GlobalMethods.UI.SetCursor(this, Cursors.WaitCursor);
            this.ShowStatusMessage("正在下载并打开病历,请稍候...");

            DateTime   dtCheckTime = SysTimeHelper.Instance.Now;
            MedDocInfo docInfo     = e.Node.Data as MedDocInfo;

            //如果是和仁编辑器,暂不支持合并打开
            if ((SystemParam.Instance.LocalConfigOption.DefaultEditor == "2") &&
                docInfo == null)
            {
                return;
            }
            if (docInfo != null)
            {
                GlobalMethods.UI.SetCursor(this, Cursors.WaitCursor);
                this.Update();
                this.MainForm.OpenDocument(docInfo);

                //提示已经被质控过,确认后才更新质控阅读记录
                //提示文档被质控过的信息,如果最新质控记录为当前用户,则不提示,如果为其他用户,则提示。
                MedicalQcLog qcActionLog = null;
                short        shRet       = MedicalQcLogAccess.Instance.GetQCLogInfo(docInfo.DOC_SETID, 1, ref qcActionLog);
                if (shRet == SystemData.ReturnValue.OK)
                {
                    if (qcActionLog.CHECKED_ID != SystemParam.Instance.UserInfo.USER_ID)
                    {
                        string msg = string.Format("当前病历已经被{0}于{1}质控阅读过!\t\n如需重新质控,请单击【确定】按钮"
                                                   , qcActionLog.CHECKED_BY
                                                   , qcActionLog.CHECK_DATE.ToString("yyyy-MM-dd HH:mm:ss"));
                        if (MessageBoxEx.ShowConfirm(msg) != DialogResult.OK)
                        {
                            this.ShowStatusMessage(null);
                            GlobalMethods.UI.SetCursor(this, Cursors.Default);
                            return;
                        }
                    }
                }
                this.SaveReadLogInfo(docInfo, dtCheckTime, e.Node);
            }
            this.ShowStatusMessage(null);
            GlobalMethods.UI.SetCursor(this, Cursors.Default);
            return;


            //打开合并病历
            if (COMBIN_NODE_TAG.Equals(e.Node.Data))
            {
                int count = e.Node.Nodes.Count;
                if (count <= 0)
                {
                    return;
                }

                GlobalMethods.UI.SetCursor(this, Cursors.WaitCursor);
                MedDocList lstDocInfos = new MedDocList();
                for (int index = 0; index < count; index++)
                {
                    docInfo = e.Node.Nodes[index].Data as MedDocInfo;
                    if (docInfo == null)
                    {
                        continue;
                    }
                    if (index > 0)
                    {
                        dtCheckTime = dtCheckTime.AddSeconds(1);
                    }
                    this.SaveReadLogInfo(docInfo, dtCheckTime, e.Node.Nodes[index]);
                    lstDocInfos.Add(docInfo);
                }
                this.Update();
                this.MainForm.OpenDocument(lstDocInfos);
                this.ShowStatusMessage(null);
                GlobalMethods.UI.SetCursor(this, Cursors.Default);
            }
            else
            {
                if (DOCTOR_NODE_TAG.Equals(e.Node.Data))
                {
                    this.OpenAllDocList(this.m_DoctorNode);
                }
                else if (NURSE_NODE_TAG.Equals(e.Node.Data))
                {
                    this.OpenAllDocList(this.m_NurseNode);
                }
                this.ShowStatusMessage(null);
                GlobalMethods.UI.SetCursor(this, Cursors.Default);
            }
        }