专利名称:一种电子病历的数据压缩算法的制作方法
技术领域:
本发明涉及一种电子病历的数据压缩算法。
背景技术:
目前在电子病历结构化方面做得比较好的产品都是采用XML对病历信息进行描述,但是由此也产生了一些隐患。比如因为将病历信息按照页、块、元素划分,每一部分使用XML标记加以区分,这就使得病历的内容变得“肥胖”。“肥胖”的内容尤其在带宽低、稳定性相对不好的无线网络上传输的时候,发生异常时错误的可能性就相对较大。
发明内容本发明目的在于提供一种有效地压缩电子病历的数据压缩算法。
所述的电子病历的数据压缩算法,包括(1)预处理步骤将结构化的病历信息处理为包含有“0~9”十个数字符号,“A”、“V”两个英文大写字母和一个小数点“.”符号的文本字符,所述的字符“A”表示定位有效,字符“V”表示定位无效;(2)编码步骤将步骤(1)的文本字符按下述原则编码字符 四位二制编码0 00001 00012 00103 0011
0 1005 01016 01107 01118 10009 1001. 1010A 1011V 1100(3)将步骤(2)得到的编码信息采用动态限长变化的不等长编码方法进行数据压缩。
进一步,所述的步骤(1)还包括“B”和“W”两个文本字符,“B”表示定位有效时语句校验出错,“W”表示定位无效时语句校验出错;步骤(2)中对应于“B”和“W”的编码如下字符四位二制编码B 1101W 1110。这两个字符是在压缩预处理过程中,用来记录那些因语句校验出错而舍弃的语句。因为每条语句的时间信息全部在预处理阶段被舍弃,在解压缩时要恢复时间值。该值在正常情况下是根据时间的基数再加上语句的计数值(由于每秒接受到一条语句,所以语句计数值就是以秒为单位的时间增量)确定的。当发生语句校验出错时,若处于定位有效状态,则在定位状态记录上不填写“A”字符,而填写“B”字符;若处在定位无效状态,则不填写“V”字符,而填写“W”字节。在以后解压缩时,若检测到“A”、“V”字节,时间的还原按正常的算法进行;若检测到“B”、“W”字符时,进行的还原除了按正常的算法进行以外还要加上秒钟,这样才能确保时间能够正确的恢复,这是因为“B”、″W″字节表示上一条语句发生错误已经被丢弃,语句的压缩是非连续的,有继句现象发生。
再进一步,所述的步骤(3)采用Huffman编码方法进行压缩。
发明人经过实际测试发现,压缩率主要受到病历内容的差异性影响比较大。由于应用系统为医生、护士等系统关键用户提供了非常全面的、完善的模板支持,因此在这些人的工作实践中,可达到85%以上的医生书写病历时采用系统预先定义的模板,90%以上的护士书写护理记录时使用系统预定义好的一些护理模板。并且大多数医生或护士在应用具体模板的时候,仅仅是在系统提供的模板基础上进行简单的修改。因为数字0~9的ASCII码的高四位都一样,是冗余的,因此每一个数字完全可以用低四位描述,即每个字节的八位编码可压缩为四位编码,压缩比理论上可趋近50%。
步骤(3)的压缩算法中采用了一种动态限长变化的不等长编码方法,使最短码2位,而最长码不超过8位,达到了最佳压缩效果。压缩基本压缩原理是,将待压缩文件看作是字符流(字节流),将其中的冗余信息分成两类(1)同一字符的离散出现如abcda......这里,字符a出现了两次。2.字符串的重复出现如abcdabcd......或abcd...abcd......这里,字符串abcd出现了两次。值得说明的是,这里串的概念是LZW方法意义下的,即将字符流中每一字符均看作是一个串的起始字符。压缩时,首先对字符流中的字符串进行识别,将其中的重复串用压缩格式记载,然后再将处理后的数据用不等长编码进行代码变换及压缩。下面仅就其中的动态限长变化编码方法进行介绍。二、动态限长编码方法1.基本原理经重复串压缩后的数据中,重复串已大大减少,而同一字符的分布式冗余问题则比较突出。由于256个字符的使用概率一般不同,往往相差悬殊,若采用不等长编码,将高频字符用较短代码表示,低频字符用较长码表示,则提高了整体的压缩比。Haffman编码是最佳不等长编码,它根据文件中各字符的统计概率来分配代码长度。如设文件中不同字符数为n,第i个字符的概率为Pi,代码长度为li,则当概率满足P1≥P2≥...≥Pn时,Haffman编码的码长满足l1≤l2≤...≤ln,此时,代码平均长度的数学期望=∑ni=1Pi□li达到最小。在一般的数据压缩过程中,Haffman编码的算法实现为先统计出待压文件中各字符的出现概率,据此动态建立一棵Haffman树,并以二分树的序列形式存入压缩数据文件首部以用于还原过程。在压缩过程中,由Haffman树实现字符的ASCII码(等长码)与其压缩代码(Haffman不等长码)的转换。这种处理方法需对待压缩文件进行两遍扫描,且Haffman树须保存于压缩数据文件中而占用额外的存储空间。在LHARC的算法中,对Haffman编码的实现采用了新的方法。其基本原理是在压缩前动态建立一棵初始译码树,在压缩过程中不断调整译码树的结构,使各字符的压缩代码长度随字符出现的次数增加而逐步缩减。最短码的长度可达到2位,而最长码不超过8位(二进制),从而获得很高的压缩比。
本发明的数据压缩算法是首先将结构化的病历信息进行预处理,提取相关性信息以利于在第二阶段大幅度压缩病历文本内容,第二阶段将相关性信息和病历信息编码,对得到的结果再使用Huffman或LHARC等方式的编码方法进行压缩处理。实践证明,通过本发明的数据压缩算法可以大大降低网络的开销和“肥胖”病历信息在网络上传输过程中出错的可能性。
具体实施方式
下面结合实施例对本发明作进一步说明,但本发明的保护范围并不限于此。
一种电子病历的数据压缩算法,包括(1)预处理步骤将结构化的病历信息处理为包含有“0~9”十个数字符号,“A”、“V”、“B”、“W”四个英文大写字母和一个小数点“.”符号的文本字符,字符“A”表示定位有效,字符“V”表示定位无效,“B”表示定位有效时语句校验出错,“W”表示定位无效时语句校验出错;(2)编码步骤将步骤(1)的文本字符按下述原则编码字符 四位二制编码0 00001 00012 00103 00114 01005 01016 01107 01118 10009 1001. 1010A 1011V 1100B 1101W 1110(3)将步骤(2)得到的编码信息采用Huffman编码方法进行压缩。
权利要求
1.一种电子病历的数据压缩算法,其特征在于包括(1)预处理步骤将结构化的病历信息处理为包含有“0~9”十个数字符号,“A”、“V”两个英文大写字母和一个小数点“.”符号的文本字符,所述的字符“A”表示定位有效,字符“V”表示定位无效;(2)编码步骤将步骤(1)的文本字符按下述原则编码字符 四位二制编码0 00001 00012 00103 00114 01005 01016 01107 01118. 10009 1001. 1010A 1011V 1100(3)将步骤.(2)得到的编码信息采用动态限长变化的不等长编码方法进行数据压缩。
2.如权利要求1所述的电子病历的数据压缩算法,其特征在于所述的步骤(1)还包括“B”和“W”两个文本字符,“B”表示定位有效时语句校验出错,“W”表示定位无效时语句校验出错;步骤(2)中对应于“B”和“W”的编码如下字符 四位二制编码B 1101W 1110。
3.如权利要求1或2所述的电子病历的数据压缩算法,其特征在于所述的步骤(3)采用Huffman编码方法进行压缩。
全文摘要
本发明涉及一种电子病历的数据压缩算法,包括预处理步骤将结构化的病历信息处理为包含有“0~9”十个数字符号,“A”、“V”两个英文大写字母和一个小数点“.”符号的文本字符,所述的字符“A”表示定位有效,字符“V”表示定位无效;编码步骤将步骤(1)的文本字符编码;将步骤(2)得到的编码信息采用动态限长变化的不等长编码方法进行数据压缩。通过本发明的数据压缩算法可以大大降低网络的开销和“肥胖”病历信息在网络上传输过程中出错的可能性。
文档编号G06F17/30GK101086749SQ20061005185
公开日2007年12月12日 申请日期2006年6月8日 优先权日2006年6月8日
发明者汪滢 申请人:杭州掌幄科技有限公司