Exemplo n.º 1
0
        /// <summary>
        /// 在病历编辑器中定位病程记录
        /// </summary>
        /// <param name="node"></param>
        public void LocateDailyEmrMode(TreeListNode node)
        {
            if (node.Tag is EmrModel)
            {
                EmrModel model           = node.Tag as EmrModel;
                string   displayDateTime = model.DisplayTime.ToString("yyyy-MM-dd HH:mm:ss");

                this.zyEditorControl1.EMRDoc.Info.DocumentModel = DocumentModel.Edit;

                ArrayList al = new ArrayList();
                this.zyEditorControl1.EMRDoc.GetAllSpecElement(al, this.zyEditorControl1.EMRDoc.RootDocumentElement, ElementType.Text, "记录日期");

                //把光标定位到它处
                ZYText find = null;
                foreach (ZYText ele in al)
                {
                    if (ele.Text == displayDateTime)
                    {
                        find = ele;
                        break;
                    }
                }
                if (find != null)
                {
                    this.zyEditorControl1.EMRDoc.Content.AutoClearSelection = true;
                    this.zyEditorControl1.EMRDoc.Content.MoveSelectStart(find.FirstElement);
                    this.zyEditorControl1.ScrollViewtopToCurrentElement();

                    //设置编辑区域
                    this.zyEditorControl1.Refresh();
                }
            }
        }
Exemplo n.º 2
0
        private void InsertSpaceBetweenDateTimeAndTitle()
        {
            DocumentModel documentModel = this.zyEditorControl1.EMRDoc.Info.DocumentModel;

            this.zyEditorControl1.EMRDoc.Info.DocumentModel = DocumentModel.Edit;

            ArrayList al = new ArrayList();

            this.zyEditorControl1.EMRDoc.GetAllSpecElement(al, this.zyEditorControl1.EMRDoc.RootDocumentElement, ElementType.Text, "标题");

            //把光标定位到它处
            ZYText find = null;

            //foreach (ZYText ele in al)
            for (int i = 0; i < al.Count; i++)
            {
                //if (al.Count > 1 && i == 0) return;

                ZYText ele = al[i] as ZYText;
                find = ele;
                if (find != null)
                {
                    this.zyEditorControl1.EMRDoc.Content.AutoClearSelection = true;
                    this.zyEditorControl1.EMRDoc.Content.MoveSelectStart(find.FirstElement);

                    InsertSpace(6, find);
                }
            }

            //设置编辑区域
            this.zyEditorControl1.Refresh();
            this.zyEditorControl1.EMRDoc.Info.DocumentModel = documentModel;
        }
Exemplo n.º 3
0
        private void InsertElementText(PadForm padForm, string name, string diagContent)
        {
            ArrayList al = new ArrayList();

            padForm.zyEditorControl1.EMRDoc.GetAllSpecElement(al, padForm.zyEditorControl1.EMRDoc.RootDocumentElement, ElementType.Text, name);

            if (al.Count > 0)
            {
                ZYText find = al[0] as ZYText;
                if (find != null)
                {
                    padForm.zyEditorControl1.EMRDoc.Content.MoveSelectStart(find.FirstElement);
                    padForm.zyEditorControl1.DeleteElement(find);
                }
            }
            else
            {
                //padForm.zyEditorControl1.EMRDoc._MoveRight();
            }

            ZYText value = new ZYText();

            value.Name = name;
            value.Text = diagContent;
            value.Attributes.SetValue(ZYTextConst.c_FontSize, "小四");
            padForm.zyEditorControl1.EMRDoc._InsertBlock(value);
        }
Exemplo n.º 4
0
        private void InsertElementText(EditorForm padForm, string name, string diagContent)
        {
            try
            {
                ArrayList al = new ArrayList();
                padForm.CurrentEditorControl.EMRDoc.GetAllSpecElement(al, padForm.CurrentEditorControl.EMRDoc.RootDocumentElement, ElementType.Text, name);

                if (al.Count > 0)
                {
                    ZYText find = al[0] as ZYText;
                    if (find != null)
                    {
                        padForm.CurrentEditorControl.EMRDoc.Content.MoveSelectStart(find.FirstElement);
                        padForm.CurrentEditorControl.DeleteElement(find);
                    }
                }

                //ZYTextBlock newvalue = new ZYTextBlock();
                //newvalue.Name = name;
                //newvalue.Text = diagContent;
                //newvalue.Attributes.SetValue(ZYTextConst.c_FontSize, "五号");
                //padForm.CurrentEditorControl.EMRDoc._InsertBlock(newvalue);

                ZYText value = new ZYText();
                value.Name = name;
                value.Text = diagContent;

                value.Attributes.SetValue(ZYTextConst.c_FontSize, "小四");
                padForm.CurrentEditorControl.EMRDoc._InsertBlock(value);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemplo n.º 5
0
        private void ModifyTitle(ZYText element, string title)
        {
            ZYText caption = new ZYText();

            caption.Name = "标题";
            caption.Text = title;
            this.zyEditorControl1.EMRDoc._InsertBlock(caption);
            this.zyEditorControl1.DeleteElement(element);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 设置编辑模式
        /// </summary>
        /// <param name="startTime"></param>
        private void ReadOnly2EditMode(DateTime startTime)
        {
            //MessageBox.Show(this.toolStripComboBox1.Text);
            //找到与选项相同的格式化数字项
            ArrayList al = new ArrayList();

            this.zyEditorControl1.EMRDoc.GetAllSpecElement(al, this.zyEditorControl1.EMRDoc.RootDocumentElement, ElementType.Text, "记录日期");


            //把光标定位到它处
            ZYText find = null;

            foreach (ZYText ele in al)
            {
                if (DateTime.Parse(ele.Text) == startTime)
                {
                    //MessageBox.Show("找到了 " );

                    find = ele;
                    break;
                }
            }
            if (find != null)
            {
                this.zyEditorControl1.EMRDoc.Content.AutoClearSelection = true;
                this.zyEditorControl1.EMRDoc.Content.MoveSelectStart(find.FirstElement);
                this.zyEditorControl1.ActiveEditArea            = new ActiveEditArea();
                this.zyEditorControl1.ActiveEditArea.TopElement = find.FirstElement;
                ZYText end = null;
                //如果是最后一个
                if (al.IndexOf(find) == al.Count - 1)
                {
                    this.zyEditorControl1.ActiveEditArea.EndElement = null;// this.zyEditorControl1.EMRDoc.Content.Elements[this.zyEditorControl1.EMRDoc.Content.Elements.Count - 1] as ZYTextElement;
                }
                else
                {
                    end = al[al.IndexOf(find) + 1] as ZYText;
                    this.zyEditorControl1.ActiveEditArea.EndElement = end.FirstElement;
                }

                this.zyEditorControl1.ScrollViewtopToCurrentElement();//Add By wwj 2012-03-06

                //设置编辑区域
                this.zyEditorControl1.Refresh();
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// 替换首次病程中的病程名称
        /// </summary>
        /// <param name="model"></param>
        private void ReplaceFirstDailyContent(EmrModel model)
        {
            ArrayList al = new ArrayList();

            this.zyEditorControl1.EMRDoc.GetAllSpecElement(al, this.zyEditorControl1.EMRDoc.RootDocumentElement, ElementType.FixedText, "T病程记录1");

            //把光标定位到它处
            ZYFixedText find = null;

            //已经有项目了
            if (al.Count > 0)
            {
                foreach (ZYFixedText ele in al)
                {
                    find = ele;
                }
            }

            if (find != null)
            {
                this.zyEditorControl1.EMRDoc.Content.AutoClearSelection = true;
                this.zyEditorControl1.EMRDoc.Content.MoveSelectStart(find.FirstElement);

                #region 插入日期,标题
                ZYText date = new ZYText();
                date.Name = "记录日期";
                date.Attributes.SetValue(ZYTextConst.c_FontBold, true);
                date.Text = model.DisplayTime.ToString("yyyy-MM-dd HH:mm:ss");

                ZYText caption = new ZYText();
                caption.Name = "标题";
                caption.Text = model.Description.Trim() == "" ? "   " : model.Description;

                //删除要替换的节点
                this.zyEditorControl1.DeleteElement(find);

                this.zyEditorControl1.EMRDoc._InsertBlock(date);

                this.zyEditorControl1.EMRDoc._InsertBlock(caption);
                #endregion


                //设置编辑区域
                this.zyEditorControl1.Refresh();
            }
        }
Exemplo n.º 8
0
        private void RefreshActiveEditArea(DateTime dt)
        {
            this.zyEditorControl1.EMRDoc.Info.DocumentModel = DocumentModel.Edit;

            ArrayList al = new ArrayList();

            this.zyEditorControl1.EMRDoc.GetAllSpecElement(al, this.zyEditorControl1.EMRDoc.RootDocumentElement, ElementType.Text, "记录日期");

            //把光标定位到它处
            ZYText find = null;

            foreach (ZYText ele in al)
            {
                if (DateTime.Parse(ele.Text) == dt)
                {
                    find = ele;
                    break;
                }
            }
            if (find != null)
            {
                this.zyEditorControl1.EMRDoc.Content.AutoClearSelection = true;
                this.zyEditorControl1.EMRDoc.Content.MoveSelectStart(find.FirstElement);
                this.zyEditorControl1.ActiveEditArea            = new ActiveEditArea();
                this.zyEditorControl1.ActiveEditArea.TopElement = find.FirstElement;
                ZYText end = null;
                //如果是最后一个
                if (al.IndexOf(find) == al.Count - 1)
                {
                    this.zyEditorControl1.ActiveEditArea.EndElement = null;
                }
                else
                {
                    end = al[al.IndexOf(find) + 1] as ZYText;
                    this.zyEditorControl1.ActiveEditArea.EndElement = end.FirstElement;
                }


                //设置编辑区域

                this.zyEditorControl1.Refresh();
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 在编辑器中定位对应的病程,如果对于此病程有编辑权限则同时设置编辑区域
        /// </summary>
        /// <param name="form"></param>
        private void LocateDailyEmrByCursor(UCEmrInput form)
        {
            TreeListNodes nodes = form.GetACTreeListNodes();

            if (nodes == null)
            {
                return;
            }

            int selectIndex = this.zyEditorControl1.EMRDoc.Content.SelectStart;
            //把光标定位到它处
            ZYText find = null;

            for (int i = selectIndex; i >= 0; i--)
            {
                ZYTextElement ele = this.zyEditorControl1.EMRDoc.Content.Elements[i] as ZYTextElement;
                if (ele != null && ele.Parent != null && ele.Parent is ZYText && ((ZYText)ele.Parent).Name == "记录日期")
                {
                    find = ele.Parent as ZYText;
                    break;
                }
            }
            if (find != null && nodes.Count > 0)
            {
                foreach (TreeListNode node in nodes)
                {
                    EmrModel emrModel = node.Tag as EmrModel;
                    if (emrModel != null)
                    {
                        if (emrModel.DisplayTime.ToString("yyyy-MM-dd HH:mm:ss").IndexOf(find.text) >= 0)
                        {
                            form.FocusedNodeChanged(node);
                            break;
                        }
                    }
                }
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// 插入指定个数的空格
        /// </summary>
        /// <param name="count"></param>
        private void InsertSpace(int count, ZYText find)
        {
            //if (find != null && find.FirstElement != null)
            //{
            //    //判断病程的时间和名称之间有没有空格,如果有空格则退出
            //    if (find.FirstElement.Parent != null && find.FirstElement.Parent.Parent != null && find.FirstElement.Parent.Parent.ChildElements.Count > 1)
            //    {
            //        if (find.FirstElement.Parent.Parent.ChildElements[1] is ZYTextChar)
            //        {
            //            if (((ZYTextChar)find.FirstElement.Parent.Parent.ChildElements[1]).Char == ' ')
            //            {
            //                return;
            //            }
            //        }
            //    }
            //}

            //在病程的时间和名称之间插入空格
            for (int i = 0; i < count; i++)
            {
                this.zyEditorControl1.EMRDoc._InsertChar(' ');
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// 将病程插入到编辑器的界面中
        /// </summary>
        /// <param name="model"></param>
        public void InsertDailyInfo(EmrModel model)
        {
            m_CurrentModel = model;
            if (model.ModelContent != null)
            {
                if (model.ModelContent.InnerText.Trim() != "")
                {
                    //将未保存的病历显示在编辑器中
                    LoadDocment(model);
                    //在时间和标题中增加空格
                    //InsertSpaceBetweenDateTimeAndTitle();
                    //todo 确认
                    ResetEditMode(model);
                    zyEditorControl1.EMRDoc.Modified = false;
                }
                return;
            }

            ArrayList al = new ArrayList();

            if (model.ModelContentHistory != null)
            {
                model.ModelContent        = (XmlDocument)model.ModelContentHistory.Clone();
                model.ModelContentHistory = null;
            }
            else
            {
                XmlDocument doc = new XmlDocument();
                doc.PreserveWhitespace = true;
                doc.LoadXml(m_Util.GetTemplateContent(model.TempIdentity, model.PersonalTemplate));
                //model.ModelContent = zyEditorControl1.BinaryToXml(m_Util.GetTemplateContent(model.TempIdentity));
                model.ModelContent = doc;
            }

            if (model.FirstDailyEmrModel)//加载首次病程
            {
                if (model.ModelContent.InnerText.Trim() != "")
                {
                    LoadDocment(model);
                    ReplaceFirstDailyContent(model);
                    //在时间和标题中增加空格
                    InsertSpaceBetweenDateTimeAndTitle();
                    //换页
                    if (model.FirstDailyEmrModel && m_Util.IsInsertPageEndOnFirstDailyEmr)
                    {
                        InsertPageEndToEmrEnd();
                    }
                    //todo 确认
                    ResetEditMode(model);
                }
                return;
            }

            //插入除首程外的其他病程
            this.zyEditorControl1.ActiveEditArea = null;
            this.zyEditorControl1.EMRDoc.GetAllSpecElement(al, this.zyEditorControl1.EMRDoc.RootDocumentElement, ElementType.Text, "记录日期");

            //把光标定位到它处
            ZYTextElement find = null;

            //已经有项目了
            if (al.Count > 0)
            {
                foreach (ZYText ele in al)
                {
                    //if (DateTime.Parse(ele.Text) == model.DisplayTime)
                    //{
                    //    MessageBox.Show("当前日期已经存在");
                    //    return;
                    //}
                    //else
                    if (DateTime.Parse(ele.Text) > model.DisplayTime)
                    {
                        find = ele;
                        break;
                    }
                }
            }

            if (find == null)
            {
                find = this.zyEditorControl1.EMRDoc.Content.Elements[this.zyEditorControl1.EMRDoc.Content.Elements.Count - 1] as ZYTextElement;
            }

            //插入日期,标题
            ZYText date = new ZYText();

            date.Name = "记录日期";
            date.Attributes.SetValue(ZYTextConst.c_FontBold, true);
            date.Text = model.DisplayTime.ToString("yyyy-MM-dd HH:mm:ss");

            ZYText caption = new ZYText();

            caption.Name = "标题";
            caption.Text = model.Description.Trim() == "" ? "   " : model.Description;

            if (find is ZYTextBlock)
            {
                this.zyEditorControl1.EMRDoc.Content.CurrentElement = (find as ZYText).FirstElement;
                this.zyEditorControl1.EMRDoc.Content.CurrentElement = this.zyEditorControl1.EMRDoc.Content.PreElement;
            }
            else
            {
                this.zyEditorControl1.EMRDoc.Content.CurrentElement = find;
            }
            //todo 确认
            ResetEditMode(model);
            this.zyEditorControl1.EMRDoc._InsertChar('\r');

            //左对齐
            this.zyEditorControl1.EMRDoc.SetAlign(ParagraphAlignConst.Left);

            //********************判断光标前是否存在分页符**********************
            if (model.IsNewPage)
            {
                InsertPageEndLogic("BACK");
            }
            //****************************************************************


            this.zyEditorControl1.EMRDoc._InsertBlock(date);

            InsertSpace(6, null);

            this.zyEditorControl1.EMRDoc._InsertBlock(caption);
            this.zyEditorControl1.EMRDoc._InsertChar('\r');

            this.zyEditorControl1.EMRDoc.InsetDaliyTemplate(model.ModelContent);

            //********************判断光标后是否存在分页符**********************
            if (model.NewPageEnd)
            {
                InsertPageEndLogic("FRONT");
            }
            //****************************************************************
        }
Exemplo n.º 12
0
        void pnlText_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (this.zyEditorControl1.ActiveEditArea != null)
            {
                Point p = this.zyEditorControl1.ClientPointToView(e.Location);
                if (this.zyEditorControl1.ActiveEditArea.TopElement.RealTop < p.Y && p.Y < this.zyEditorControl1.ActiveEditArea.End)
                {
                    ZYTextElement ele = this.zyEditorControl1.GetElementByPos(e.Location.X, e.Location.Y);
                    if (ele.Parent is ZYText)
                    {
                        if ((ele.Parent as ZYText).Name == "记录日期")
                        {
                            UCEmrInput form = this.Parent.Parent.Parent as UCEmrInput;

                            TreeListNode             node         = form.GetFocusNode();
                            DailyFormDisplayDateTime formDateTime = new DailyFormDisplayDateTime((ele.Parent as ZYText).ToEMRString(), m_Util.m_app, node);
                            formDateTime.StartPosition = FormStartPosition.CenterParent;

                            if (formDateTime.ShowDialog() == DialogResult.Yes)
                            {
                                //修改病程的記錄日期,加粗顯示
                                ZYText date = new ZYText();
                                date.Name = (ele.Parent as ZYText).Name;
                                date.Attributes.SetValue(ZYTextConst.c_FontBold, true);
                                date.Text = formDateTime.GetDiaplayDateTime();

                                //todo 此处病历刷新有问题,待确认修改 周辉 2011-08-21
                                //zyEditorControl1.EMRDoc.Info.DocumentModel = DocumentModel.Edit;
                                zyEditorControl1.EMRDoc._InsertBlock(date);
                                zyEditorControl1.DeleteElement(ele.Parent);
                                //zyEditorControl1.EMRDoc.Info.DocumentModel = DocumentModel.Read;
                                zyEditorControl1.EMRDoc.Refresh();
                                ResetDailyDateTime((ele.Parent as ZYText).text, null, date.text, null);
                            }
                        }
                        else if ((ele.Parent as ZYText).Name == "标题")
                        {
                            DailyFormTitle formTitle = new DailyFormTitle((ele.Parent as ZYText).ToEMRString(), m_Util.m_app);
                            formTitle.StartPosition = FormStartPosition.CenterParent;
                            if (formTitle.ShowDialog() == DialogResult.Yes)
                            {
                                //修改病程的標題
                                ZYText caption = new ZYText();
                                caption.Name = (ele.Parent as ZYText).Name;
                                caption.Text = formTitle.GetTitle();

                                //todo 此处病历刷新有问题,待确认修改 周辉 2011-08-21
                                //zyEditorControl1.EMRDoc.Info.DocumentModel = DocumentModel.Edit;
                                zyEditorControl1.EMRDoc._InsertBlock(caption);
                                zyEditorControl1.DeleteElement(ele.Parent);
                                //zyEditorControl1.EMRDoc.Info.DocumentModel = DocumentModel.Read;
                                zyEditorControl1.EMRDoc.Refresh();
                                //zyEditorControl1.Refresh();


                                ResetDailyDateTime(null, (ele.Parent as ZYText).text, null, caption.text);
                            }
                        }
                    }
                }
            }
        }