Beispiel #1
0
 private static void GetCnNameSignCode(MedDocInfo docInfo, VirtualSubItem subItem)
 {
     if (string.IsNullOrEmpty(docInfo.SIGN_CODE))
     {
         subItem.Text = MedDocSys.DataLayer.SystemData.SignState.CREATOR_SAVE_CH;
     }
     else if (docInfo.SIGN_CODE == MedDocSys.DataLayer.SystemData.SignState.CREATOR_SAVE)
     {
         subItem.Text = MedDocSys.DataLayer.SystemData.SignState.CREATOR_SAVE_CH;
     }
     else if (docInfo.SIGN_CODE == MedDocSys.DataLayer.SystemData.SignState.CREATOR_COMMIT)
     {
         subItem.Text = MedDocSys.DataLayer.SystemData.SignState.CREATOR_COMMIT_CH;
     }
     else if (docInfo.SIGN_CODE == MedDocSys.DataLayer.SystemData.SignState.PARENT_SAVE)
     {
         subItem.Text = MedDocSys.DataLayer.SystemData.SignState.PARENT_SAVE_CH;
     }
     else if (docInfo.SIGN_CODE == MedDocSys.DataLayer.SystemData.SignState.SUPER_SAVE)
     {
         subItem.Text = MedDocSys.DataLayer.SystemData.SignState.SUPER_SAVE_CH;
     }
     else if (docInfo.SIGN_CODE == MedDocSys.DataLayer.SystemData.SignState.CREATOR_COMMIT)
     {
         subItem.Text = MedDocSys.DataLayer.SystemData.SignState.CREATOR_COMMIT_CH;
     }
     else if (docInfo.SIGN_CODE == MedDocSys.DataLayer.SystemData.SignState.PARENT_COMMIT)
     {
         subItem.Text = MedDocSys.DataLayer.SystemData.SignState.PARENT_COMMIT_CH;
     }
     else if (docInfo.SIGN_CODE == MedDocSys.DataLayer.SystemData.SignState.SUPER_COMMIT)
     {
         subItem.Text = MedDocSys.DataLayer.SystemData.SignState.SUPER_COMMIT_CH;
     }
     else if (docInfo.SIGN_CODE == MedDocSys.DataLayer.SystemData.SignState.PARENT_ROLLBACK)
     {
         subItem.Text = MedDocSys.DataLayer.SystemData.SignState.PARENT_ROLLBACK_CH;
     }
     else if (docInfo.SIGN_CODE == MedDocSys.DataLayer.SystemData.SignState.SUPER_ROLLBACK)
     {
         subItem.Text = MedDocSys.DataLayer.SystemData.SignState.SUPER_ROLLBACK_CH;
     }
     else if (docInfo.SIGN_CODE == MedDocSys.DataLayer.SystemData.SignState.QC_ROLLBACK)
     {
         subItem.Text = MedDocSys.DataLayer.SystemData.SignState.QC_ROLLBACK_CH;
     }
 }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        public override void OnRefreshView()
        {
            base.OnRefreshView();
            this.Update();
            if (this.virtualTree1.Nodes.Count > 0)
            {
                this.virtualTree1.Nodes.Clear();
            }
            GlobalMethods.UI.SetCursor(this, Cursors.WaitCursor);
            this.ShowStatusMessage("正在加载文档类型列表,请稍候...");
            this.LoadDocTypeList();
            this.ShowStatusMessage("正在加载待审核模板列表,请稍候...");
            List <TempletInfo> lstTempletInfo = null;
            short shRet = TempletAccess.Instance.GetUserTempletInfos("0", ref lstTempletInfo);

            if (shRet != SystemData.ReturnValue.OK)
            {
                MessageBoxEx.Show("获取待审核模板列表失败");
                GlobalMethods.UI.SetCursor(this, Cursors.Default);
                this.ShowStatusMessage(null);
                return;
            }
            if (lstTempletInfo == null)
            {
                GlobalMethods.UI.SetCursor(this, Cursors.Default);
                this.ShowStatusMessage("未找到待审核的模板");
                return;
            }
            //查询医生已修正确认的模板列表
            List <TempletInfo> lstModifyTempletInfos = null;

            shRet = TempletAccess.Instance.GetUserTempletInfos("2", ref lstModifyTempletInfos);
            if (shRet != SystemData.ReturnValue.OK && shRet != SystemData.ReturnValue.RES_NO_FOUND)
            {
                MessageBoxEx.Show("获取医生已确认修正待审核模板列表失败");
                GlobalMethods.UI.SetCursor(this, Cursors.Default);
                this.ShowStatusMessage(null);
                return;
            }
            if (lstModifyTempletInfos != null)
            {
                lstTempletInfo.AddRange(lstModifyTempletInfos);
            }
            lstTempletInfo.Sort(new Comparison <TempletInfo>(this.Compare));
            //模板时间显示格式
            string      szDocTimeFormat = "yyyy-MM-dd HH:mm";
            string      szDeptCode      = string.Empty;
            VirtualNode deptNode        = null;

            for (int index = 0; index < lstTempletInfo.Count; index++)
            {
                TempletInfo templetInfo = lstTempletInfo[index];
                if (templetInfo == null)
                {
                    continue;
                }
                if (templetInfo.IsFolder)
                {
                    continue;
                }
                //添加科室名称显示行
                if (templetInfo.DeptCode != szDeptCode)
                {
                    deptNode           = new VirtualNode(templetInfo.DeptName);
                    deptNode.ForeColor = Color.Blue;
                    deptNode.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                    this.virtualTree1.Nodes.Add(deptNode);
                    deptNode.Expand();
                }
                szDeptCode = templetInfo.DeptCode;
                VirtualNode templetNode = new VirtualNode(templetInfo.TempletName);
                templetNode.Data      = templetInfo;
                templetNode.ForeColor = Color.Black;
                templetNode.Font      = new Font("宋体", 10.5f, FontStyle.Regular);

                string      szDocTypeName = string.Empty;
                DocTypeInfo docTypeInfo   = this.m_htDocTypeList[templetInfo.DocTypeID] as  DocTypeInfo;
                if (docTypeInfo == null)
                {
                    szDocTypeName = templetInfo.DocTypeID;
                }
                else
                {
                    szDocTypeName = docTypeInfo.DocTypeName;
                }
                VirtualSubItem subItem = null;
                subItem           = new VirtualSubItem(szDocTypeName);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                templetNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(templetInfo.CreatorName);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                templetNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(templetInfo.ModifyTime.ToString(szDocTimeFormat));
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                templetNode.SubItems.Add(subItem);

                string szShareLevel = string.Empty;
                if (templetInfo.ShareLevel == SystemData.ShareLevel.HOSPITAL)
                {
                    szShareLevel = "全院";
                }
                else if (templetInfo.ShareLevel == SystemData.ShareLevel.DEPART)
                {
                    szShareLevel = "科室";
                }
                else
                {
                    szShareLevel = "个人";
                }
                subItem           = new VirtualSubItem(szShareLevel);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                templetNode.SubItems.Add(subItem);

                string szCheckStatus = string.Empty;
                if (templetInfo.CheckStatus == TempletCheckStatus.None)
                {
                    szCheckStatus = "未审核";
                }
                else if (templetInfo.CheckStatus == TempletCheckStatus.Affirm)
                {
                    szCheckStatus = "已确认";
                }
                subItem           = new VirtualSubItem(szCheckStatus);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                templetNode.SubItems.Add(subItem);
                deptNode.Nodes.Add(templetNode);
            }
            this.ShowStatusMessage(null);
            GlobalMethods.UI.SetCursor(this, Cursors.Default);
        }
Beispiel #3
0
        private void LoadPastDocList(EMRDBLib.PatVisitInfo patVisitLog, VirtualNode patientNode)
        {
            if (this.MainForm == null || this.MainForm.IsDisposed || patVisitLog == null)
            {
                return;
            }

            string szPatientID = patVisitLog.PATIENT_ID;
            string szVisitID   = patVisitLog.VISIT_ID;

            if (GlobalMethods.Misc.IsEmptyString(szPatientID) || GlobalMethods.Misc.IsEmptyString(szVisitID))
            {
                return;
            }

            MedDocList lstPastDocInfos = null;
            short      shRet           = EMRDBAccess.Instance.GetPastDocList(szPatientID, szVisitID, ref lstPastDocInfos);

            if (shRet != SystemData.ReturnValue.OK &&
                shRet != SystemData.ReturnValue.RES_NO_FOUND)
            {
                MessageBoxEx.Show("获取旧病程记录列表失败!");
                return;
            }
            if (lstPastDocInfos == null || lstPastDocInfos.Count <= 0)
            {
                return;
            }
            lstPastDocInfos.Sort();

            //文档时间显示格式
            string      szDocTimeFormat = "yyyy-MM-dd HH:mm";
            VirtualNode oldDocRootNode  = new VirtualNode("以往旧病历");

            oldDocRootNode.Data       = lstPastDocInfos;
            oldDocRootNode.ImageIndex = 1;
            oldDocRootNode.Font       = new Font("宋体", 10.5f, FontStyle.Regular);
            oldDocRootNode.Expand();

            Hashtable htDocType = new Hashtable();

            //加载已有文档列表到指定的容器
            for (int index = 0; index < lstPastDocInfos.Count; index++)
            {
                MedDocInfo pastDocInfo = lstPastDocInfos[index];
                if (pastDocInfo == null)
                {
                    continue;
                }

                string szDocTitle = "无主题";
                if (!GlobalMethods.Misc.IsEmptyString(pastDocInfo.DOC_TITLE))
                {
                    szDocTitle = pastDocInfo.DOC_TITLE;
                }
                VirtualNode docInfoNode = new VirtualNode(szDocTitle);
                docInfoNode.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                docInfoNode.Data      = pastDocInfo;
                docInfoNode.Tag       = patVisitLog;
                docInfoNode.ForeColor = Color.Black;

                VirtualSubItem subItem = null;
                subItem           = new VirtualSubItem(pastDocInfo.DOC_TIME.ToString(szDocTimeFormat));
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(pastDocInfo.CREATOR_NAME);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(pastDocInfo.MODIFY_TIME.ToString(szDocTimeFormat));
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(pastDocInfo.MODIFIER_NAME);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                string szReadTime = string.Empty;
                if (this.m_htQCActionLog.Contains(pastDocInfo.DOC_SETID))
                {
                    szReadTime = this.m_htQCActionLog[pastDocInfo.DOC_SETID].ToString();
                }
                subItem           = new VirtualSubItem();
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                if (!string.IsNullOrEmpty(szReadTime))
                {
                    subItem.Text = "是";
                }
                else
                {
                    subItem.Text = "否";
                }
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(szReadTime);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);
                //如果病历被阅读过,则子项的字体颜色分为绿色
                if (!string.IsNullOrEmpty(szReadTime))
                {
                    docInfoNode.ForeColor = Color.Green;
                    for (int nIndex = 0; nIndex < docInfoNode.SubItems.Count; nIndex++)
                    {
                        docInfoNode.SubItems[nIndex].ForeColor = Color.Green;
                    }
                }
                oldDocRootNode.Nodes.Add(docInfoNode);
            }
            patientNode.Nodes.Add(oldDocRootNode);
        }
Beispiel #4
0
        private void LoadMedDocList(EMRDBLib.PatVisitInfo patVisitLog, VirtualNode patientNode)
        {
            if (patVisitLog == null)
            {
                return;
            }

            string szPatientID = patVisitLog.PATIENT_ID;
            string szVisitID   = patVisitLog.VISIT_ID;

            if (GlobalMethods.Misc.IsEmptyString(szPatientID) || GlobalMethods.Misc.IsEmptyString(szVisitID))
            {
                return;
            }

            string     szVisitType = MedDocSys.DataLayer.SystemData.VisitType.IP;
            MedDocList lstDocInfos = null;
            short      shRet       = EmrDocAccess.Instance.GetDocInfos(szPatientID, szVisitID, szVisitType, DateTime.Now, string.Empty, ref lstDocInfos);

            if (shRet != SystemData.ReturnValue.OK &&
                shRet != SystemData.ReturnValue.RES_NO_FOUND)
            {
                MessageBoxEx.Show("获取新格式病程记录失败!");
                return;
            }
            if (lstDocInfos == null || lstDocInfos.Count <= 0)
            {
                return;
            }

            lstDocInfos.Sort();

            //文档时间显示格式
            string szDocTimeFormat = "yyyy-MM-dd HH:mm";

            this.virtualTree1.SuspendLayout();
            this.virtualTree1.Tag = lstDocInfos;

            VirtualNode lastDocRootNode = new VirtualNode();

            lastDocRootNode.Text       = "医生的病历";
            lastDocRootNode.ImageIndex = 0;
            lastDocRootNode.Font       = new Font("宋体", 10.5f, FontStyle.Regular);
            lastDocRootNode.Data       = DOCTOR_NODE_TAG;
            lastDocRootNode.Expand();

            VirtualNode LastNurRootNode = new VirtualNode();

            LastNurRootNode.Text       = "护士的病历";
            LastNurRootNode.ImageIndex = 0;
            LastNurRootNode.Font       = new Font("宋体", 10.5f, FontStyle.Regular);
            LastNurRootNode.Data       = NURSE_NODE_TAG;
            LastNurRootNode.CollapseAll();

            VirtualNode otherDocRootNode = new VirtualNode("未被归类的病历");

            otherDocRootNode.ImageIndex = 1;
            otherDocRootNode.Font       = new Font("宋体", 10.5f, FontStyle.Regular);
            otherDocRootNode.Data       = UNKNOWN_NODE_TAG;
            otherDocRootNode.Expand();

            Hashtable htDocType = new Hashtable();

            //加载已有文档列表到指定的容器
            for (int index = 0; index < lstDocInfos.Count; index++)
            {
                MedDocInfo docInfo = lstDocInfos[index];
                if (docInfo == null)
                {
                    continue;
                }

                VirtualNode docInfoNode = new VirtualNode(docInfo.DOC_TITLE);
                docInfoNode.Data      = docInfo;
                docInfoNode.Tag       = patVisitLog;
                docInfoNode.ForeColor = Color.Black;
                docInfoNode.Font      = new Font("宋体", 10.5f, FontStyle.Regular);

                VirtualSubItem subItem   = null;
                DateTime       dtDocTime = docInfo.DOC_TIME;
                dtDocTime         = docInfo.DOC_TIME;
                subItem           = new VirtualSubItem(dtDocTime.ToString(szDocTimeFormat));
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(docInfo.CREATOR_NAME);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(docInfo.MODIFY_TIME.ToString(szDocTimeFormat));
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(docInfo.MODIFIER_NAME);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                string szReadTime = string.Empty;
                if (this.m_htQCActionLog.Contains(docInfo.DOC_SETID))
                {
                    szReadTime = this.m_htQCActionLog[docInfo.DOC_SETID].ToString();
                }

                subItem           = new VirtualSubItem();
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                if (!string.IsNullOrEmpty(szReadTime))
                {
                    subItem.Text = "是";
                }
                else
                {
                    subItem.Text = "否";
                }
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(szReadTime);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);
                //如果病历被阅读过,则子项的字体颜色分为绿色
                if (!string.IsNullOrEmpty(szReadTime))
                {
                    docInfoNode.ForeColor = Color.Green;
                    for (int nIndex = 0; nIndex < docInfoNode.SubItems.Count; nIndex++)
                    {
                        docInfoNode.SubItems[nIndex].ForeColor = Color.Green;
                    }
                }
                DocTypeInfo currDocType = null;
                DocTypeAccess.Instance.GetDocTypeInfo(docInfo.DOC_TYPE, ref currDocType);
                if (currDocType == null)
                {
                    otherDocRootNode.Nodes.Add(docInfoNode);
                    continue;
                }
                DocTypeInfo hostDocType = null;
                DocTypeAccess.Instance.GetDocTypeInfo(currDocType.HostTypeID, ref hostDocType);
                if (hostDocType == null)
                {
                    otherDocRootNode.Nodes.Add(docInfoNode);
                    continue;
                }

                VirtualNode hostDocRootNode = null;
                if (!htDocType.Contains(hostDocType.DocTypeID))
                {
                    hostDocRootNode           = new VirtualNode();
                    hostDocRootNode.Text      = hostDocType.DocTypeName;
                    hostDocRootNode.Tag       = hostDocType.DocTypeName;
                    hostDocRootNode.Data      = COMBIN_NODE_TAG;
                    hostDocRootNode.HitExpand = HitExpandMode.Click;
                    hostDocRootNode.Expand();
                    hostDocRootNode.Font       = new Font("宋体", 10.5f, FontStyle.Regular);
                    hostDocRootNode.ImageIndex = 1;
                    if (hostDocType.DocRight != MedDocSys.DataLayer.SystemData.UserType.NURSE)
                    {
                        lastDocRootNode.Nodes.Add(hostDocRootNode);
                    }
                    else if (hostDocType.DocRight == MedDocSys.DataLayer.SystemData.UserType.NURSE)
                    {
                        LastNurRootNode.Nodes.Add(hostDocRootNode);
                    }
                    else
                    {
                        this.virtualTree1.Nodes.Add(hostDocRootNode);
                    }
                    htDocType.Add(hostDocType.DocTypeID, hostDocRootNode);
                }
                else
                {
                    hostDocRootNode = htDocType[hostDocType.DocTypeID] as VirtualNode;
                }
                hostDocRootNode.Nodes.Add(docInfoNode);
            }
            htDocType.Clear();
            this.m_DoctorNode = lastDocRootNode;
            this.m_NurseNode  = LastNurRootNode;
            if (otherDocRootNode.Nodes.Count > 0)
            {
                patientNode.Nodes.Add(otherDocRootNode);
            }
            if (lastDocRootNode.Nodes.Count > 0)
            {
                patientNode.Nodes.Add(lastDocRootNode);
            }
            if (LastNurRootNode.Nodes.Count > 0)
            {
                patientNode.Nodes.Add(LastNurRootNode);
            }
        }
Beispiel #5
0
        private void LoadHerenMedDocList()
        {
            if (SystemParam.Instance.PatVisitInfo == null)
            {
                return;
            }

            string szPatientID = SystemParam.Instance.PatVisitInfo.PATIENT_ID;
            string szVisitID   = SystemParam.Instance.PatVisitInfo.VISIT_ID;

            if (GlobalMethods.Misc.IsEmptyString(szPatientID) || GlobalMethods.Misc.IsEmptyString(szVisitID))
            {
                return;
            }

            this.virtualTree1.SuspendLayout();
            this.virtualTree1.Tag = null;
            this.virtualTree1.Nodes.Clear();
            this.virtualTree1.PerformLayout();

            string     szVisitType = MedDocSys.DataLayer.SystemData.VisitType.IP;
            MedDocList lstDocInfos = null;
            short      shRet       = EmrDocAccess.Instance.GetDocInfos(szPatientID, szVisitID, szVisitType, DateTime.Now, string.Empty, ref lstDocInfos);

            if (shRet != SystemData.ReturnValue.OK &&
                shRet != SystemData.ReturnValue.RES_NO_FOUND)
            {
                MessageBoxEx.Show("获取新格式病程记录失败!");
                return;
            }
            if (lstDocInfos == null || lstDocInfos.Count <= 0)
            {
                return;
            }
            lstDocInfos.Sort();

            //文档时间显示格式
            string szDocTimeFormat = "yyyy-MM-dd HH:mm";

            this.virtualTree1.SuspendLayout();
            this.virtualTree1.Tag = lstDocInfos;

            VirtualNode lastDocRootNode = new VirtualNode();

            lastDocRootNode.Text       = "医生的病历";
            lastDocRootNode.ForeColor  = Color.Blue;
            lastDocRootNode.ImageIndex = 0;
            lastDocRootNode.Font       = new Font("宋体", 10.5f, FontStyle.Regular);
            lastDocRootNode.Data       = DOCTOR_NODE_TAG;
            lastDocRootNode.Expand();

            VirtualNode LastNurRootNode = new VirtualNode();

            LastNurRootNode.Text       = "护士的病历";
            LastNurRootNode.ForeColor  = Color.Blue;
            LastNurRootNode.ImageIndex = 0;
            LastNurRootNode.Font       = new Font("宋体", 10.5f, FontStyle.Regular);
            LastNurRootNode.Data       = NURSE_NODE_TAG;
            LastNurRootNode.CollapseAll();

            VirtualNode otherDocRootNode = new VirtualNode("未被归类的病历");

            otherDocRootNode.ForeColor  = Color.Blue;
            otherDocRootNode.ImageIndex = 1;
            otherDocRootNode.Font       = new Font("宋体", 10.5f, FontStyle.Regular);
            otherDocRootNode.Data       = UNKNOWN_NODE_TAG;
            otherDocRootNode.Expand();

            Hashtable          htDocType     = new Hashtable();
            List <VirtualNode> childDocNodes = new List <VirtualNode>();

            //加载已有文档列表到指定的容器
            for (int index = 0; index < lstDocInfos.Count; index++)
            {
                MedDocInfo docInfo = lstDocInfos[index];
                if (docInfo == null)
                {
                    continue;
                }

                VirtualNode docInfoNode = new VirtualNode(docInfo.DOC_TITLE);
                if (!htDocType.ContainsKey(docInfo.DOC_ID))
                {
                    htDocType.Add(docInfo.DOC_ID, docInfoNode);
                }
                docInfoNode.HitExpand = HitExpandMode.None;
                docInfoNode.Expand();
                docInfoNode.Data      = docInfo;
                docInfoNode.ForeColor = Color.Black;
                if (m_htQCMsgInfs != null && m_htQCMsgInfs.ContainsKey(docInfo.DOC_SETID))
                {
                    docInfoNode.ForeColor = Color.OrangeRed;
                }
                docInfoNode.Font = new Font("宋体", 10.5f, FontStyle.Regular);

                VirtualSubItem subItem   = null;
                DateTime       dtDocTime = docInfo.DOC_TIME;
                {
                    dtDocTime = docInfo.RECORD_TIME;
                }

                subItem           = new VirtualSubItem(dtDocTime.ToString(szDocTimeFormat));
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(dtDocTime.ToString(szDocTimeFormat));
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(docInfo.CREATOR_NAME);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(docInfo.MODIFY_TIME.ToString(szDocTimeFormat));
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(docInfo.MODIFIER_NAME);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                docInfoNode.SubItems.Add(subItem);


                string szReadTime = string.Empty;
                if (this.m_htQCActionLog.Contains(docInfo.DOC_SETID))
                {
                    szReadTime = this.m_htQCActionLog[docInfo.DOC_SETID].ToString();
                }

                subItem           = new VirtualSubItem();
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                if (!string.IsNullOrEmpty(szReadTime))
                {
                    subItem.Text = "是";
                }
                else
                {
                    subItem.Text = "否";
                }

                docInfoNode.SubItems.Add(subItem);

                subItem           = new VirtualSubItem(szReadTime);
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                subItem.ForeColor = Color.Blue;
                docInfoNode.SubItems.Add(subItem);


                subItem           = new VirtualSubItem();
                subItem.Font      = new Font("宋体", 10.5f, FontStyle.Regular);
                subItem.Alignment = Alignment.Middle;
                GetCnNameSignCode(docInfo, subItem);



                docInfoNode.SubItems.Add(subItem);

                DocTypeInfo currDocType = null;
                DocTypeAccess.Instance.GetDocTypeInfo(docInfo.DOC_TYPE, ref currDocType);
                if (currDocType == null)
                {
                    otherDocRootNode.Nodes.Add(docInfoNode);
                    continue;
                }
                //病历类型不需要审签
                if (string.IsNullOrEmpty(currDocType.SignFlag) ||
                    currDocType.SignFlag == SystemData.SignType.NONE)
                {
                    subItem.Text = string.Empty;
                }

                if (currDocType.NeedCombin && !currDocType.IsHostType)
                {
                    childDocNodes.Add(docInfoNode);
                    continue;
                }

                DocTypeInfo hostDocType = null;
                DocTypeAccess.Instance.GetDocTypeInfo(currDocType.HostTypeID, ref hostDocType);
                if (hostDocType == null)
                {
                    hostDocType = currDocType;
                }
                VirtualNode hostDocRootNode = null;
                if (htDocType.ContainsKey(hostDocType.DocTypeID))
                {
                    hostDocRootNode = htDocType[hostDocType.DocTypeID] as VirtualNode;
                }

                if (hostDocRootNode == null)
                {
                    hostDocRootNode           = new VirtualNode();
                    hostDocRootNode.Text      = hostDocType.DocTypeName;
                    hostDocRootNode.Tag       = hostDocType.DocTypeName;
                    hostDocRootNode.Data      = COMBIN_NODE_TAG;
                    hostDocRootNode.HitExpand = HitExpandMode.Click;
                    hostDocRootNode.Expand();
                    hostDocRootNode.Font       = new Font("宋体", 10.5f, FontStyle.Regular);
                    hostDocRootNode.ImageIndex = 0;
                    if (hostDocType.DocRight != MedDocSys.DataLayer.SystemData.UserType.NURSE)
                    {
                        lastDocRootNode.Nodes.Add(hostDocRootNode);
                    }
                    else if (hostDocType.DocRight == MedDocSys.DataLayer.SystemData.UserType.NURSE)
                    {
                        LastNurRootNode.Nodes.Add(hostDocRootNode);
                    }
                    else
                    {
                        this.virtualTree1.Nodes.Add(hostDocRootNode);
                    }
                    htDocType.Add(hostDocType.DocTypeID, hostDocRootNode);
                }
                hostDocRootNode.Nodes.Add(docInfoNode);
            }

            foreach (VirtualNode node in childDocNodes)
            {
                if (node.Parent != null)
                {
                    continue;
                }
                MedDocInfo docInfo = node.Data as MedDocInfo;
                if (docInfo == null)
                {
                    continue;
                }

                if (htDocType.ContainsKey(docInfo.DOC_SETID))
                {
                    VirtualNode parent = htDocType[docInfo.DOC_SETID] as VirtualNode;
                    if (parent != null && parent != node)
                    {
                        parent.Nodes.Add(node);
                    }
                }
            }
            htDocType.Clear();
            this.m_DoctorNode = lastDocRootNode;
            this.m_NurseNode  = LastNurRootNode;
            if (otherDocRootNode.Nodes.Count > 0)
            {
                this.virtualTree1.Nodes.Add(otherDocRootNode);
            }
            if (lastDocRootNode.Nodes.Count > 0)
            {
                this.virtualTree1.Nodes.Add(lastDocRootNode);
            }
            if (LastNurRootNode.Nodes.Count > 0)
            {
                this.virtualTree1.Nodes.Add(LastNurRootNode);
            }
            this.virtualTree1.PerformLayout();
        }