private void 更新引用ToolStripMenuItem_Click(object sender, EventArgs e) { HCViewData vTopData = FEmrView.ActiveSectionTopLevelData() as HCViewData; HCDomainInfo vDomain = vTopData.ActiveDomain; HCViewData vPageData = FEmrView.ActiveSection.Page; string vText = ""; if (vTopData == vPageData) { vText = FEmrView.GetDataForwardDeGroupText(vPageData, vDomain.BeginNo); } else { vText = ""; } if (vText != "") { FEmrView.BeginUpdate(); try { FEmrView.SetDeGroupText(vTopData, vDomain.BeginNo, vText); FEmrView.FormatSection(FEmrView.ActiveSectionIndex); } finally { FEmrView.EndUpdate(); } } }
/// <summary> 获取指定数据组中的文本内容 </summary> /// <param name="AData">指定从哪个Data里获取</param> /// <param name="ADeGroupStartNo">指定数据组的起始ItemNo</param> /// <param name="ADeGroupEndNo">指定数据组的结束ItemNo</param> /// <returns>数据组文本内容</returns> public string GetDataDeGroupText(HCViewData aData, int aDeGroupStartNo, int aDeGroupEndNo) { string Result = ""; for (int i = aDeGroupStartNo + 1; i <= aDeGroupEndNo - 1; i++) { Result = Result + aData.Items[i].Text; } return(Result); }
/// <summary> 指定的节当前是否可编辑 </summary> /// <param name="sender">文档节</param> /// <returns>True:可编辑,False:不可编辑</returns> protected override bool DoSectionCanEdit(Object sender) { HCViewData vViewData = sender as HCViewData; if ((vViewData.ActiveDomain != null) && (vViewData.ActiveDomain.BeginNo >= 0)) { return(!((vViewData.Items[vViewData.ActiveDomain.BeginNo] as DeGroup).ReadOnly)); } else { return(true); } }
/// <summary> 从当前数据组起始位置往前找相同数据组的内容Index域内容 </summary> /// <param name="AData">指定从哪个Data里获取</param> /// <param name="ADeGroupStartNo">指定从哪个位置开始往前找</param> /// <returns>相同数据组文本形式的内容</returns> public string GetDataForwardDeGroupText(HCViewData aData, int aDeGroupStartNo) { string Result = ""; DeGroup vDeGroup = null; int vBeginNo = -1; int vEndNo = -1; string vDeIndex = (aData.Items[aDeGroupStartNo] as DeGroup)[DeProp.Index]; for (int i = 0; i <= aDeGroupStartNo - 1; i++) // 找起始 { if (aData.Items[i] is DeGroup) { vDeGroup = aData.Items[i] as DeGroup; if (vDeGroup.MarkType == MarkType.cmtBeg) // 是域起始 { if (vDeGroup[DeProp.Index] == vDeIndex) // 是目标域起始 { vBeginNo = i; break; } } } } if (vBeginNo >= 0) // 找结束 { for (int i = vBeginNo + 1; i <= aDeGroupStartNo - 1; i++) { if (aData.Items[i] is DeGroup) { vDeGroup = aData.Items[i] as DeGroup; if (vDeGroup.MarkType == MarkType.cmtEnd) // 是域结束 { if (vDeGroup[DeProp.Index] == vDeIndex) { vEndNo = i; break; } } } } if (vEndNo > 0) { Result = GetDataDeGroupText(aData, vBeginNo, vEndNo); } } return(Result); }
/// <summary> 设置数据组的内容为指定的文本 </summary> /// <param name="aData">数据组所在的Data</param> /// <param name="aDeGroupNo">数据组的ItemNo</param> /// <param name="aText">文本内容</param> public void SetDeGroupText(HCViewData aData, int aDeGroupNo, string aText) { int vGroupBeg = -1; int vGroupEnd = aData.GetDomainAnother(aDeGroupNo); if (vGroupEnd > aDeGroupNo) { vGroupBeg = aDeGroupNo; } else { vGroupBeg = vGroupEnd; vGroupEnd = aDeGroupNo; } // 选中,使用插入时删除当前数据组中的内容 aData.SetSelectBound(vGroupBeg, HC.View.HC.OffsetAfter, vGroupEnd, HC.View.HC.OffsetBefor); aData.InsertText(aText); }
private void SyncDeGroupByStruct(HCEmrView aEmrView) { for (int i = 0; i < aEmrView.Sections.Count; i++) { HCViewData vData = aEmrView.Sections[0].Page; int vIndex = vData.Items.Count - 1; while (vIndex >= 0) { if (HCDomainItem.IsBeginMark(vData.Items[vIndex])) // 是数据组开始位置 { string vDeGroupIndex = (vData.Items[vIndex] as DeGroup)[DeProp.Index]; // 数据组标识 DataRow[] vRows = FDataElementSetMacro.Select("MacroType=3 and ObjID=" + vDeGroupIndex); if (vRows.Length > 0) // 有该数据组的引用替换配置信息 { // 得到指定的数据集对应的病历结构xml文档,并从xml中找该数据组的节点 XmlElement vXmlNode = GetDeItemNodeFromStructDoc(PatientInfo.PatID, int.Parse(vRows[0]["Macro"].ToString()), vDeGroupIndex); if (vXmlNode != null) // 找到了该数据组对应的节点 { string vText = ""; for (int j = 0; j < vXmlNode.ChildNodes.Count; j++) { vText = vText + vXmlNode.ChildNodes[j].InnerText; } if (vText != "") // 得到不为空的节点内容并赋值给数据组 { aEmrView.SetDeGroupText(vData, vIndex, vText); } } } } vIndex--; } } }
private void SyncDeGroupByStruct(HCEmrView aEmrView) { for (int i = 0; i < aEmrView.Sections.Count; i++) { HCViewData vData = aEmrView.Sections[0].Page; int vIndex = vData.Items.Count - 1; while (vIndex >= 0) { if (HCDomainItem.IsBeginMark(vData.Items[vIndex])) { string vDeGroupIndex = (vData.Items[vIndex] as DeGroup)[DeProp.Index]; DataRow[] vRows = FDataElementSetMacro.Select("MacroType=3 and ObjID=" + vDeGroupIndex); if (vRows.Length > 0) { XmlElement vXmlNode = GetDeItemNodeFromStructDoc(PatientInfo.PatID, int.Parse(vRows[0]["Macro"].ToString()), vDeGroupIndex); if (vXmlNode != null) { string vText = ""; for (int j = 0; j < vXmlNode.ChildNodes.Count; j++) { vText = vText + vXmlNode.ChildNodes[j].InnerText; } if (vText != "") { aEmrView.SetDeGroupText(vData, vIndex, vText); } } } } vIndex--; } } }