/// <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(); } } }
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; }
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); }
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; } }
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); }
/// <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(); } }
/// <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(); } }
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(); } }
/// <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; } } } } }
/// <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(' '); } }
/// <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"); } //**************************************************************** }
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); } } } } } }