コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
            }
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
        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--;
                }
            }
        }
コード例 #7
0
        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--;
                }
            }
        }