发明内容
本发明要解决的问题是设计一种基于医学信息本体数据库的关联药品的自我分析方法,为疾病自诊信息平台提供关联药品的信息分析方法,为病患初期的自诊以及使用相关的药物提供科学的依据。
需要说明的是,本发明基于医学信息本体数据库的关联药品的自我分析方法,是信息学的一种应用,通过相关信息分析以便与选择药品,并非属于疾病的诊断和治疗方法,因此不违反专利法第二十五条的相关规定。
为了达到上述目的,本发明采取的技术方案为:一种基于医学信息本体数据库的关联药品的自我分析方法,其特征在于,包括如下步骤:
(1)建立医学信息本体(Medical Ontology)数据库,即MO数据库;将疾病及其特征用MO terms进行编号;每个MO terms代表一个顶点,两个terms之间的关系用有向边表示,这样将疾病和病征表示在一个有向无环图中;
(2)运用药品的电子标识码作为哈希表的关键码,将药品的不同信息用不同的哈希表来表示;
(3)创建一个以药品的电子标识码为关键码的存储MO数据库中对应的MO terms的哈希表MO hash;
(4)将药品专业名称作为关键码建立相应的电子标识码集合的哈希表,即通过相同药品名称不同企业生产的关联在一起;
(5)建立以药品的电子标识码为关键码的药品评价哈希表;
(6)建立疾病对应的药品集合的哈希表,以疾病的MO term为关键码,以对应的药品集合为关键码对应的值,根据病患对相同疾病的每种药品评价的指标集合,运用快速排序算法得到某种疾病每种药物的评价排序,药品的评价指标设为药品的星级与药品在该疾病的使用率的乘积。
优选的,所述步骤(1)中,创建MO数据库的方法为:
a.将疾病及其特征用MO terms进行编号,每个MO terms代表一个顶点,两个terms之间的关系用有向边表示,这样将疾病和病征表示在一个有向无环图中;
b.顶点之间的关联分成两种类型:is_a关系和part_of关系;is_a关系是一种简单的包含关系;part_of关系表示一部分的包含关系,一种疾病有多种病征表现,病征和疾病之间是part_of的关系,疾病和疾病之间是is_a的关系,病征和病征之间是is_a的关系;
c.对于任两个terms之间的有向边,若是part_of的关系,则赋予权重;权重用关联度d表示;将父term与之关联的子terms之间进行关联度d分配,0<d<=1;其中关联度d(term1,term2)表示父病征term1出现term2子病征的概率;
d.对于任两个terms之间的有向边,若是is_a的关系,则赋予权重;权重用关联百分比表示;父term与子terms之间的关联百分比用该子term在父term所关联的所有子terms中出现比率,所述子terms的关联百分比之和为1。
优选的,所述步骤(3)创建方法为:采用药品的MO terms匹配关联,对于一种药品,根据它对应的电子标识码,用有关药品说明的哈希表,找到对应的适应症说明,所述说明为一个长字符串,然后在MO数据库对应的有向无环图中,从part_of和is_a之间的分界的顶点集合开始,由下层往上层逐层扫描与字符串某些子串匹配的MO terms,这样先得到关于医药所对应疾病的最靠下层疾病名称对应的MO terms,将这些信息存储到MO hash中,得到该药品对应疾病的MO terms后,再从这些疾病的MO terms出发,由上层往下层搜索对应的病症,即后代的子term,将得到的term集合作为哈希表的值。
进一步的,所述字符串匹配的方法,采用Sunday字符串匹配算法。
进一步的,所述字符串匹配的方法,据汉字数字编码表中的ASCII码将MO term中的词汇转化为数字编码,将字符串业转化为数字编码,然后用编码的数值先进行匹配,当匹配成功我们再进一步精确匹配。
本发明的有益效果为:通过本发明的方法,建立起基于疾病特征的医学信息本体数据库,并建立起一种基于医学信息数据库的疾病自我分析方法,使有效的数据与人体的实际状况相结合,使病患初期的病征得到更有效的甄别,最大可能的为帮助病患自诊提供准确有效的数据依据,在疾病自诊后相关疾病有药品推荐,显示排名前几位的药物(根据评价信息和治疗史中的使用率),并注明是否在医保;每个药物后面跟着排名前几位的企业(根据评价信息和企业销售额等),既为人们节省不必要的时间消耗,又不会耽误疾病的最佳治疗时间。
具体实施方式
下面结合具体实施例对本发明做进一步说明。
首先,建立医学信息本体(Medical Ontology)数据库,即MO数据库;
a.a.将疾病及其特征用MO terms进行编号,每个MO terms代表一个顶点,两个terms之间的关系用有向边表示,这样将疾病和病征表示在一个有向无环图中;
b.顶点之间的关联分成两种类型:is_a关系和part_of关系;is_a关系是一种简单的包含关系;part_of关系表示一部分的包含关系,一种疾病往往有多种病征表现,病征和疾病之间是part_of的关系,疾病和疾病之间是is_a的关系,病征和病征之间是is_a的关系;
c.对于任两个terms之间的有向边,若是part_of的关系,则赋予权重;权重用关联概率d表示;将父term与之关联的子terms之间进行关联度d分配(0<d<=1);其中关联度d(term1,term2)表示父病征term1出现term2子病征的概率;
d.对于任两个terms之间的有向边,若是is_a的关系,则赋予权重;权重用关联百分比表示;父term与子terms之间的关联百分比用该子term在父term所关联的所有子terms中出现比率,所述子terms的关联百分比之和为1。
然后,建立药品的数据匹配与疾病关联算法及药品评价:
(1)数据结构:每个企业生产的每种药品,一定对应唯一的标识(例如:药品条形码,或中国药品电子监管码,等,下面统一称“电子标识码”),用该标识能够进入国家食品药品管理局查找到这种药品的全部信息。而药品名称容易出现重复现象(不同企业生产相同的药品),所以该算法运用电子标识码作为哈希表(Hash table,或称散列表)的关键码(Key),我们将药品的不同信息用不同的哈希表来表示(例如:药品专业名称哈希表、药品商业注册名称哈希表、药品企业哈希表、药品说明哈希表等)。这样通过关键码和对应的哈希表能够快速准确找到相关产品信息。我们同时创建一个以药品电子标识码为关键码的存储MO数据库中对应的MOterms的哈希表(MO hash)。我们的算法就是要对每种药品器械分配关联相应的疾病和病症(这些疾病病症在MO数据库中对应一定的MO terms)。
另外,为了便于快速查找相同药品专业名称不同企业生产的药品,将药品专业名称作为关键码建立相应的电子标识码集合(或企业库)的哈希表。即通过相同药品名称不同企业生产的关联在一起。
为了对药品进行评价跟踪,同时也要建立以药品电子标识码为关键码的药品评价哈希表(Medicine Evaluation hash),而关键码对应的值可以包括评价次数与评价星级等统计信息。
(2)药品的MO terms匹配关联:对于一种药品,根据它对应的电子标识码,用有关药品说明的哈希表,找到对应的适应症说明(设定为一个长字符串string)。然后在MO数据库对应的有向无圈图中,从part_of和is_a之间的分界(也就是疾病与病症之间的分界)的顶点集合开始,由下层往上层逐层扫描(广度逐层回溯算法)与字符串某些子串(sub-string)匹配的MO terms(用到字符串匹配算法),这样先得到关于医药所对应疾病的最靠下层(最详细的)疾病名称对应的MO terms,将这些信息存储到MO hash中。得到该药品对应疾病的MO terms后,再从这些疾病的MO terms出发,由上层往下层搜索(广度优先搜索算法)对应的病症(后代的子term),将得到的term集合作为哈希表的值。
(3)字符串匹配算法,可以采用Sunday字符串匹配算法:见参考文献DanielM.Sunday,A very fast substring search algorithm,Communications of the ACM,v.33n.8,p.132-142,Aug.1990;
另一种更快速粗略匹配算法是根据汉字数字编码表中的ASCII码将MO term中的词汇转化为数字编码,然后用编码的数值和(sum)先进行匹配(即模式词汇数值和是否等于匹配的词汇数值和),当匹配成功我们再具体例如:“感冒”两个字对应的编码为(2448和3514),我们将感冒直接编码成这两个字的编码数值和(2448+3514=5962,并且记下字数2),要匹配的string也转化数字编码,然后扫描string对应的数字编码串,来判断数值和是否相等即可。若数值相等则可以进一步精确匹配。
(4)评价指标:药品建立MO哈希表同时,我们也建立疾病对应的药品集合的哈希表,我们以疾病的MO term为关键码(key),以对应的药品集合为关键码对应的值(keyvalue)。同时我们搜集了病友对相同疾病的每种药品评价的指标(运用哈希表套哈希表的结构hash of hash保存)集合,运用快速排序算法(Quick Sort)就能够得到某种疾病每种药物的评价排序。药品的评价指标设为药品的星级(1~5颗星,转化为数值1;2;3;4;5)与药品在该疾病的使用率r%的乘积。
(5)其它的例如是否医保,药企信息等都在药品说明的哈希表中保存。
例如:下面的例子是“惠菲宁”(美敏伪麻溶液,电子标识码81219650137650025868)的适应症描述:
[适应症]适用于缓解普通感冒、流行性感冒及过敏引起的咳嗽、打喷嚏、流鼻涕、鼻塞、咽痛等症状。
我们通过药品名称的哈希表(Name_hash)知道:Name_hash{81219650137650025868}=”美敏伪麻溶液”;通过药品适应症的哈希表(Indiction_hash)知道:
Indiction_hash{81219650137650025868}=(“适用于缓解普通感冒、流行性感冒及过敏引起的咳嗽、打喷嚏、流鼻涕、鼻塞、咽痛等症状”).
若普通感冒的MO term:0001122;流行性感冒的MO term:00001234;过敏的MOterm:0003458;咳嗽的MO term:100054;打喷嚏的MO term:100064;流鼻涕的MO term:100086;鼻塞的MO term:100046;咽痛的MO term:100057。则该药品对应的MO terms集合可用哈希表表示:
MO_hash{81219650137650025868}={0001122;00001234;0003458;100054;100064;100086;100046;100057}
为了便于区分,我们的MO term中数字开头是0的代表疾病;数字开头1的代表为症状;数字开头为2的生化指标等进行区分。
这样我们就能知道每种药品器械在MO数据库所匹配的term集合。同时我们也得到了对于同一种疾病对应的药品的电子标识码集合:
例如:感冒(设MO term:00001234):对应的药品及评价值(几星*使用率)的哈希表套哈希表(hash_of_hash)结构:
Disease2Med_hash_of_hash{00001234}={medicine_evaluation_hash{81219650137650025868}=5*60%(五星,使用率60%);medicine_evaluation_hash{81219650134567002345}=4*50%;medicine_evaluation_hash{8121965013765045789}=3*33%;…….}。
以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。