CN112765136B - 医学编码词典的存储方法、升级方法和装置 - Google Patents
医学编码词典的存储方法、升级方法和装置 Download PDFInfo
- Publication number
- CN112765136B CN112765136B CN202110370365.3A CN202110370365A CN112765136B CN 112765136 B CN112765136 B CN 112765136B CN 202110370365 A CN202110370365 A CN 202110370365A CN 112765136 B CN112765136 B CN 112765136B
- Authority
- CN
- China
- Prior art keywords
- chain
- version
- name
- coding
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/237—Lexical tools
- G06F40/242—Dictionaries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Medical Treatment And Welfare Office Work (AREA)
Abstract
本发明提供了一种医学编码词典的存储方法、升级方法和装置。该一种医学编码词典的存储方法包括以下步骤:导入医学编码词典数据;为所述医学编码词典数据的每个路径构建对应的编码链和名称链,所述编码链包括对应路径经过的各个编码,所述名称链包括对应路径经过的各个名称;在每个所述编码链中加入编码版本字符串,所述编码版本字符串包括所述编码链所在的一个或多个版本;在每个所述名称链中加入名称版本字符串,所述名称版本字符串包括所述名称链所在的一个或多个版本;以及将每个所述编码链与对应的每个所述名称链关联并存储。
Description
技术领域
本发明主要涉及医学信息技术领域,尤其涉及一种医学编码词典的存储方法、升级方法和装置。
背景技术
医学编码是指将原词转化成标准术语的方法。原词是指临床试验或上市后报告中研究者/患者的原始报告词汇。标准术语是指编码字典中的术语。在临床试验和研究中,需要对不良事件、合并治疗、用药原因、病史、死亡原因等进行医学编码,以便将这些信息用于医学核查、统计分析、病例检索等。每种编码字典都有其独有的结构、层级体系。
监管活动医学词典(MedDRA, Medical Dictionary for RegulatoryActivities)是在人用药品技术要求国际协调理事会(ICH, the International Councilfor Harmonisation of Technical Requirements for Pharmaceuticals for HumanUse)的主办下编制的医学标准术语集,可用于不良事件、病史、适应症等信息的医学编码,在药物上市前到上市后的整个监管过程中,用于数据的输入、检索、评价和展示。
MedDRA约含80000个术语,每个术语均有一个唯一的8位阿拉伯数字代码,或称编码。MedDRA字典包含五个层级:低位语(LLT, Low Level Term)、首选语(PT, PreferredTerm)、高位语(HLT, High Level Term)、高位组语(HLGT, High Level Group Term)及系统器官分类(SOC, System Organ Class)。其中,LLT是医学上的同义词汇;PT表达独特、明确的医学概念,是国际医学情报交换的基本用语;HLT代表首选语水平类似的医学术语集合;HLGT代表高位语水平类似的医学术语集合;SOC代表高位组语水平类似的医学术语集合。图1示出了该五个层级的术语的层次关系,其中,位于最上方的SOC层级最高,位于最下方的LLT层级最低。上级术语是范围较广的一组术语,适用于其下级的每个术语。
MedDRA从1999年2.1版本之后每年以两个版本的节奏进行更新,临近两个版本之间涉及的变更种类繁多。因此临床项目中一般限定使用一个固定的版本以排除词典本身变化带来的术语差异。如果项目的周期比较长,为满足数据交换、监管对提交版本的要求,会产生使用MedDRA编码升级的需求,即从一个版本的编码结果迁移到另外一个版本。
MedDRA本身提供邻近版本之间的版本差异,但这无法满足跨版本的迁移需要。另外Meddra的数据结构是一种五层的网络结构,第二层到第五层都是多对多关系,如何快速批量地进行编码升级也是方案中需要考虑的问题。
发明内容
本发明的一个目的是提供一种医学编码词典的存储方法和装置,可以维护词典的各个版本,方便进行跨版本升级和快速升级。
本发明的另一个目的是提供一种医学编码词典的升级方法和装置,可以进行跨版本升级和快速升级。
为解决上述技术问题,本发明提供了一种医学编码词典的存储方法,包括以下步骤:导入医学编码词典数据;为所述医学编码词典数据的每个路径构建对应的编码链和名称链,所述编码链包括对应路径经过的各个编码,所述名称链包括对应路径经过的各个名称;在每个所述编码链中加入编码版本字符串,所述编码版本字符串包括所述编码链所在的一个或多个版本;在每个所述名称链中加入名称版本字符串,所述名称版本字符串包括所述名称链所在的一个或多个版本;以及将每个所述编码链与对应的每个所述名称链关联并存储。
在发明的一实施例中,所述编码版本字符串包括多个位,每个位的位置代表一个大版本,且每个位的值代表一个或多个小版本;和/或所述名称版本字符串包括多个位,每个位的位置代表一个大版本,且每个位的值代表一个或多个小版本。
在本发明的一实施例中,将每个所述编码链与对应的每个所述名称链关联并存储之前还包括:分别对每个所述编码链和每个所述名称链进行哈希编码。
本发明的另一方面提供一种医学编码词典的升级方法,包括以下步骤:接收输入编码、当前版本和目标版本;使用所述输入编码在编码链表中查询编码链,每个编码链包括医学编码词典的每个路径经过的各个编码以及编码版本字符串,所述编码版本字符串包括所述编码链所在的一个或多个版本;基于查到的编码链在名称链表中查询当前版本名称链和目标版本名称链,每个名称链包括医学编码词典的每个路径经过的各个名称以及名称版本字符串,所述名称版本字符串包括所述名称链所在的一个或多个版本;确认查到的编码链存在当前版本和目标版本,且对所述编码链进行升级。
在本发明的一实施例中,在使用所述输入编码在编码链表中查询编码链之前还包括:计算所述输入编码的哈希值。
在本发明的一实施例中,在接收输入编码之后还包括:确认所述输入编码的内容齐全。
在本发明的一实施例中,在接收输入编码之后还包括:判断所述输入编码的内容不齐全,且对所述输入编码进行重新编码。
在本发明的一实施例中,所述编码版本字符串包括多个位,每个位的位置代表一个大版本,且每个位的值代表一个或多个小版本;和/或所述名称版本字符串包括多个位,每个位的位置代表一个大版本,且每个位的值代表一个或多个小版本。
在本发明的一实施例中,基于查到的编码链在名称链表中查询当前版本名称链和目标版本名称链之后还包括:判断查到的编码链不存在当前版本和/或目标版本,且对所述输入编码进行重新编码。
在本发明的一实施例中,对所述输入编码进行重新编码的步骤包括:获取所述输入编码的第一层编码;使用所述第一层编码查询所有编码链;判断是否编码链是否存在,如果存在,则获取编码链的目标版本,否则判断为编码失败;判断编码链的目标版本是否存在,如果存在则重新编码成功,否则判断为编码失败。
在本发明的一实施例中,基于所述输入编码对所述编码链进行升级的步骤包括:判断所述目标版本名称链相对于所述当前版本名称链是否有变更,如果未变更则进行无条件升级,如果变更则进行有条件升级。
本发明还提出一种医学编码词典的存储装置,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现如上所述的方法。
本发明还提出一种医学编码词典的升级装置,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现如上所述的方法。
本发明还提出一种存储有计算机程序代码的计算机存储介质,所述计算机程序代码在由处理器执行时实现如上所述的方法。
与现有技术相比,本发明的存储方法中预先构建多种版本的编码链和名称链,方便跨版本升级。并且升级的过程只需要输入对应的编码链、当前版本以及待升级的目标版本,就能很快判定这个输入能否升级成功。并且由于把不同版本的相同编码链和名称链进行了整合,显著压缩的链的数量,方便存储。
附图说明
包括附图是为提供对本申请进一步的理解,它们被收录并构成本申请的一部分,附图示出了本申请的实施例,并与本说明书一起起到解释本发明原理的作用。附图中:
图1是作为医学编码词典示例的Meddra的层次示意图。
图2是根据本申请一实施例的医学编码词典的存储方法流程图。
图3是根据本申请一实施例的医学编码词典的编码链及名称链结构示意图。
图4是根据本申请一实施例的医学编码词典的版本号字符串结构示意图。
图5是根据本申请一实施例的医学编码词典的经过哈希编码后的编码链及名称链结构示意图。
图6是根据本申请一实施例的医学编码词典的编码链及名称链的数据结构。
图7是根据本申请一实施例的医学编码词典的升级方法流程图。
图8是根据本申请一实施例的医学编码词典的详细升级流程图。
图9是本申请的一个示例性计算机系统的框图。
具体实施方式
为了更清楚地说明本申请的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本申请的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
此外,需要说明的是,使用“第一”、“第二”等词语来限定零部件,仅仅是为了便于对相应零部件进行区别,如没有另行声明,上述词语并没有特殊含义,因此不能理解为对本申请保护范围的限制。此外,尽管本申请中所使用的术语是从公知公用的术语中选择的,但是本申请说明书中所提及的一些术语可能是申请人按他或她的判断来选择的,其详细含义在本文的描述的相关部分中说明。此外,要求不仅仅通过所使用的实际术语,而是还要通过每个术语所蕴含的意义来理解本申请。
应当理解,当一个部件被称为“在另一个部件上”、“连接到另一个部件”、“耦合于另一个部件”或“接触另一个部件”时,它可以直接在该另一个部件之上、连接于或耦合于、或接触该另一个部件,或者可以存在插入部件。相比之下,当一个部件被称为“直接在另一个部件上”、“直接连接于”、“直接耦合于”或“直接接触”另一个部件时,不存在插入部件。同样的,当第一个部件被称为“电接触”或“电耦合于”第二个部件,在该第一部件和该第二部件之间存在允许电流流动的电路径。该电路径可以包括电容器、耦合的电感器和/或允许电流流动的其它部件,甚至在导电部件之间没有直接接触。
本申请的实施例描述医学编码词典的存储方法和升级方法。在一些实施例中,基于医学编码词典编码过程的特点和医学编码词典数据的兼容性及静态性,预先构建编码链,维护编码链和其所有版本的映射关系,并基于编码链进行升级。
图2是根据本申请一实施例的医学编码词典的存储方法流程图。以下参考图2所示描述存储方法的过程。
在步骤201,导入医学编码词典数据。
在此步骤中,获取官方的词典数据,例如包括LLT,PT,HLT,HLGT和SOC各层的数据,以及PT_HLT的关系数据,HLT_HLGT的关系数据、HLGT_SOC的关系数据。词典数据的一个示例是Meddra,其结构可参考图1所示。
在步骤202,为医学编码词典数据的每个路径构建对应的编码链和名称链。
在此步骤中,为医学编码词典数据从LLT中的各节点到SOC的各节点的每个路径构建编码链和名称链。具体而言,参考图1所示,LLT包括例如L1-L6的多个节点,每个节点包括编码和与编码对应的名称。类似地,PT包括例如P1-P3的多个节点,HTL包括例如H1和H2的多个节点,HTGL包括例如G1-G3的多个节点,SOC包括例如S1-S4的多个节点。一条编码链包括一条路径经过的各个编码。例如路径L1-P1-H1-G1-S1经过的编码构成一条编码链,路径L1-P1-H1-G2-S2经过的编码构成另一条编码链。一条名称链包括一条路径经过的各个术语名称。例如路径L1-P1-H1-G1-S1经过的名称构成一条名称链,路径L1-P1-H1-G2-S2经过的名称构成另一条名称链。
图3是根据本申请一实施例的医学编码词典的编码链及名称链结构示意图。参考图3所示,对每个路径构建了一条编码链31和对应的两条名称链32a和32b。名称链32a和32b分别属于不同的语言,例如中文(CN)和英文(EN)。
在步骤203,在每个编码链中加入编码版本字符串。
在此步骤中,每个编码链中加入编码版本字符串,以反映该编码链所对应的一个或多个版本。编码版本字符串包括编码链所在的一个或多个版本。
根据Meddra的版本历史,每年都会有版本。而且除了前三个版本之外,其他都是每年两个版本,编号都是XX.0、XX.1。因此在一个实施例中,编码版本字符串包括多个位,每个位的位置代表一个年度的大版本。举例来说,一个位如果是非空,则代表该位存在年度大版本,如果是空,则代表该位不存在年度大版本。进一步,每个位的值代表该年度的一个或多个小版本。举例来说,可以为每个小版本赋值,而该位的值为各小版本的值的运算结果。在此,要求不同小版本的赋值不同,且运算结果与任一小版本的赋值不同。这样,读取该值,即可知道存在哪些小版本。
在步骤204,在每个名称链中加入名称版本字符串。
每个名称链中加入名称版本字符串,以反映该名称链所对应的一个或多个版本。名称版本字符串包括名称链所在的一个或多个版本。在一个实施例中,名称版本字符串的组成方式与前文描述的编码版本字符串类似。
如图3所示,编码链31的末尾包含编码版本字符串311,名称链32a和32b的末尾分别包含名称版本字符串321。通过前述版本编码方式,版本无需单独存储,最终的编码链和名称链数据量和可以保持在20万左右。
在可选实施例中,还分别对每个编码链和每个名称链进行哈希(Hash)编码,这可以进一步减少编码升级的输入。图5是根据本申请一实施例的医学编码词典的经过哈希编码后的编码链及名称链结构示意图。参考图5所示,编码链和名称链都经过哈希编码。
在步骤205,将每个编码链与对应的每个名称链关联并存储。
在此步骤中,将每个编码链和与其对应的一个或多个名称链关联并存储。图6是根据本申请一实施例的医学编码词典的编码链及名称链的数据结构,在图6中,code_chain是编码链,其包括hash, llt_code, pt_code, hlt_code, hlgt_code, soc_code, llt_currency, pt_soc和version_list等组成部分。其中hash是哈希编码,llt_code, pt_code, hlt_code, hlgt_code, soc_code分别是词典如在图1的各层的编码,llt_currency代表是否现行,pt_soc是PT层和SOC层的关系,version_list是编码版本字符串。name_chain是名称链,其包括code_chain_id, hash, llt_name, pt_name, hlt_name, hlgt_name, soc_name, lang和version_list等组成部分。其中hash是哈希编码,code_chain_id是对应的编码链ID,llt_name, pt_name, hlt_name, hlgt_name, soc_name分别是词典如在图1的各层的名称,lang是语言,version_list是名称版本字符串。
使用本实施例的方法来构建及存储编码链、名称链及各自的版本具有明显的优势。根据当前的数据规模,可以计算出链的规模大致等于,最近一个版本的链总数(12万左右) 与每个邻近版本涉及链调整的记录数(按每个版本2000左右数据量估计) 之和。估计所有版本总数应该在20万附近,这一数量被显著压缩。相比之下,如果单独存储版本,数据将会是所有版本编码链和名称链数量总和,仅仅中英文总数将会达到:版本数(43个) *语言版本(2个)* 链数量(10万+) > 800万,这会对单实例的关系型存储造成一些挑战,且对于获取一条链的版本要外关联一张表来查询,维护和更新都会有额外成本。常规的存储方法则是每一层结构存储在一个表中,不方便判断能否升级,也不利于快速升级。
本申请中使用了流程图用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,或将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
图4是根据本申请一实施例的医学编码词典的版本字符串结构示意图。前述步骤203和204中的编码版本字符串和名称版本字符串可使用图4所示的版本字符串。具体而言,使用一个例如几十位或更多的字符串,大版本对应字符串的位置,小版本对应该位置下的字符值。例如,大版本可为1, 2, 2.1, 3, …, 22,分别对应存储值的各个位置。如果该位置有大版本,则存储值非空,如果该位置没有大版本,则存储值为空(以0表示)。小版本可为1, 2两种,其赋值为1或2。该位置的值为小版本值的运算结果,例如和运算结果。当某个位置只有版本1时,则其值为1,有版本1和2时,其值为3。由此,实现利用位运算来记录多个版本值。存储值是版本字符串实际的存储结果,其包括多个字符。
下表1是以3个版本举例的版本号及存储值。实际上在java char两个字节范围内支持大量子版本存储,因此可以面对可能Meddra版本发布的变化。+48是降低常规两个版本时阅读存储值的成本。
表1
以字符串有100位为例,假设编码链:
10000001(llt)-10001890(pt)-10024972(hlt)-10024967(hlgt)-0038738(soc)存在于"16.0","19.1","20.0","20.1","21.0","21.1"这6个版本中,那么其对应的版本合并编码为:
0000000000000000100233000000000000000000000000000000000000000000000000000000000000000000000000000000
其中第16位为1代表存在16.0版本,第19位为2代表存在19.0版本,第20位为3代表存在20.0和20.1版本,第21位为3代表存在21.0和20.1版本。
如果新导入了17.0的版本数据,且存在该编码链,那么版本合并编码为:
0000000000000000110233000000000000000000000000000000000000000000000000000000000000000000000000000000
其中第17位由0变为1,代表存在17.0版本。
通过前述存储方法中预先构建编码链的过程,把不同版本的相同编码链和名称链进行了整合。编码升级的过程只需要输入对应的编码链、当前版本以及待升级的目标版本,我们就能很快判定这个输入能否升级成功、名称是否有变更等信息。另外由于链的唯一信息被转换成了对应的hash值,如果批量输入多个名称链(程序会把输入转成code chainhash),也批量获取所有名称链的版本信息。
图7是根据本申请一实施例的医学编码词典的升级方法流程图。下面参考参考图7所示描述本申请一实施例的升级方法。
在步骤701,接收输入编码、当前版本和目标版本。
在此步骤中,输入代表编码链的编码,包括llt-pt-hlt-hlgt-soc各层的编码。在此,输入编码可代表一条编码链,也可以代表多条。
当前版本和目标版本可以是任意版本和语言。
在步骤702,使用输入编码在编码链表中查询编码链。
在此,编码链表是使用前文所描述的存储方法存储的编码链表,包括预先构建的编码链。如前文所述,每个编码链包括医学编码词典的每个路径经过的各个编码以及编码版本字符串,编码版本字符串包括编码链所在的一个或多个版本。通过前述的输入编码,可在编码链表中找到编码链。如果存在无法找到编码链的情况,则需要进行下文描述的重新编码以完成升级。
在步骤703,基于查到的编码链在名称链表中查询当前版本名称链和目标版本名称链。
在此,名称链表是使用前文所描述的存储方法存储的名称链表,包括预先构建的名称链,且名称链与编码链对应。如前文所述,每个名称链包括医学编码词典的每个路径经过的各个名称以及名称版本字符串,名称版本字符串包括名称链所在的一个或多个版本。
通过前述的名称链,可在名称链表中找到当前版本名称链和目标版本名称链。如果存在多语言,则找到的是所有语言版本的名称链。
在步骤704,确认查到的编码链存在当前版本和目标版本,且对编码链进行升级。
在此步骤中,可解析名称链中的名称版本字符串,根据解析结果确认当前版本和目标版本是否存在。如果存在则可进行编码链升级。在此,名称版本字符串包括多个位,每个位的位置代表一个大版本,且每个位的值代表一个或多个小版本。
在一个实施例中,在步骤701之后,先确认输入编码的内容齐全,则进行步骤702。相反,如果是判断输入编码的内容不齐全,且对输入编码进行先问描述的重新编码。齐全的编码需要包括llt_code, pt_code, hlt_code, hlgt_code, soc_code。如果仅仅存在llt_code则需要重新编码,如果仅存在其他编码则输入无效且无法编码,退出流程。
在一个实施例中,如果存储的编码链是经过哈希编码的,则查询编码链之前还包括计算输入编码的哈希值,再使用计算的哈希值进行查询。
在一个实施例中,在步骤703之后包括,判断查到的编码链不存在当前版本和/或目标版本,且对输入编码进行下文描述的重新编码。
在对输入编码进行重新编码时,首先,获取输入编码的第一层编码,即llt_code,其次,使用第一层编码查询所有编码链,判断是否编码链是否存在。如果编码链存在,则获取编码链的目标版本,否则判断为编码失败。接着判断编码链的目标版本是否存在,如果存在则重新编码成功,否则判断为编码失败。
在一个实施例中,在步骤704中还判断目标版本名称链相对于当前版本名称链是否有变更,如果未变更则进行无条件升级,如果变更则进行有条件升级。无条件升级是自动升级,无需人工确认。有条件升级则需要提供原因,经过人工确认。
图8是根据本申请一实施例的医学编码词典的详细升级流程图。下面参考图8所示,并以一个编码链从 Meddra 19.1升级到23.0来演示升级过程。
原始的编码输入:
[{"lltCode": "10002404",
"ptCode": "10002411",
"hltCode": "10002412",
"hlgtCode": "10025321",
"socCode": "10029104"}]
当前版本信息:
"language": "cn",
"version": "19.1"
目标版本:
"language": "cn",
"version": "23.0"
首先在步骤801,接收输入编码、当前版本及目标版本。在步骤802,验证输入编码是否内容齐全。在此,内容齐全是指llt_code, pt_code, hlt_code, hlgt_code, soc_code都存在。如果内容齐全则进入步骤805,否则在步骤803,判断编码是否有效。如果编码中仅仅存在llt_code则为有效,但需要重新编码,进入步骤813。如果仅存在其他编码,则输入无效且无法编码,则在步骤804退出。
在步骤805进行哈希编码。在一个示例中,用md5摘要算法计算编码链的hash值:9f0da10aff021ad2b9a159c15227ede3。
在步骤806,基于hash值去编码链表查询编码链,如果查到则进入步骤807,否则进入步骤813重新编码。在步骤807,基于编码链去名称链表查询获取当前版本和目标版本中所有语言的名称链,如果查到则进入步骤808,否则进入步骤813重新编码。
通过上述过程,完成了基本的数据验证和hash验证。验证完成就获取了正确的编码链,以及当前版本和目标版本的名称链,并且获取相应的编码内容。
接下来在步骤808和809分别验证当前编码链是否在当前和目前的版本都存在,如果都存在,编码层面就完成了升级,进入步骤810。
在步骤808和809中,利用名称链中的名称版本字符串进行判断。
具体地说,在步骤807中已经查询了名称链表的名称链,其中名称版本字符串(version_list)存储了100位的版本字符串:
0000000000000000100233110000000000000000000000000000000000000000000000000000000000000000000000000000
只需要从这个100的字符串中验证19.1和23.0是否存在即可。根据之前的编码规则解码,名称链链存在如下版本:
"16.0","19.1","20.0","20.1","21.0","21.1","22.0","23.0"。可以看到19.1和23.0是存在的,因此编码链是可以升级的。
在步骤810,进一步比较名称链中的名称是否发生变更。由于可能存在编码没变,但是两个版本的名称(包括语言)都变化的情况,需要把这些变化识别出来。在步骤807,已经基于编码链,把当前版本和目标版本语言下的所有名称链都取出来了,这些名称链中也存在对应的版本号字符串。因此可以同样的解码比较方法找出名称链。如果名称链其实也没有变化,那么就可以在步骤811进行无条件升级。如果有不同则在步骤812进行有条件升级,并标记为升级待确认。
验证过程和比较过程中,只输入了llt_code,或者llt_code, pt_code, hlt_code, hlgt_code, soc_code各字段都有但是整个链无效时,会涉及重新编码。在步骤813,获取输入编码的第一层编码,即llt_code。在步骤814,使用llt_code查询所有编码链,并判断主编码链(主轴)是否存在,如果主编码链存在,则在步骤815获取主编码链的目标版本,并判断主编码链的目标版本是否存在,如果存在则在步骤816判断重新编码成功,否则在步骤817判断为编码失败。如果当前和目标语言不一致,则标记下语言变化。
本申请实施例的升级方法,可以实现快速查找当前和目标的编码链以及编码链,并验证版本、名称等信息。整个过程均可以批量进行。不必经历Meddra本身复杂关联结构的逐层查找验证,就能得出最后的比较结果。本申请实施例的升级方法在2核4G机器上部署服务,1000组编码的升级时间为300ms左右。
图9是本申请的一个示例性计算机系统的框图。图9的计算机系统仅为合适的环境的一个示例,并非对本发明的使用范围或功能提出任何局限。系统900可包括内部通信总线901、处理器(Processor)902、只读存储器(ROM)903、随机存取存储器(RAM)904、以及通信端口905。当应用在个人计算机上时,系统900还可以包括硬盘907。内部通信总线901可以实现系统900组件间的数据通信。处理器902可以进行判断和发出提示。在一些实施例中,处理器902可以由一个或多个处理器组成。通信端口905可以实现系统900与外部的数据通信。在一些实施例中,系统900可以通过通信端口905从网络发送和接受信息及数据。系统900还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘907,只读存储器(ROM)903和随机存取存储器(RAM)904,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器902所执行的可能的程序指令。处理器执行这些指令以实现方法的主要部分。处理器处理的结果通过通信端口传给终端设备,在用户界面上显示。
上述的存储方法和/或方法可以实施为计算机程序,保存在图9所示的硬盘907或ROM 903或其他计算机可读存储介质中,并可记载到处理器902中执行。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述发明披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
本申请的一些方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。处理器可以是一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理器件(DAPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器或者其组合。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,压缩盘CD、数字多功能盘DVD……)、智能卡以及闪存设备(例如,卡、棒、键驱动器……)。
计算机可读介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、射频信号、或类似介质、或任何上述介质的组合。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本申请一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
虽然本申请已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本申请,在没有脱离本申请精神的情况下还可作出各种等效的变化或替换,因此,只要在本申请的实质精神范围内对上述实施例的变化、变型都将落在本申请的权利要求书的范围内。
Claims (14)
1.一种医学编码词典的存储方法,其特征在于包括以下步骤:
导入医学编码词典数据;
为所述医学编码词典数据的每个路径构建对应的编码链和名称链,所述编码链包括对应路径经过的各个编码,所述名称链包括对应路径经过的各个名称;
在每个所述编码链中加入编码版本字符串,所述编码版本字符串包括所述编码链所在的一个或多个版本;
在每个所述名称链中加入名称版本字符串,所述名称版本字符串包括所述名称链所在的一个或多个版本;以及
将每个所述编码链与对应的每个所述名称链关联并存储。
2.如权利要求1所述的方法,其特征在于,
所述编码版本字符串包括多个位,每个位的位置代表一个大版本,且每个位的值代表一个或多个小版本;和/或
所述名称版本字符串包括多个位,每个位的位置代表一个大版本,且每个位的值代表一个或多个小版本。
3.如权利要求1所述的方法,其特征在于,将每个所述编码链与对应的每个所述名称链关联并存储之前还包括:分别对每个所述编码链和每个所述名称链进行哈希编码。
4.一种医学编码词典的升级方法,其特征在于包括以下步骤:
接收输入编码、当前版本和目标版本;
使用所述输入编码在编码链表中查询编码链,每个编码链包括医学编码词典的每个路径经过的各个编码以及编码版本字符串,所述编码版本字符串包括所述编码链所在的一个或多个版本;
基于查到的编码链在名称链表中查询当前版本名称链和目标版本名称链,每个名称链包括医学编码词典的每个路径经过的各个名称以及名称版本字符串,所述名称版本字符串包括所述名称链所在的一个或多个版本;
解析所述名称版本字符串以确认查到的编码链存在当前版本和目标版本,且对所述编码链进行升级。
5.如权利要求4所述的方法,其特征在于,在使用所述输入编码在编码链表中查询编码链之前还包括:计算所述输入编码的哈希值。
6.如权利要求4所述的方法,其特征在于,在接收输入编码之后还包括:确认所述输入编码的内容齐全。
7.如权利要求4所述的方法,其特征在于,在接收输入编码之后还包括:判断所述输入编码的内容不齐全,且对所述输入编码进行重新编码。
8.如权利要求4所述的方法,其特征在于,
所述编码版本字符串包括多个位,每个位的位置代表一个大版本,且每个位的值代表一个或多个小版本;和/或
所述名称版本字符串包括多个位,每个位的位置代表一个大版本,且每个位的值代表一个或多个小版本。
9.如权利要求4所述的方法,其特征在于,基于查到的编码链在名称链表中查询当前版本名称链和目标版本名称链之后还包括:
判断查到的编码链不存在当前版本和/或目标版本,且对所述输入编码进行重新编码。
10.如权利要求7或8所述的方法,其特征在于,对所述输入编码进行重新编码的步骤包括:
获取所述输入编码的第一层编码;
使用所述第一层编码查询所有编码链;
判断编码链是否存在,如果存在,则获取编码链的目标版本,否则判断为编码失败;
判断编码链的目标版本是否存在,如果存在则重新编码成功,否则判断为编码失败。
11.如权利要求4所述的方法,其特征在于,基于所述输入编码对所述编码链进行升级的步骤包括:
判断所述目标版本名称链相对于所述当前版本名称链是否有变更,如果未变更则进行无条件升级,如果变更则进行有条件升级。
12.一种医学编码词典的存储装置,其特征在于包括:
存储器,用于存储可由处理器执行的指令;以及
处理器,用于执行所述指令以实现如权利要求1-3任一项所述的方法。
13.一种医学编码词典的升级装置,其特征在于包括:
存储器,用于存储可由处理器执行的指令;以及
处理器,用于执行所述指令以实现如权利要求4-11任一项所述的方法。
14.一种存储有计算机程序代码的计算机存储介质,其特征在于所述计算机程序代码在由处理器执行时实现如权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110370365.3A CN112765136B (zh) | 2021-04-07 | 2021-04-07 | 医学编码词典的存储方法、升级方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110370365.3A CN112765136B (zh) | 2021-04-07 | 2021-04-07 | 医学编码词典的存储方法、升级方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112765136A CN112765136A (zh) | 2021-05-07 |
CN112765136B true CN112765136B (zh) | 2021-07-09 |
Family
ID=75691169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110370365.3A Active CN112765136B (zh) | 2021-04-07 | 2021-04-07 | 医学编码词典的存储方法、升级方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112765136B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115017326B (zh) * | 2022-05-12 | 2023-08-18 | 青岛普瑞盛医药科技有限公司 | 医学编码方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408820A (zh) * | 2018-10-17 | 2019-03-01 | 长沙瀚云信息科技有限公司 | 一种医学术语映射系统和方法、设备及存储介质 |
CN110263184A (zh) * | 2019-06-20 | 2019-09-20 | 中国医学科学院医学信息研究所 | 一种数据处理方法及相关设备 |
CN110389943A (zh) * | 2019-07-25 | 2019-10-29 | 普元信息技术股份有限公司 | 大数据环境下基于码段管理和编码规则实现编码管理优化处理的系统及其方法 |
CN110705214B (zh) * | 2019-08-27 | 2023-05-02 | 天津开心生活科技有限公司 | 一种自动编码方法及装置 |
CN112131867A (zh) * | 2020-09-22 | 2020-12-25 | 上海亿普医药科技有限公司 | 临床试验医学编码系统 |
-
2021
- 2021-04-07 CN CN202110370365.3A patent/CN112765136B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112765136A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7792822B2 (en) | Systems and methods for modeling partitioned tables as logical indexes | |
JP3152868B2 (ja) | 検索装置および辞書/テキスト検索方法 | |
US7680789B2 (en) | Indexing and searching numeric ranges | |
US20210049234A1 (en) | Web Element Rediscovery System and Method | |
CN115563287B (zh) | 一种获取关联对象的数据处理系统 | |
CN112541338A (zh) | 相似文本匹配方法、装置、电子设备及计算机存储介质 | |
US10171311B2 (en) | Generating synthetic data | |
CN110362542B (zh) | 核电站文件编码方法、装置、计算机设备和存储介质 | |
CN114822812A (zh) | 角色对话模拟方法、装置、设备及存储介质 | |
CN113377740A (zh) | 铁路元数据管理方法、应用方法及装置 | |
CN116737879A (zh) | 知识库查询方法、装置、电子设备及存储介质 | |
CN111563139B (zh) | Ocr识别发票药品名的校验方法、装置及计算机设备 | |
CN111832287A (zh) | 一种实体关系联合抽取方法及装置 | |
CN114490853A (zh) | 数据处理方法、装置、设备、存储介质及程序产品 | |
CN112765136B (zh) | 医学编码词典的存储方法、升级方法和装置 | |
CN111126056B (zh) | 一种识别触发词的方法及装置 | |
CN112274913A (zh) | 游戏服务器的合并方法及装置、存储介质、电子装置 | |
CN115099233A (zh) | 一种语义解析模型的构建方法、装置、电子设备及存储介质 | |
Srivastav et al. | An Approach for fast Compressed text Matching and to avoid false Matching using WBTC and Wavelet Tree | |
KR101827965B1 (ko) | 연동 통제 문서 분석 장치 및 방법 | |
CN113821211B (zh) | 命令解析方法、装置、存储介质和计算机设备 | |
CN113434413B (zh) | 基于数据差异的数据测试方法、装置、设备及存储介质 | |
CN113887201A (zh) | 文本定长纠错方法、装置、设备及存储介质 | |
CN114942749A (zh) | 审批系统开发方法、装置、设备及存储介质 | |
CN111310459B (zh) | 机器学习组件的训练方法及装置、中文分词方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |