CN108806797A - 一种医疗数据的处理方法及系统 - Google Patents
一种医疗数据的处理方法及系统 Download PDFInfo
- Publication number
- CN108806797A CN108806797A CN201810678384.0A CN201810678384A CN108806797A CN 108806797 A CN108806797 A CN 108806797A CN 201810678384 A CN201810678384 A CN 201810678384A CN 108806797 A CN108806797 A CN 108806797A
- Authority
- CN
- China
- Prior art keywords
- expression formula
- cotyledon
- character
- executable
- word
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H50/00—ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics
- G16H50/70—ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics for mining of medical data, e.g. analysing previous cases of other patients
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
Landscapes
- Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Public Health (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Epidemiology (AREA)
- Pathology (AREA)
- Databases & Information Systems (AREA)
- Primary Health Care (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明涉及一种医疗数据的处理方法及系统,所述方法步骤如下:输入待处理的医疗数据,所述数据为字符串格式;将输入的医疗数据进行单词拼接和识别后得到符号序列;将所述符号序列构造成一个语法树;将所述语法树,从根节点开始递归执行,输出处理结果。本发明所述方法和系统用以解决很难通过简单的产品功能实现的医学上一些复杂多变的统计分析。
Description
技术领域
本发明涉及医疗技术领域,尤其涉及一种医疗数据的处理方法及系统。
背景技术
医疗关乎全人类的健康,随着大数据的发展,医疗数据增加,与此同时,医学人员时常需要对医疗数据库数据做大量的查询和分析,而医学上一些复杂多变的统计分析很难通过简单的产品功能实现。
发明内容
鉴于上述的分析,本发明旨在提供一种医疗数据的处理方法及系统,用以解决很难通过简单的产品功能实现的医学上一些复杂多变的统计分析。
本发明的目的主要是通过以下技术方案实现的:
本发明一方面提供一种医疗数据的处理方法,包括如下步骤:
输入待处理的医疗数据,所述数据为字符串格式;
将输入的医疗数据进行单词拼接和识别后得到符号序列;
将所述符号序列构造成一个语法树;
将所述语法树,从根节点开始递归执行,输出处理结果。
上述方案的有益效果为:通过将医疗数据构造成语法树,并将语法树递归执行,输出处理结果,实现了医疗数据方便的统计分析处。
进一步地,将输入的医疗数据进行单词拼接和识别包括:将所述医疗数据分割成字符,然后进行单词拼接,对拼接得到的每一单词进行识别,判断该单词是常量还是变量,当判断结果为变量时,进一步判断该单词是当前可执行的表达式还是数据列表表达式。
上述进一步方案的有益效果为:上述方案实现了单词的拼接和识别。
进一步地,所述单词拼接具体包括:依次读取字符,如果发现字符“(”则认为是一个表达式的开始,发现字符“)”则认为是表达式的结束,读取到“(”、“)”和空格这三种字符时,将会结束该单词的拼接,并开始下一个单词的拼接。
进一步地,判断单词是当前可执行的表达式还是数据列表表达式具体包括:依次读取字符,如果发现字符“(”后面紧跟的单词在表达式映射表中可以查到,所述单词则被标识为当前可执行的表达式,否则所述单词被认为是一个数据列表表达式。
进一步地,将所述符号序列构造成一个语法树,具体包括:初始化主表达式,将主表达式作为整个语法树的根节点;
依次读取符号序列,当发现字符为“(”则认为是一个空表达式的开始,将该空表达式作为主表达式的子叶,接着读取“(”字符后的字符或单词;
如果该字符或单词为可执行表达式,则将所述空表达式指定为可执行表达式;接着读取下一字符或单词,其无论是可执行表达式还是非可执行表达式,都作为当前可执行表达式的子叶参数;
如果所述“(”字符后的字符或单词为非可执行表达式,则将所述空表达式指定为数据列表表达式,并且将所述字符或单词作为该数据列表表达式的子叶参数,继续读取下一个字符或单词,该字符或单词作为该数据列表表达式的子叶参数;
若读取的字符为“)”,则表达式结束,若读取的字符为“(”,则该“(”构造的完整表达式为上一表达式的子叶参数。
上述进一步方案的有益效果为:通过上述方案实现了将医疗数据的符号序列构造成语法树。
进一步地,所述递归执行步骤为:从根节点开始执行,如果所述当前表达式子叶上或子节点的表达式包含可执行表达式则先执行所述可执行表达式,否则,执行当前表达式。
进一步地,所述递归执行具体步骤为:
从根节点即主表达式开始执行,首先执行主表达式的第一个子叶表达式;
如果发现第一个子叶表达式仍然有子叶,则继续执行该子叶,若发现该子叶的子叶参数为非可执行表达式,可直接使用,若发现该子叶的子叶参数为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
继续执行主表达式的其他子叶,若该子叶的子叶参数为非可执行表达式,可直接使用,若该子叶为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
各执行表达式的执行结果依次向上返回,最终的结果返回至主表达式,结束执行。
上述进一步方案的有益效果为:通过上述方案实现了,将由医疗数据符号序列构造的语法树递归执行。
本发明另一方面还提供一种医疗数据的处理系统,所述系统包括词法分析器和解释器,所述词法分析器将输入的医疗数据进行单词拼接和识别后得到符号序列;然后将所述符号序列构造成一个语法树;所述解释器用于将所述语法树,从根节点开始递归执行,输出处理结果。
进一步地,所述词法分析器将所述符号序列构造成一个语法树具体包括:初始化主表达式,将主表达式作为整个语法树的根节点;
依次读取符号序列,当发现字符为“(”则认为是一个空表达式的开始,该空表达式作为主表达式的子叶,接着读取“(”字符后的字符或单词;
如果该字符或单词为可执行表达式,则将其所述空表达式指定为可执行表达式;接着读取下一字符或单词,其无论是可执行表达式还是非可执行表达式,都作为当前可执行表达式的子叶参数;
如果所述“(”字符后的字符或单词为非可执行表达式,则将其作为所述空表达式指定为数据列表表达式,并且将所述字符或单词作为该数据列表表达式的子叶参数,继续读取下一个字符或单词,该字符或单词作为该数据列表表达式的子叶参数;
若读取的字符为“)”,则表达式结束,若读取的字符为“(”,则该“(”构造的完整表达式为上一表达式的子叶参数。
上述进一步方案的有益效果为:通过上述方案实现了,
进一步地,所述词法分析器,用于将所述医疗数据分割成字符,然后进行单词拼接,判断单词是常量还是变量,判断单词是当前可执行的表达式还是数据列表表达式,然后构造一个语法树。
进一步地,所述解释器,用于将所述语法树,从主表达式开始执行,首先执行主表达式的第一个子叶表达式;
如果发现第一个子叶表达式仍然有子叶,则继续执行该子叶;
若发现该子叶的子叶参数为非可执行表达式,可直接使用;
继续执行主表达式的其他子叶,如果发现为有子叶为可执行表达式,则执行该可执行表达式;
若该可执行表达式的子叶参数为非可执行表达式,则直接使用,若为可执行表达式,则继续执行该可执行表达式,将该可执行表达式的执行结果返回至该可执行表达式的上一级可执行表达式;
各执行表达式的执行结果依次向上返回,最终的结果返回至主表达式,结束执行。
上述方案的有益效果如下:上述方案词法分析器实现了将医疗数据符号序列构造成语法树。
进一步地,所述解释器将所述语法树,从根节点开始递归执行,输出处理结果,具体包括:
从根节点即主表达式开始执行,首先执行主表达式的第一个子叶表达式;
如果发现第一个子叶表达式仍然有子叶,则继续执行该子叶,若发现该子叶的子叶参数为非可执行表达式,可直接使用,若发现该子叶的子叶参数为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
继续执行主表达式的其他子叶,若该子叶的子叶参数为非可执行表达式,可直接使用,若该子叶为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
各执行表达式的执行结果依次向上返回,最终的结果返回至主表达式,结束执行。
上述方案的有益效果为:通过上述方案,解释器实现了将由医疗数据构造的语法树递归执行。
本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书、权利要求书以及附图中所特别指出的内容中来实现和获得
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本发明实施例1所述方法的流程示意图;
图2为本发明实施例3所述语法树;
图3为本发明实施例4所述语法树1;
图4为本发明实施例4所述语法树2。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
实施例1
本实施例涉及一种医疗数据的处理方法,如图1所示,图1为本发明实施例所述方法的流程示意图,具体包括如下步骤:输入待处理的医疗数据,所述数据为字符串格式;将输入的医疗数据分割成符号序列(例如[“let”,“ms”,“(”,“0”,“)”]);然后将所述符号序列构造成一个语法树;将所述语法树,从根节点开始递归执行,输出处理结果。所述结果完全取决于输入序列最终处理方法。
进一步地,将输入的医疗数据分割成符号序列具体包括:将所述医疗数据分割成字符,然后进行单词拼接,并对拼接得到的每个单词进行识别,判断该单词是常量(如0,-1,2等)还是变量(如name,list等),并判断单词是当前可执行的表达式还是数据列表表达式。
上述过程是一个拼接和识别的过程,拼接完成并作出了正确的识别以后才才会加入序列。识别常量、变量、表达式类型判断对后面递归操作时候的执行使用的提供以何种表达式来执行提供判断依据。
进一步地,所述单词拼接具体包括:依次读取字符,如果发现字符“(”则认为是一个表达式的开始,发现字符“)”则认为是表达式的结束,读取到“(”、“)”和空格这三种字符时,将会结束该单词的拼接,并开始下一个单词的拼接。
进一步地,判断单词是当前可执行的表达式还是数据列表表达式具体包括:依次读取字符,如果发现字符“(”后面紧跟的单词在表达式映射表中可以查到,所述单词则被标识为当前可执行表达式,否则所述单词被认为是一个数据列表表达式。所述表达式映射表可以自主定义。
需要说明的是,可执行表达式还可以包括各种运算符号。
进一步地,如果发现“(”和“)”,则“(”和“)”包裹的内容是当前表达式的子节点或是子叶。
进一步地,将所述符号序列构造成一个语法树,具体包括:初始化主表达式,将主表达式作为整个语法树的根节点,然后依次读取符号序列,当发现字符为“(”则认为是一个空表达式的开始,该空表达式作为主表达式的子叶,接着读取“(”字符后的字符或单词,如果该字符或单词为可执行表达式,则将其所述空表达式指定为可执行表达式;接着读取下一字符或单词,下一字符或单词无论是可执行表达式还是非可执行表达式,都作为当前可执行表达式的子叶参数;
如果所述“(”字符后的字符或单词为非可执行表达式,则将其作为所述空表达式指定为数据列表表达式,并且将所述字符或单词作为该数据列表表达式的子叶参数,继续读取下一个字符或单词,该字符或单词作为该数据列表表达式的子叶参数;
若读取的字符为“)”,则表达式结束,若读取的字符为“(”,则该“(”构造的完整表达式为上一表达式的子叶参数。
进一步地,所述递归执行步骤为:从根节点主表达式开始前序遍历执行,如果所述当前表达式子节点或者子叶上的表达式包含可执行表达式则先执行所述可执行表达式,否则,执行当前表达式。
所述递归执行具体包括,从主表达式(根节点)开始执行,首先执行主表达式的第一个子叶表达式;
如果发现第一个子叶表达式仍然有子叶,则继续执行该子叶,若发现该子叶的子叶参数为非可执行表达式,可直接使用;若发现该子叶的子叶参数为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
继续执行主表达式的其他子叶,若该子叶的子叶参数为非可执行表达式,可直接使用,若该子叶为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
各执行表达式的执行结果依次向上返回,最终的结果返回至主表达式,结束执行。
实施例2
本实施例涉及一种医疗数据的处理系统,所述系统包括词法分析器和解释器,所述词法分析器将输入的医疗数据进行单词拼接和识别后得到符号序列;然后将所述符号序列构造成一个语法树;所述解释器用于将所述语法树,从根节点开始递归执行,输出处理结果。
进一步地,所述词法分析器将所述符号序列构造成一个语法树具体包括:初始化主表达式,将主表达式作为整个语法树的根节点;
依次读取符号序列,当发现字符为“(”则认为是一个空表达式的开始,该空表达式作为主表达式的子叶,接着读取“(”字符后的字符或单词;
如果该字符或单词为可执行表达式,则将其所述空表达式指定为可执行表达式;接着读取下一字符或单词,其无论是可执行表达式还是非可执行表达式,都作为当前可执行表达式的子叶参数;
如果所述“(”字符后的字符或单词为非可执行表达式,则将其作为所述空表达式指定为数据列表表达式,并且将所述字符或单词作为该数据列表表达式的子叶参数,继续读取下一个字符或单词,该字符或单词作为该数据列表表达式的子叶参数;
若读取的字符为“)”,则表达式结束,若读取的字符为“(”,则该“(”构造的完整表达式为上一表达式的子叶参数。
进一步地,解释器将所述语法树,从根节点开始递归执行,输出处理结果,具体包括:
从根节点即主表达式开始执行,首先执行主表达式的第一个子叶表达式;
如果发现第一个子叶表达式仍然有子叶,则继续执行该子叶,若发现该子叶的子叶参数为非可执行表达式,可直接使用,若发现该子叶的子叶参数为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
继续执行主表达式的其他子叶,若该子叶的子叶参数为非可执行表达式,可直接使用,若该子叶为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
各执行表达式的执行结果依次向上返回,最终的结果返回至主表达式,结束执行。
实施例3
如图2所示,图2为本发明实施例所述语法树,输入字符串为”(+1(*212(/21)))”,将其拆分为符号序列[{"token":"(",
"name":"SYNTAX_STRUCT"}
,{"token":"+",
"name":"EXPRESSION"}
,{"token":"1",
"name":"CONST"}
,{"token":"(",
"name":"SYNTAX_STRUCT"}
,{"token":"*",
"name":"EXPRESSION"}
,{"token":"21",
"name":"CONST"}
,{"token":"2",
"name":"CONST"}
,{"token":"(",
"name":"SYNTAX_STRUCT"}
,{"token":"/",
"name":"EXPRESSION"}
,{"token":"2",
"name":"CONST"}
,{"token":"1",
"name":"CONST"}
,{"token":")",
"name":"SYNTAX_STRUCT"}
,{"token":")",
"name":"SYNTAX_STRUCT"}
,{"token":")",
"name":"SYNTAX_STRUCT"}
]。
将上述符号序列构造成一个词法树,具体包括以下步骤:首先初始化一个主表达式,然后开始读取符号序列,读取到“(”根据语法树构造规则新建一个空表达式1,然后把该空表达式作为主表达式的子叶,继续读取“+”因为该符号为“(”的第一个符号,将该空表达式1指定为“+”加法表达式,继续读取下一符号“1”发现是常量并直接作为子叶参数(1-1);
读取下一符号为“(”则再按照上述规则新建以空表达式2,并将新建表达式作为表达式1的子叶参数(1-2),然后继续读取下一符号“*”该符号为同样“(”之后的符号并且是表达式所以将表达式2指定为“*”乘法表达式,继续读取“21”(子叶参数2-1)“2”(子叶参数2-2)均为常量则均直接作为表达式2的子叶参数;
读取下一符号为“(”则再按照上述规则新建以空表达式3,并将新建表达式作为表达式3的子叶参数(2-3)然后继续读取下一符号“/”该符号为同样“(”之后的符号并且是表达式所以将表达式3指定为“/”除法表达式,继续读取“2”(子叶参数3-1)“1”(子叶参数3-2)均为常量则均直接作为表达式3的子叶参数;
读取“)”为表达式闭合符号则表达式3闭合,并返回上一级表达式继续读取“)”为表达式闭合符号则表达式2闭合,并返回上一级表达式继续读取“)”为表达式闭合符号则表达式1闭合,至此整个表达式读取完成,主函数自动闭合。最终生成如图2所示的语法树。
将上述语法树从根节点开始递归执行,输出处理结果,具体包括:
当执行从根节点(主表达式)开始执行,首先去执行访问子叶表达式1,发现表达式1仍然有子叶则继续问执行子叶发现子叶参数(1-1)为常量,可直接使用不需要执行则继续访问执行子叶表达式(1-2)发现子叶表达式(1-2)为可执行表达式2,则需要执行该表达式2;
访问执行表达式2的子叶发现该表达式(表达式2)的子叶第一节点(2-1)和第二节点(2-2)均为常量则继续访问第三子叶(2-3)发现为可执行表达式3,则需要执行访问表达式3,表达式3两个节点(3-1、3-2)均为常量则直接执行该表达式3,2/1得到结果2,并返回上一级表达式2,将返回值2作为表达式2的子叶参数(2-3);
执行表达式2则得到结果21*2*2位84并返回作为表达式1的子叶参数(1-2),继续执行表达式1则1+84得到结果85返回给主表达式,结束执行。
实施例4
在本发明实施例中,优选的,输入的字符串如下:
(let a(table("姓名""年龄""性别")(("阿豪"28"男")("李月"26"女")("李水"21"女")("李小小"19"未知")("王明明"23"男")("王小丫"23"女"))))
(let dist(distribution a"性别"))
(print dist)
将上述字符串拆分为符号序列,如下所示:
将上述符号序列构造成语法树,具体包括:
解释器构造将开始读取符号序列首先初始化一个主表达式,然后开始读取符号序列,读取到“(”根据语法树构造规则新建一个空表达式1,然后把该空表达式作为主表达式的子叶(表达式1);
继续读取“let”因为该符号为“(”的第一个符号,将该空表达式1指定为“let”赋值表达式,继续读取下一符号“a”发现是变量并直接作为子叶参数(1-1);
继续读取下一符号为“(”则再按照上述规则新建以空表达式2,并将新建表达式2作为表达式1的子叶参数(1-2),继续读取下一符号为“table”发现为table表达式,将该空表达式2指定为table表达式;
继续读取下一符号为“(”则再按照上述规则新建以空表达式3,并直接作为表达式2的子叶参数(2-1);
继续读取下一符号“姓名”为字符串常量,因为该符号为“(”的后的第一个符号,而该符号不是可执行表达式,将该空表达式3指定为数据列表表达式3的子叶参数(3-1);
继续读取下一符号“年龄”同样按照上述规则作为子叶参数(3-2),继续读取下一符号“性别”并作为子叶参数3-3;
继续读取“)”为表达式闭合符号则表达式3闭合,并返回上一级表达式继续读取下一符号为“(”则再按照上述规则新建以空表达式4,继续读取下一符号“(”按照上述规则新建以空表达式5,因为该符号为“(”的后的第一个符号,而该符号非可执行表达式将该空表达式4作为列表表达式;
继续读取下一符号“阿豪”为字符串常量,因为该符号为“(”的后的第一个符号,而该符号不是可执行表达式将该空表达式5指定为数据列表表达式5的子叶参数5-1;
继续读取下一符号“28”同样按照上述规则作为子叶参数5-2,继续读取下一符号“女”并作为子叶参数5-3。按照上述规则继续读取如下字符串“("李月"26"女")("李水"21"女")("李小小"19"未知")("王明明"23"男")("王小丫"23"女")”生成的列表数据,由于上述属于重复操作不重复描述。表达式6表示为("王小丫"23"女")的数据列表;
继续读取下一符号“)”为表达式闭合符号则表达式4闭合,继续读取下一符号“)”为表达式闭合符号则表达式2闭合,继续读取下一符号“)”为表达式闭合符号则表达式1闭合。
继续读取下一符号“(”新建一个空表达式7,然后把该空表达式作为主表达式的子叶然后把该空表达式作为主表达式的子叶(表达式7),继续读取“let”因为该符号为“(”的第一个符号,将该空表达式7指定为“let”赋值表达式;
继续读取下一符号“dist”发现是变量并直接作为(子叶参数7-1)续读取下一符号为“(”则再按照上述规则新建以空表达式8,继续读取下一符号“distribution”发现为可执行表达式,将该空表达式8指定为“distribution”求分布表达式,继续读取下一符号“a”同样按照上述规则作为子叶参数8-1,继续读取下一符号“性别”同样按照上述规则作为子叶参数8-2,继续读取下一参数“)”为表达式闭合符号则表达式8闭合,继续读取下一参数“)”为表达式闭合符号则表达式7闭合;
继续读取下一符号“(”新建一个空表达式9,然后把该空表达式作为主表达式的子叶然后把该空表达式作为主表达式的子叶(表达式9),继续读取下一符号“dist”按照上述规则作为子叶参数9-1,继续读取下一参数“)”为表达式闭合符号则表达式9闭合。至此,语法树构造完成。所述语法树如图3、4所示。
将上述语法树,从根节点开始递归执行,输出处理结果,具体包括:
从根节点(主表达式)开始执行,首先去执行访问子叶赋值表达式1,发现表达式1仍然有子叶则继续问执行子叶发现子叶参数(1-1)为变量则继续访问下一子叶参数(1-2),发现为子叶参数(1-2)为Table表达式则继续访问表达式2子叶参数;(再次由图3转图4),发现表达式2子叶参数(2-1)为list表达式3;
依次读取发现三个子叶均为字符串常量,则直接返回三个子叶组成的列表["姓名","年龄","性别"],返回并继续访问,子叶参数(2-2)表达式4发现为List表达式,然后继续读取子叶发现,表达式5同样为List表达式则,继续依次访问执行表达式5的子叶,发现子叶均为常量,则直接返回三个子叶组成的列表["阿豪",28,"男"],并且返回作为表达式4的子叶;
继续如此继续访问执行处理直到表达式6返回,表达式4的子叶数据均返回,则表达式4继续将数据列表([["阿豪",28,"男"],["李月",26,"女"],["李水",21,"女"],["李小小",19,"未知"],["王明明",23,"男"],["王小丫",23,"女"]])向上返回至表达式2;
表达式2为Table表达式,该表达式则是将(子叶2-1)列表索引上的值,循环处理在(子叶2-2)对应列表子项的索引,生成一个新的键值对应的列表如下([["姓名":"阿豪","年龄":28,"性别":"男"],["姓名":"李月","年龄":26,"性别":"女"],["姓名":"李水","年龄":21,"性别":"女"],["姓名":"李小小","年龄":19,"性别":"未知"],["姓名":"王明明","年龄":23,"性别":"男"],["姓名":"王小丫","年龄":23,"性别":"女"]])并返回;(此处返回图3)表达式2,继续向上返回(表达式1),(表达式1)为赋值表达式意为将子叶参数(1-2)的数据,赋值给名为子叶参数(1-1)的变量a;
因为主表达式上还有子叶则继续访问执行(赋值表达式7),发现表达式7仍然有子叶参数则继续问执行子叶发现子叶参数(7-1)为变量dist则继续访问下一子叶参数(7-2)表达式8,则继续访问执行分布表达式8;
继续访问发现子叶参数8-1为变量a,则继续访问下一子叶参数(8-2)为字符串常量,则返回执行分布表达式,次分布表达式则意为将子叶参数8-1的数据循环并取key值为子叶参数8-2的值,并且对该进行计数和几总数;
最终返回值的统计数、总数和值统计数除总数的小数分别存在按照值存储在键值数组内,表达式8计算完成并返回上一级,按照上述规则表达式7则是将分布表达式8执行结果赋值给(子叶7-1)的dist变量,并继续返回。继续执行表达式9发现表达式9为打印表达式,则继续执行访问(子叶9-1)。发现(子叶9-1)为变量dist,则直接返回执行表达式9,表达式9则直接打印输出dist变量的数据结果。
将上述数据结果的输出为:
array:2[
"case"=>array:5[
"男"=>2
"女"=>3
"未知"=>1
"miss"=>0
"total"=>6
]
"dist"=>array:5[
"男"=>0.33333333333333
"女"=>0.5
"未知"=>0.16666666666667
"miss"=>0
"total"=>1
]
实施例5
在本发明实施中,优选的,输入以下字符串数据:
(let userlist(mongodbget(get_base_collection 72)(where">=""conf_age"18)(get)))
(let userlist(foreach userlist(let item.c_data(time_differenceitem.conf_date item.ifc_date"m"))))
(let data())
(foreach userlist(if(&&(<=item.c_data.m 6)(=item.if_ifc("1")))(letdata[index]item)()))
(getListByKey("pid")data);
查询医疗数据库中如下要求的患者ID:
(1)确诊时年龄≥18岁:字段:基本信息表单中的首次确诊年龄>=18岁;(2)在入组前6个月内确诊:字段:基本信息表单:确诊日期-知情同意签署日期<=6个月;
(3)获得患者知情同意:字段:基本信息表单:是否签署知情同意选“是”。查询的数据结果为返回所有的病例号的ID:
“1498676928170 1498676928208 1498676928227 14986769286961498676928719 1498676928822 1498676928880 1498676929055 14986769293881498676929541 1498676929637 1498676929675……”
实施例6
在本发明实施例中,查询医疗数据库中如下要求的信息:
(1)位置:表单:临床诊断,字段:肿瘤分期,值:Tx,Tis,T0或T4,
(2)判断:新字段:临床T分期,值:返回原值;
(3)位置:表单:临床诊断,字段:肿瘤分期,值:除“Tx,Tis,T0或T4”以外的值,按以下逻辑返回值;
(4)位置:表单:临床诊断,字段:与“病灶-宽”“病灶-高”“病灶-最长径”相关的所有字段,值:取宽、高、最长径的最大值;
(5)判断:字段:临床T分期,值:根据附表一进行分期后返回值,如值为空,保留原值;
(6)如一个PID有多次记录,取字段:检查时间,值:有值且最早;
输入以下字符串:
上述字符串的执行结果为:
综上所述,本发明实施例提供了一种医疗数据的处理方法及系统,解决了医学上一些复杂多变的统计分析。
需要说明的是,上述实施例之间,其相同或相似之处可相互借鉴。尤其对于系统实施例而言,由于其基本相似与方法实施例,所以,描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种医疗数据的处理方法,其特征在于,包括如下步骤:
输入待处理的医疗数据,所述数据为字符串格式;
将输入的医疗数据进行单词拼接和识别后得到符号序列;
将所述符号序列构造成一个语法树;
将所述语法树,从根节点开始递归执行,输出处理结果。
2.根据权利要求1所述方法,其特征在于,将输入的医疗数据进行单词拼接和识别包括:将所述医疗数据分割成字符,然后进行单词拼接,对拼接得到的每一单词进行识别,判断该单词是常量还是变量,当判断结果为变量时,进一步判断该单词是当前可执行的表达式还是数据列表表达式。
3.根据权利要求2所述方法,其特征在于,所述单词拼接具体包括:依次读取字符,如果发现字符“(”则认为是一个表达式的开始,发现字符“)”则认为是表达式的结束,读取到“(”、“)”和空格这三种字符时,将会结束该单词的拼接,并开始下一个单词的拼接。
4.根据权利要求2所述方法,其特征在于,判断单词是当前可执行的表达式还是数据列表表达式具体包括:依次读取字符,如果发现字符“(”后面紧跟的单词在表达式映射表中可以查到,所述单词则被标识为当前可执行的表达式,否则所述单词被认为是一个数据列表表达式。
5.根据权利要求1所述方法,其特征在于,将所述符号序列构造成一个语法树,具体包括:初始化主表达式,将主表达式作为整个语法树的根节点;
依次读取符号序列,当发现字符为“(”则认为是一个空表达式的开始,将该空表达式作为主表达式的子叶,接着读取“(”字符后的字符或单词;
如果该字符或单词为可执行表达式,则将所述空表达式指定为可执行表达式;接着读取下一字符或单词,其无论是可执行表达式还是非可执行表达式,都作为当前可执行表达式的子叶参数;
如果所述“(”字符后的字符或单词为非可执行表达式,则将所述空表达式指定为数据列表表达式,并且将所述字符或单词作为该数据列表表达式的子叶参数,继续读取下一个字符或单词,该字符或单词作为该数据列表表达式的子叶参数;
若读取的字符为“)”,则表达式结束,若读取的字符为“(”,则该“(”构造的完整表达式为上一表达式的子叶参数。
6.根据权利要求1所述方法,其特征在于,所述递归执行步骤为:从根节点开始执行,如果所述当前表达式子叶或子节点上的表达式包含可执行表达式则先执行所述可执行表达式,否则,执行当前表达式。
7.根据权利要求6所述方法,其特征在于,所述递归执行具体步骤为:
从根节点即主表达式开始执行,首先执行主表达式的第一个子叶表达式;
如果发现第一个子叶表达式仍然有子叶,则继续执行该子叶,若发现该子叶的子叶参数为非可执行表达式,可直接使用,若发现该子叶的子叶参数为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
继续执行主表达式的其他子叶,若该子叶的子叶参数为非可执行表达式,可直接使用,若该子叶为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
各执行表达式的执行结果依次向上返回,最终的结果返回至主表达式,结束执行。
8.一种医疗数据的处理系统,其特征在于,所述系统包括词法分析器和解释器,所述词法分析器将输入的医疗数据进行单词拼接和识别后得到符号序列,然后将所述符号序列构造成一个语法树;所述解释器用于将所述语法树,从根节点开始递归执行,输出处理结果。
9.根据权利要求8所述系统,其特征在于,所述词法分析器将所述符号序列构造成一个语法树具体包括:初始化主表达式,将主表达式作为整个语法树的根节点;
依次读取符号序列,当发现字符为“(”则认为是一个空表达式的开始,将该空表达式作为主表达式的子叶,接着读取“(”字符后的字符或单词;
如果该字符或单词为可执行表达式,则将所述空表达式指定为可执行表达式;接着读取下一字符或单词,其无论是可执行表达式还是非可执行表达式,都作为当前可执行表达式的子叶参数;
如果所述“(”字符后的字符或单词为非可执行表达式,则将所述空表达式指定为数据列表表达式,并且将所述字符或单词作为该数据列表表达式的子叶参数,继续读取下一个字符或单词,该字符或单词作为该数据列表表达式的子叶参数;
若读取的字符为“)”,则表达式结束,若读取的字符为“(”,则该“(”构造的完整表达式为上一表达式的子叶参数。
10.根据权利要求8所述系统,其特征在于,所述解释器将所述语法树,从根节点开始递归执行,输出处理结果,具体包括:
从根节点即主表达式开始执行,首先执行主表达式的第一个子叶表达式;
如果发现第一个子叶表达式仍然有子叶,则继续执行该子叶,若发现该子叶的子叶参数为非可执行表达式,可直接使用,若发现该子叶的子叶参数为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
继续执行主表达式的其他子叶,若该子叶的子叶参数为非可执行表达式,可直接使用,若该子叶为可执行表达式,则执行该可执行表达式,将该可执行表达式的执行结果返回;
各执行表达式的执行结果依次向上返回,最终的结果返回至主表达式,结束执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810678384.0A CN108806797A (zh) | 2018-06-27 | 2018-06-27 | 一种医疗数据的处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810678384.0A CN108806797A (zh) | 2018-06-27 | 2018-06-27 | 一种医疗数据的处理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108806797A true CN108806797A (zh) | 2018-11-13 |
Family
ID=64071940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810678384.0A Pending CN108806797A (zh) | 2018-06-27 | 2018-06-27 | 一种医疗数据的处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108806797A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579856A (zh) * | 2019-09-30 | 2021-03-30 | 北京国双科技有限公司 | 对爬取控制指令的处理方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261579A (zh) * | 2007-03-08 | 2008-09-10 | 青牛(北京)技术有限公司 | 一种实现VBScript语言跨平台应用的方法 |
CN101609493A (zh) * | 2009-07-21 | 2009-12-23 | 国网电力科学研究院 | 一种基于自学习的数据库sql注入防护方法 |
CN101667190A (zh) * | 2009-09-29 | 2010-03-10 | 天津大学 | 基于XQuery的查询引擎系统 |
CN105677752A (zh) * | 2015-12-30 | 2016-06-15 | 深圳先进技术研究院 | 一种流式计算和批处理计算相结合处理系统及方法 |
CN106547796A (zh) * | 2015-09-23 | 2017-03-29 | 南京中兴新软件有限责任公司 | 数据库的执行方法及装置 |
CN106610999A (zh) * | 2015-10-26 | 2017-05-03 | 北大方正集团有限公司 | 查询处理方法和装置 |
CN106777996A (zh) * | 2016-12-23 | 2017-05-31 | 浙江大学 | 一种基于Solr的体检数据搜索系统 |
US20170286394A1 (en) * | 2012-07-10 | 2017-10-05 | Robert D. New | Method for parsing natural language text with constituent construction links |
CN107273289A (zh) * | 2017-06-13 | 2017-10-20 | 西北工业大学 | 基于全局分析的并行错误模式匹配方法 |
CN107301164A (zh) * | 2016-04-14 | 2017-10-27 | 科大讯飞股份有限公司 | 数学公式的语义解析方法及装置 |
CN107832391A (zh) * | 2017-10-31 | 2018-03-23 | 长城计算机软件与系统有限公司 | 一种数据查询方法和系统 |
-
2018
- 2018-06-27 CN CN201810678384.0A patent/CN108806797A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261579A (zh) * | 2007-03-08 | 2008-09-10 | 青牛(北京)技术有限公司 | 一种实现VBScript语言跨平台应用的方法 |
CN101609493A (zh) * | 2009-07-21 | 2009-12-23 | 国网电力科学研究院 | 一种基于自学习的数据库sql注入防护方法 |
CN101667190A (zh) * | 2009-09-29 | 2010-03-10 | 天津大学 | 基于XQuery的查询引擎系统 |
US20170286394A1 (en) * | 2012-07-10 | 2017-10-05 | Robert D. New | Method for parsing natural language text with constituent construction links |
CN106547796A (zh) * | 2015-09-23 | 2017-03-29 | 南京中兴新软件有限责任公司 | 数据库的执行方法及装置 |
CN106610999A (zh) * | 2015-10-26 | 2017-05-03 | 北大方正集团有限公司 | 查询处理方法和装置 |
CN105677752A (zh) * | 2015-12-30 | 2016-06-15 | 深圳先进技术研究院 | 一种流式计算和批处理计算相结合处理系统及方法 |
CN107301164A (zh) * | 2016-04-14 | 2017-10-27 | 科大讯飞股份有限公司 | 数学公式的语义解析方法及装置 |
CN106777996A (zh) * | 2016-12-23 | 2017-05-31 | 浙江大学 | 一种基于Solr的体检数据搜索系统 |
CN107273289A (zh) * | 2017-06-13 | 2017-10-20 | 西北工业大学 | 基于全局分析的并行错误模式匹配方法 |
CN107832391A (zh) * | 2017-10-31 | 2018-03-23 | 长城计算机软件与系统有限公司 | 一种数据查询方法和系统 |
Non-Patent Citations (2)
Title |
---|
郑洪: "《编译原理(第二版)》", 31 January 2010, 中国铁道出版社 * |
马克·艾伦·维斯: "《数据结构与算法分析Java语言描述》", 31 March 2016, 北京:机械工业出版社 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579856A (zh) * | 2019-09-30 | 2021-03-30 | 北京国双科技有限公司 | 对爬取控制指令的处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10042740B2 (en) | Techniques to identify idiomatic code in a code base | |
Gómez-Rodríguez et al. | A polynomial-time dynamic oracle for non-projective dependency parsing | |
CN106970802A (zh) | 在领域特定语言中集成编程脚本语言的方法及装置 | |
CN109740122A (zh) | 思维导图用例文件的转换方法及装置 | |
CN108171528A (zh) | 一种归因方法及归因系统 | |
CN109933331A (zh) | 一种客户端服务器间数据转换方法及相关组件 | |
CN112163025A (zh) | 数据库数据导出方法、装置、计算机设备及存储介质 | |
CN106445645A (zh) | 用于执行分布式计算任务的方法和装置 | |
US7213014B2 (en) | Apparatus and method for using a predefined database operation as a data source for a different database operation | |
CN108806797A (zh) | 一种医疗数据的处理方法及系统 | |
US8433729B2 (en) | Method and system for automatically generating a communication interface | |
CN109325217A (zh) | 一种文件转换方法、系统、装置及计算机可读存储介质 | |
CN116560629A (zh) | 一种数据传输对象的序列化方法、装置、介质和设备 | |
CN112651226A (zh) | 基于依存句法树的知识解析系统及方法 | |
CN106503457A (zh) | 基于转化医学分析平台的临床数据集成技术数据导入方法 | |
CN115935943A (zh) | 一种支持自然语言结构计算的分析框架 | |
CN114090619B (zh) | 自然语言的查询处理方法及装置 | |
CN113885970B (zh) | 一种基于脚本生成报表数据的方法、系统及介质 | |
CN112052254B (zh) | 数据封装方法、电子设备及存储介质 | |
Jay | Pathology report data extraction from relational database using R, with extraction from reports on melanoma of skin as an example | |
FR2788357A1 (fr) | Maintenance d'un modele d'un systeme | |
EP4035025A1 (en) | Method and apparatus for smart and extensible schema matching framework | |
CN109902147A (zh) | 用于查询处理的方法、装置、设备和存储介质 | |
CN110825376B (zh) | 一种解析带注释json文件的方法、存储介质及装置 | |
CN112052239B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181113 |