亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的方法

文檔序號(hào):10570013閱讀:288來(lái)源:國(guó)知局
一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例公開(kāi)了一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的方法,所述方法包括:A、將待轉(zhuǎn)換的信息字段集合中包含的各個(gè)信息字段分別定位到所述信息字段對(duì)應(yīng)在所述樹(shù)形數(shù)據(jù)嵌套結(jié)構(gòu)中的各個(gè)葉節(jié)點(diǎn);B、獲取從根節(jié)點(diǎn)到各個(gè)所述葉節(jié)點(diǎn)的各條路徑;C、根據(jù)所述各條路徑生成各條原語(yǔ)鏈表;D、將所述原語(yǔ)鏈表合并為單個(gè)原語(yǔ)樹(shù);E、遍歷所述單個(gè)原語(yǔ)樹(shù)的各個(gè)節(jié)點(diǎn),以獲取各個(gè)抽取原語(yǔ)樹(shù);F、執(zhí)行所述各個(gè)抽取原語(yǔ)樹(shù),以獲取所述各個(gè)抽取原語(yǔ)樹(shù)對(duì)應(yīng)的各個(gè)平面數(shù)據(jù)表。由上,本發(fā)明實(shí)施例有利于自動(dòng)進(jìn)行將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的這一結(jié)構(gòu)轉(zhuǎn)換過(guò)程,有效降低了數(shù)據(jù)后續(xù)利用的成本。
【專(zhuān)利說(shuō)明】
一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的方 法。
【背景技術(shù)】
[0002] 在醫(yī)療、互聯(lián)網(wǎng)等領(lǐng)域中經(jīng)常出現(xiàn)將多個(gè)維度的信息整合在單個(gè)數(shù)據(jù)對(duì)象中的情 形,通常此種數(shù)據(jù)對(duì)象都表現(xiàn)為不規(guī)則的深層嵌套的樹(shù)形結(jié)構(gòu)。在樹(shù)形數(shù)據(jù)結(jié)構(gòu)中,每個(gè)葉 節(jié)點(diǎn)都是一個(gè)信息字段,其值可以是單值或多值;每個(gè)枝節(jié)點(diǎn)都是一個(gè)信息組,信息組可以 是重復(fù)或非重復(fù)的,非重復(fù)信息組下可包含異構(gòu)的確定數(shù)量的節(jié)點(diǎn),而重復(fù)信息組下可包 含同構(gòu)的不定數(shù)量的節(jié)點(diǎn)。這種樹(shù)形嵌套結(jié)構(gòu)雖然方便了數(shù)據(jù)表達(dá)和存儲(chǔ),但難以被各種 針對(duì)平面數(shù)據(jù)表設(shè)計(jì)的數(shù)據(jù)處理系統(tǒng)所接受,此時(shí)通常需要人工進(jìn)行結(jié)構(gòu)轉(zhuǎn)換,會(huì)耗費(fèi)大 量人力財(cái)力。

【發(fā)明內(nèi)容】

[0003] 有鑒于此,本發(fā)明的主要目的在于提供一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的 方法,有利于自動(dòng)進(jìn)行將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的這一結(jié)構(gòu)轉(zhuǎn)換過(guò)程,有效降低 了數(shù)據(jù)后續(xù)利用的成本。
[0004] 本發(fā)明實(shí)施例提供一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的方法,包括以下步 驟:
[0005] A、將待轉(zhuǎn)換的信息字段集合中包含的各個(gè)信息字段分別定位到所述信息字段對(duì) 應(yīng)在所述樹(shù)形數(shù)據(jù)嵌套結(jié)構(gòu)中的各個(gè)葉節(jié)點(diǎn);
[0006] B、獲取從根節(jié)點(diǎn)到各個(gè)所述葉節(jié)點(diǎn)的各條路徑;
[0007] C、根據(jù)所述各條路徑生成各條原語(yǔ)鏈表;
[0008] D、將所述原語(yǔ)鏈表合并為單個(gè)原語(yǔ)樹(shù);
[0009] E、遍歷所述單個(gè)原語(yǔ)樹(shù)的各個(gè)節(jié)點(diǎn),以獲取各個(gè)抽取原語(yǔ)樹(shù);
[0010] F、執(zhí)行所述各個(gè)抽取原語(yǔ)樹(shù),以獲取所述各個(gè)抽取原語(yǔ)樹(shù)對(duì)應(yīng)的各個(gè)平面數(shù)據(jù) 表。
[0011] 優(yōu)選地,所述步驟c包括:
[0012] C1、生成所述各條路徑的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的抽取原語(yǔ);
[0013] C2、將所述各條路徑的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的抽取原語(yǔ)分別串聯(lián)成原語(yǔ)鏈表。
[0014] 優(yōu)選地,所述步驟C1還包括:
[0015] 當(dāng)判斷所述路徑中的枝節(jié)點(diǎn)或葉節(jié)點(diǎn)為可取多值節(jié)點(diǎn)時(shí),為所述枝節(jié)點(diǎn)或葉節(jié)點(diǎn) 增加生成一級(jí)ITER抽取原語(yǔ);
[0016] 其中,所述可取多值節(jié)點(diǎn)為其下有同構(gòu)節(jié)點(diǎn)組或者其本身包含同構(gòu)多值信息的節(jié) 占.
[0017] 所述ITER為:將當(dāng)前工作對(duì)象作為列表遍歷,將每個(gè)元素作為新的環(huán)境數(shù)據(jù)對(duì)象, 同時(shí)將元素下標(biāo)生成以當(dāng)前環(huán)境名稱(chēng)命名的列。
[0018]由上,為可取多值節(jié)點(diǎn)增加生成一級(jí)ITER抽取原語(yǔ),有利于后續(xù)的數(shù)據(jù)轉(zhuǎn)換。
[0019] 優(yōu)選地,所述步驟C1還包括:
[0020] 當(dāng)判斷所述路徑中的節(jié)點(diǎn)為葉節(jié)點(diǎn)時(shí),若所述葉節(jié)點(diǎn)對(duì)應(yīng)的字段包含同構(gòu)多值信 息,則調(diào)用JS0N原語(yǔ);若所述葉節(jié)點(diǎn)對(duì)應(yīng)的字段為單值信息,則調(diào)用SCALAR原語(yǔ);
[0021] 其中,所述JS0N為:將當(dāng)前環(huán)境數(shù)據(jù)對(duì)象序列化為JS0N字符串,生成以當(dāng)前環(huán)境名 稱(chēng)為列名的列;
[0022]所述SCALAR為:將當(dāng)前環(huán)境數(shù)據(jù)對(duì)象作為單值,輸出為以當(dāng)前環(huán)境名稱(chēng)為列名的 列;其中,若所述對(duì)象為列表類(lèi)型則取首個(gè)元素。
[0023] 優(yōu)選地,所述步驟C1還包括:
[0024] 當(dāng)判斷所述路徑中的節(jié)點(diǎn)為根節(jié)點(diǎn)時(shí),為所述根節(jié)點(diǎn)生成CID抽取原語(yǔ);
[0025] 當(dāng)判斷所述路徑中的節(jié)點(diǎn)為枝節(jié)點(diǎn)時(shí),為所述枝節(jié)點(diǎn)生成CTX抽取原語(yǔ);
[0026]其中,所述CID為:生成預(yù)設(shè)公共字段;
[0027]所述CTX為:將當(dāng)前工作對(duì)象設(shè)為指定key對(duì)應(yīng)的數(shù)據(jù)對(duì)象,同時(shí)將key作為當(dāng)前環(huán) 境名稱(chēng)。
[0028] 優(yōu)選地,所述步驟D包括:
[0029] D1、確定各條原語(yǔ)鏈表中的各個(gè)原語(yǔ)的級(jí)別和類(lèi)型;
[0030] D2、將同一級(jí)別中相同的原語(yǔ)合并為一個(gè)原語(yǔ)節(jié)點(diǎn);
[0031] D3、通過(guò)連接關(guān)系將各個(gè)原語(yǔ)節(jié)點(diǎn)連接,以獲取單個(gè)原語(yǔ)樹(shù)。
[0032]優(yōu)選地,所述步驟E包括:
[0033] E1、若所述單個(gè)原語(yǔ)樹(shù)的各個(gè)葉節(jié)點(diǎn)回溯到根節(jié)點(diǎn)的各條路徑中有可取多值節(jié) 點(diǎn),則分別獲取所述各條路徑中的各個(gè)首個(gè)可取多值節(jié)點(diǎn);
[0034] E2、將所述各個(gè)首個(gè)可取多值節(jié)點(diǎn)加入可取多值節(jié)點(diǎn)集合;
[0035] E3、遍歷所述可取多值節(jié)點(diǎn)集合中各個(gè)首個(gè)可取多值節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑及其下 的子樹(shù),以及遍歷根節(jié)點(diǎn)及所述根節(jié)點(diǎn)下不包含可取多值節(jié)點(diǎn)路徑的子樹(shù),以獲取各個(gè)抽 取原語(yǔ)樹(shù)。
[0036] 由上,有利于后續(xù)對(duì)可取多值節(jié)點(diǎn)對(duì)應(yīng)的字段所包含的數(shù)據(jù)的轉(zhuǎn)換。
[0037] 由上可以看出,本發(fā)明提供了一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的方法,有 利于自動(dòng)進(jìn)行將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的這一結(jié)構(gòu)轉(zhuǎn)換過(guò)程,可以獲取任意節(jié)點(diǎn) 數(shù)據(jù)轉(zhuǎn)換后的平面數(shù)據(jù)表,且不受數(shù)據(jù)處理系統(tǒng)的限制,有效降低了數(shù)據(jù)后續(xù)利用的成本。
【附圖說(shuō)明】
[0038] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0039] 圖1為本發(fā)明實(shí)施例提供的一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的方法的流程 示意圖;
[0040] 圖2為本發(fā)明實(shí)施例提供的一種樹(shù)形嵌套結(jié)構(gòu)示意圖;
[0041] 圖3為本發(fā)明實(shí)施例提供的一種定位后的樹(shù)形嵌套數(shù)據(jù)結(jié)構(gòu)示意圖;
[0042] 圖4為本發(fā)明實(shí)施例提供的一種抽取后的原語(yǔ)鏈表結(jié)構(gòu)示意圖;
[0043] 圖5為本發(fā)明實(shí)施例提供的一種合并后的單個(gè)原語(yǔ)樹(shù)結(jié)構(gòu)示意圖;
[0044] 圖6為本發(fā)明實(shí)施例提供的一種遍歷后的第一類(lèi)抽取原語(yǔ)樹(shù)結(jié)構(gòu)示意圖;
[0045] 圖7為本發(fā)明實(shí)施例提供的一種遍歷后的第二類(lèi)抽取原語(yǔ)樹(shù)結(jié)構(gòu)示意圖;
[0046] 圖8為本發(fā)明實(shí)施例提供的一種具體應(yīng)用場(chǎng)景下的合并后的單個(gè)原語(yǔ)樹(shù)結(jié)構(gòu)示意 圖;
[0047] 圖9為本發(fā)明實(shí)施例提供的一種具體應(yīng)用場(chǎng)景下的抽取原語(yǔ)樹(shù)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0048] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0049] 為克服現(xiàn)有技術(shù)中的缺陷,本申請(qǐng)實(shí)施例提供一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù) 據(jù)表的方法,用于自動(dòng)將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表,有效降低了數(shù)據(jù)后續(xù)利用的成 本。
[0050] 實(shí)施例一
[0051]如圖1所示,為本發(fā)明實(shí)施例中提供的一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的 方法,具體步驟如下:
[0052] S101,將待轉(zhuǎn)換的信息字段集合中的各個(gè)信息字段分別定位到樹(shù)形數(shù)據(jù)結(jié)構(gòu)中的 葉節(jié)點(diǎn)。
[0053] 對(duì)于樹(shù)形結(jié)構(gòu)來(lái)說(shuō),節(jié)點(diǎn)包括根節(jié)點(diǎn)、枝節(jié)點(diǎn)和葉節(jié)點(diǎn),各個(gè)階段上均對(duì)應(yīng)不同的 字段名,其中葉節(jié)點(diǎn)的字段名對(duì)應(yīng)關(guān)聯(lián)有具體的數(shù)據(jù),各枝節(jié)點(diǎn)(或稱(chēng)中間節(jié)點(diǎn),即,除根節(jié) 點(diǎn)和葉節(jié)點(diǎn)外的中間的節(jié)點(diǎn))則都是信息組,除了包含下級(jí)字段節(jié)點(diǎn)以外自身并不關(guān)聯(lián)任 何數(shù)據(jù)。
[0054]如圖2示出了一個(gè)樹(shù)形嵌套結(jié)構(gòu)的定義例子:其中/表示數(shù)據(jù)對(duì)象根,而a~i各個(gè) 字母表示不同級(jí)別上的字段名,字段名后的*表示該字段下有同構(gòu)節(jié)點(diǎn)組或者該字段本身 包含同構(gòu)多值信息。在本實(shí)施例中,假設(shè)待轉(zhuǎn)換的信息字段集合中的各個(gè)信息字段的信息 分別為對(duì)應(yīng)于葉節(jié)點(diǎn)13、(3、 6、匕1!、1中,則將各個(gè)信息字段分別定位到樹(shù)形數(shù)據(jù)結(jié)構(gòu)中的葉 節(jié)點(diǎn)b、c、e、f、h、i。如圖3所示,為定位后對(duì)應(yīng)的實(shí)際數(shù)據(jù)的示意圖。
[0055] S102,遍歷樹(shù)形結(jié)構(gòu),獲得從根節(jié)點(diǎn)到各個(gè)所述葉節(jié)點(diǎn)的路徑。由圖2或圖3所得到 的路徑如下所示:
[0056] /a-b;
[0057] /a_c;
[0058] /a-d-e ;
[0059] /a-d-f;
[0060] /g-h;
[0061] /g-i〇
[0062] S103,為待導(dǎo)出的各個(gè)所述路徑的各個(gè)節(jié)點(diǎn)生成相應(yīng)的抽取原語(yǔ),并將所述抽取 原語(yǔ)按照S102所構(gòu)成的路徑串聯(lián)成原語(yǔ)鏈表。其中,當(dāng)所述節(jié)點(diǎn)其下有同構(gòu)節(jié)點(diǎn)組或者其 對(duì)應(yīng)的字段包含同構(gòu)多值信息時(shí)(如圖2所示帶有*的字段名a、c、d)時(shí),則為所述節(jié)點(diǎn)額外 生成新的一級(jí)ITER原語(yǔ)。在本申請(qǐng)中,將其下有同構(gòu)節(jié)點(diǎn)組或者其對(duì)應(yīng)的字段包含同構(gòu)多 值信息的節(jié)點(diǎn)稱(chēng)為可取多值節(jié)點(diǎn)。
[0063] 本實(shí)施例中使用如下數(shù)據(jù)抽取原語(yǔ):
[0064] CID-生成預(yù)設(shè)公共字段;
[0065] CTX(key)-將當(dāng)前工作對(duì)象設(shè)為指定key對(duì)應(yīng)的數(shù)據(jù)對(duì)象,同時(shí)將key作為當(dāng)前環(huán) 境名稱(chēng);
[0066] ITER-將當(dāng)前工作對(duì)象作為列表遍歷,將每個(gè)元素作為新的環(huán)境數(shù)據(jù)對(duì)象(但不改 變當(dāng)前環(huán)境名稱(chēng)),同時(shí)將元素下標(biāo)生成以〃當(dāng)前環(huán)境名稱(chēng)_8叫〃命名的列;
[0067] JS0N-將當(dāng)前環(huán)境數(shù)據(jù)對(duì)象序列化為JS0N字符串,生成以當(dāng)前環(huán)境名稱(chēng)為列名的 列;
[0068] SCALAR-將當(dāng)前環(huán)境數(shù)據(jù)對(duì)象作為單值(若對(duì)象為列表類(lèi)型則取首個(gè)元素),輸出 為以當(dāng)前環(huán)境名稱(chēng)為列名的列。
[0069] 具體地,為每個(gè)待導(dǎo)出字段構(gòu)建原語(yǔ)鏈表時(shí),從根節(jié)點(diǎn)到該導(dǎo)出字段的葉節(jié)點(diǎn)上 的各個(gè)節(jié)點(diǎn),依所述路徑依次取出每個(gè)節(jié)點(diǎn),并對(duì)每個(gè)節(jié)點(diǎn)依次如下操作以確定該節(jié)點(diǎn)所 生成的原語(yǔ):
[0070] N1、判斷該節(jié)點(diǎn)為根節(jié)點(diǎn)時(shí),生成CID原語(yǔ);
[0071 ] N2、判斷該節(jié)點(diǎn)為枝節(jié)點(diǎn)時(shí),生成CTX原語(yǔ);
[0072] 其中,若判斷該節(jié)點(diǎn)為可取多值節(jié)點(diǎn)時(shí),為該節(jié)點(diǎn)額外增加生成一級(jí)ITER原語(yǔ);同 時(shí),若判斷該節(jié)點(diǎn)為葉節(jié)點(diǎn)時(shí)(即最后的導(dǎo)出字段),若葉節(jié)點(diǎn)對(duì)應(yīng)的字段包含同構(gòu)多值信 息時(shí),則生成JS0N原語(yǔ),否則,即對(duì)應(yīng)單值信息時(shí),則生成SCALAR原語(yǔ)。
[0073] 如上,依所述路徑依次對(duì)每個(gè)節(jié)點(diǎn)如上操作后,對(duì)應(yīng)所述路徑,即可生成原語(yǔ)鏈 表。
[0074] 如圖4所示,為抽取后的原語(yǔ)鏈表示意圖。
[0075] S104,根據(jù)原語(yǔ)鏈表的深度和原語(yǔ)類(lèi)型,將所述原語(yǔ)鏈表合并為單個(gè)原語(yǔ)樹(shù)。
[0076] 在本實(shí)施例中,如圖5所示,為合并后的單個(gè)原語(yǔ)樹(shù)。
[0077] 具體為:
[0078] A、確定各條原語(yǔ)鏈表中的各個(gè)原語(yǔ)的級(jí)別和類(lèi)型;
[0079] B、將同一級(jí)別中相同的原語(yǔ)合并為一個(gè)原語(yǔ)節(jié)點(diǎn);
[0080] C、通過(guò)連接關(guān)系將各個(gè)原語(yǔ)節(jié)點(diǎn)連接。
[0081] S105,由葉節(jié)點(diǎn)到根節(jié)點(diǎn)方向,判斷所述單個(gè)原語(yǔ)樹(shù)葉節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑中是 否有可取多值節(jié)點(diǎn);若是,則執(zhí)行S106;若否,則執(zhí)行S108。
[0082] S106,獲取各個(gè)葉節(jié)點(diǎn)回溯到的首個(gè)可取多值節(jié)點(diǎn),并將首個(gè)可取多值節(jié)點(diǎn)加入 可取多值節(jié)點(diǎn)集合;
[0083] S107,遍歷所述可取多值節(jié)點(diǎn)集合中各個(gè)首個(gè)可取多值節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑及該 節(jié)點(diǎn)的子樹(shù);以獲取可表達(dá)為單個(gè)平面數(shù)據(jù)表的第一類(lèi)抽取原語(yǔ)樹(shù)。如圖6所示,為遍歷后 的第一類(lèi)抽取原語(yǔ)樹(shù)結(jié)構(gòu)示意圖。
[0084] S108,遍歷根節(jié)點(diǎn)及所述根節(jié)點(diǎn)下不包含可取多值節(jié)點(diǎn)的路徑的子樹(shù),以獲取可 表達(dá)為單個(gè)平面數(shù)據(jù)表的第二類(lèi)抽取原語(yǔ)樹(shù)。如圖7所示,為遍歷后的第二類(lèi)抽取原語(yǔ)樹(shù)結(jié) 構(gòu)示意圖。
[0085] 其中,上述步驟S105-S108為:從合并后的單個(gè)原語(yǔ)樹(shù)進(jìn)行遍歷操作,以獲取可表 達(dá)為單個(gè)平面數(shù)據(jù)表的各個(gè)原語(yǔ)樹(shù)。
[0086] S109,執(zhí)行S107和S108中獲取的各個(gè)抽取原語(yǔ)樹(shù),以獲取所述各個(gè)抽取原語(yǔ)樹(shù)對(duì) 應(yīng)的各個(gè)平面數(shù)據(jù)表。如表1、2、3、4所示,為轉(zhuǎn)換后的各個(gè)平面數(shù)據(jù)表。
[0096] 綜上所述,本申請(qǐng)實(shí)施例提供了一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的方法, 用于自動(dòng)將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表,有效降低了數(shù)據(jù)后續(xù)利用的成本。
[0097] 實(shí)施例二
[0098] 為了進(jìn)一步說(shuō)明本申請(qǐng)的技術(shù)方案,本申請(qǐng)?zhí)峁┝艘粋€(gè)具體應(yīng)用場(chǎng)景的實(shí)施例, 具體如下:
[0099] S201,假設(shè)待轉(zhuǎn)換的信息字段集合中的各個(gè)信息字段的信息分別為體重信息、身 高信息、入院診斷信息、出院診斷信息、手術(shù)日期和手術(shù)名稱(chēng),其分別對(duì)應(yīng)于葉節(jié)點(diǎn)體重、身 高、入院診斷、出院診斷、手術(shù)日期和手術(shù)名稱(chēng)中。
[0100] S202,計(jì)算從根節(jié)點(diǎn)到每個(gè)所述葉節(jié)點(diǎn)的路徑。并為各個(gè)所述路徑的各個(gè)節(jié)點(diǎn)生 成相應(yīng)的抽取原語(yǔ),并將所述抽取原語(yǔ)串聯(lián)成原語(yǔ)鏈表。
[0101] 本實(shí)施例中定義如下數(shù)據(jù)抽取原語(yǔ):
[0102] CID-生成預(yù)設(shè)公共字段;該公共字段至少包括但不限于以下其中之一:uniq_ record_id(唯一記錄ID)、medical_record_id(醫(yī)療記錄ID)、patient_id(患者ID)、hosp_ id(醫(yī)院ID)、hosp_name(醫(yī)院名稱(chēng))、disease_id(疾病ID)、disease_name(疾病名稱(chēng))。
[0103] CTX(key)-將當(dāng)前工作對(duì)象設(shè)為指定key對(duì)應(yīng)的數(shù)據(jù)對(duì)象,同時(shí)將key作為當(dāng)前環(huán) 境名稱(chēng);當(dāng)前環(huán)境名稱(chēng)至少包括但不限于以下其中之一:jiwangshi(既往史)、 shoushuqingkuang(手術(shù)情況)、tizhong(體重)、shengao(身高)、ryzd(入院診斷)、cyzd(出 院診斷)、shoushuriqi(手術(shù)日期)、shoushumiingcheng(手術(shù)名稱(chēng))。
[0104] ITER-將當(dāng)前工作對(duì)象作為列表遍歷,將每個(gè)元素作為新的環(huán)境數(shù)據(jù)對(duì)象(但不改 變當(dāng)前環(huán)境名稱(chēng)),同時(shí)將元素下標(biāo)生成以〃當(dāng)前環(huán)境名稱(chēng)_8叫〃命名的列;
[0105] JS0N-將當(dāng)前環(huán)境數(shù)據(jù)對(duì)象序列化為JS0N字符串,生成以當(dāng)前環(huán)境名稱(chēng)為列名的 列;
[0106] SCALAR-將當(dāng)前環(huán)境數(shù)據(jù)對(duì)象作為單值(若對(duì)象為列表類(lèi)型則取首個(gè)元素),輸出 為以當(dāng)前環(huán)境名稱(chēng)為列名的列。
[0107] 具體地,以CID為根,將這些原語(yǔ)組成樹(shù)形關(guān)系后即可表達(dá)多個(gè)待導(dǎo)出字段的數(shù)據(jù) 抽取邏輯,具體方法為:
[0108] 為每個(gè)待導(dǎo)出字段生成一條抽取原語(yǔ)鏈表,對(duì)于從根節(jié)點(diǎn)到待導(dǎo)出字段上的每個(gè) 節(jié)點(diǎn),若其為可取多值節(jié)點(diǎn)時(shí),則為其額外生成新的一級(jí)ITER原語(yǔ),最后的導(dǎo)出字段若為同 構(gòu)多值信息時(shí),則默認(rèn)使用JS0N導(dǎo)出原語(yǔ),否則默認(rèn)使用SCALAR導(dǎo)出原語(yǔ);
[0109] S203,根據(jù)原語(yǔ)級(jí)別和原語(yǔ)類(lèi)型將所述原語(yǔ)鏈表合并為單個(gè)原語(yǔ)樹(shù)。
[0110] 在本實(shí)施例中,如圖8所示,為合并后的單個(gè)原語(yǔ)樹(shù)。
[0111]具體為:
[0112] A、確定各條原語(yǔ)鏈表中的各個(gè)原語(yǔ)的級(jí)別和類(lèi)型;
[0113] B、將同一級(jí)別中相同的原語(yǔ)合并為一個(gè)原語(yǔ)節(jié)點(diǎn);
[0114] C、通過(guò)連接關(guān)系將各個(gè)原語(yǔ)節(jié)點(diǎn)連接。
[0115] S204,判斷所述單個(gè)原語(yǔ)樹(shù)葉節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑中是否有可取多值節(jié)點(diǎn);若是, 則獲取各個(gè)葉節(jié)點(diǎn)分別回溯到的各個(gè)首個(gè)可取多值節(jié)點(diǎn),并將首個(gè)可取多值節(jié)點(diǎn)加入可取 多值節(jié)點(diǎn)集合;且遍歷所述可取多值節(jié)點(diǎn)集合中各個(gè)首個(gè)可取多值節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑及 其下子樹(shù);以獲取可表達(dá)為單個(gè)平面數(shù)據(jù)表的各個(gè)抽取原語(yǔ)樹(shù)。若否,則遍歷根節(jié)點(diǎn)及所述 根節(jié)點(diǎn)下不包含可取多值節(jié)點(diǎn)路徑的子樹(shù),以獲取可表達(dá)為單個(gè)平面數(shù)據(jù)表的各個(gè)抽取原 語(yǔ)樹(shù)。如圖9所示,為遍歷后的抽取原語(yǔ)樹(shù)。
[0116] S205,執(zhí)行S206中獲取的各個(gè)抽取原語(yǔ)樹(shù),以獲取所述各個(gè)抽取原語(yǔ)樹(shù)對(duì)應(yīng)的各 個(gè)平面數(shù)據(jù)表。例如,圖9中的第一個(gè)抽取原語(yǔ)樹(shù)中,CID中唯一記錄ID、醫(yī)療記錄ID、患者 ID、醫(yī)院ID、醫(yī)院名稱(chēng)、疾病ID、疾病名稱(chēng),葉節(jié)點(diǎn)中體重、身高分別為102f 5037、19858、 1233、13、測(cè)試醫(yī)院、23、肺癌、68kg、身高175cm。圖9中的第四個(gè)抽取原語(yǔ)樹(shù)中的葉節(jié)點(diǎn)手術(shù) 日期對(duì)應(yīng)手術(shù)名稱(chēng)。具體為,手術(shù)日期2014.3.24對(duì)應(yīng)手術(shù)名稱(chēng)左肺探查術(shù),以及手術(shù)日期 2014.3.25對(duì)應(yīng)手術(shù)名稱(chēng)左肺上葉切除術(shù)。執(zhí)行圖9中的第一個(gè)抽取原語(yǔ)樹(shù)和第四個(gè)抽取原 語(yǔ)樹(shù)中的原語(yǔ)分別獲取得到了平面數(shù)據(jù)表5和表6,其中,為了簡(jiǎn)短起見(jiàn),部分表格列名進(jìn)行 了縮寫(xiě)處理并變?yōu)榇髮?xiě)形式,例如,唯一記錄ID、醫(yī)療記錄ID、患者ID、醫(yī)院ID、醫(yī)院名稱(chēng)、疾 病 ID、疾病名稱(chēng)分別被簡(jiǎn)寫(xiě)為 URID、MRID、PID、HID、HNAME、DID、DNAME。
[0120] 表6
[0121] 其中,下面以執(zhí)行圖9中第四個(gè)抽取原語(yǔ)樹(shù)生成表6的過(guò)程為例說(shuō)明步驟S105的具 體執(zhí)行過(guò)程。具體如下:
[0122] 1、初始化內(nèi)部狀態(tài)state為{},當(dāng)前上下文ctx為None,當(dāng)前數(shù)據(jù)對(duì)象為data為obj 對(duì)應(yīng)值,然后開(kāi)始按下述過(guò)程前序遍歷抽取樹(shù)。 id、hosp_id、hosp_name_、disease_id、disease_name這些固定鍵對(duì)應(yīng)值并記錄在內(nèi)部狀態(tài) state中,此時(shí)state變?yōu)?br>[0124] {
[0125] "uniq-record-id":"102f5037",
[0126] "medical-record-id":19858,
[0127] "patient-id":1233,
[0128] 〃hosp-id":13,
[0129] 〃hosp-name〃: 〃測(cè)試醫(yī)院",
[0130] "disease-id":23,
[0131 ] "disease-name":"肺癌"
[0132] }
[0133] 3、執(zhí)行(^}((811011811叫;[耶1^皿1^)原語(yǔ),設(shè)置(13七3為(13七3[〃811011811叫;[邱10^1^"]、 ctx 為 shoushuqingkuang,此時(shí) data 變?yōu)?{ "sboushuriqi": "2014-03-24", "sboushumingcheng": "左肺探查術(shù)" },
[0134] { ,'Sh_Shuriqi": "2014-03-25", " shoushum i ngchengn: n右肺上葉切除術(shù)" }
[0135] 4、執(zhí)行ITER原語(yǔ),對(duì)data中的數(shù)組元素進(jìn)行遍歷,設(shè)置idx為0、data為data[0],同 時(shí)以當(dāng)前ctx值shoushuqingkuangM_seq鍵、idx+1為值記錄到state中,此時(shí),data變?yōu)?br>[0136] {
[0137] 〃shoushuriqi":"2014-03-24",
[0138] ''shoushumingcheng":"左肺探查術(shù)"
[0139] }
[0140] 而state 變?yōu)?br>[0141] {
[0142] "uniq-record-id":"102f5037",
[0143] "medical-record-id":19858,
[0144] "patient-id":1233,
[0145] 〃hosp-id":13,
[0146] 〃hosp_name〃: 〃測(cè)試醫(yī)院
[0147] "disease-id":23,
[0148] "disease-name":"肺癌",
[0149] ''shoushuqingkuang-seq": 1
[0150] }
[0151 ] 5、執(zhí)行CTX( shoushuriqi )原語(yǔ),設(shè)置data為data [ ''shoushuri qi 〃 ]、ctx為 shoushuriqi,此時(shí)data變?yōu)?[0152] 〃2014-03-24〃
[0153] 6、執(zhí)行SCALAR原語(yǔ),以當(dāng)前ctx值shoushuriqi為鍵、當(dāng)前data為值記錄到state 中,此時(shí)state變?yōu)?br>[0154] {
[0155] "uniq-record-id":"102f5037",
[0156] "medical-record-id":19858,
[0157] "patient-id":1233,
[0158] 〃hosp-id":13,
[0159] 〃hosp_name〃: 〃測(cè)試醫(yī)院
[0160] "disease-id":23,
[0161 ] "disease-name":"肺癌",
[0162] ''shoushuqingkuang-seq": 1,
[0163] ''shoushuriqi": "2014-03-24",
[0164] }
[0165] 7、回溯一級(jí)至(7^(811〇11811111^9;〇原語(yǔ)結(jié)點(diǎn),恢復(fù)(^1和(1&七&
[0166] 8、執(zhí)行 CTX( shoushumingcheng)原語(yǔ),設(shè)置 ctx為 shoushumingcheng、data為 data ["shoushumingcheng" ],此時(shí)data變?yōu)?br>[0167] 〃左肺探查術(shù)"
[0168] 9、執(zhí)行SCALAR原語(yǔ),以當(dāng)前ctx值shoushumingcheng為值、當(dāng)前data為值記錄到 state中,此時(shí)state變?yōu)?br>[0169] {
[0170] "uniq-record-id":"102f5037",
[0171] "medical-record-id":19858,
[0172] "patient-id":1233,
[0173] 〃hosp-id":13,
[0174] 〃hosp_name〃: 〃測(cè)試醫(yī)院
[0175] "disease-id":23,
[0176] "disease-name":"肺癌
[0177] ''shoushuqingkuang-seq": 1,
[0178] 〃shoushuriqi":"2014-03-24",
[0179] ''shoushumingcheng〃: 〃左肺探查術(shù)"
[0180] }
[0181] 10、因當(dāng)前抽取樹(shù)的所有結(jié)點(diǎn)都被遍歷了一遍,且state非空,則按照遍歷順序?qū)?state中的鍵值對(duì)作為表格的一行輸出,如下表7所;
[0183] 表7
[0184] 11、回溯一級(jí)至 CTX(shoushumingcheng)原語(yǔ)結(jié)點(diǎn)
[0185] 12、回溯一級(jí)至ITER原語(yǔ)結(jié)點(diǎn),增加 idx為1、data為data[l],同時(shí)以當(dāng)前ctx值 shoushuqingkuangM_seq為鍵、idx+1 為值記錄到state中,此時(shí)data變?yōu)?br>[0186] {
[0187] 〃shoushuriqi":"2014-03-25",
[0188] ''shoushumingcheng〃: 〃左肺上葉切除術(shù)
[0189] }
[0190] 而state 變?yōu)?br>[0191] {
[0192] "uniq-record-id":"102f5037",
[0193] "medical-record-id":19858,
[0194] "patient-id":1233,
[0195] 〃hosp-id":13,
[0196] 〃hosp_name〃: 〃測(cè)試醫(yī)院
[0197] "disease-id":23,
[0198] "disease-name":
[0199] "shoushuqingkuang_seq":2,
[0200] 〃shoushuriqi":"2014-03-24",
[0201 ] ''shoushumingcheng":"左肺探查術(shù)
[0202] }
[0203] 13、執(zhí)行0')((811〇11811111^9;[)原語(yǔ),設(shè)置(1&七&為(1&七&["811011811111^9;!/']、(^1為 shoushuriqi,此時(shí),data變?yōu)?br>[0204] 〃2014-03-25〃
[0205] 14、執(zhí)行SCALAR原語(yǔ),以當(dāng)前CTX值shoushuriqi為鍵、當(dāng)前data為值記錄到state 中,此時(shí)state變?yōu)?br>[0206] {
[0207] "uniq-record-id":"102f5037",
[0208] "medical-record-id":19858,
[0209] "patient-id":1233,
[0210] "hosp-id":13,
[0211] 〃hosp_name〃: 〃測(cè)試醫(yī)院〃,
[0212] "disease-id":23,
[0213] "disease-name":"肺癌",
[0214] ''shoushuqingkuang-seq" : 2,
[0215] "shoushuriqi":"2014-03-25",
[0216] ''shoushumingcheng〃: 〃左肺探查術(shù)"
[0217] }
[0218] 15、回溯一級(jí)至 CTX(shoushuriqi)原語(yǔ)結(jié)點(diǎn)
[0219] 16、執(zhí)行〇')((81101181111111;[邱。1161^)原語(yǔ),設(shè)置(1&七&為(1&七&["81101181111111;[邱。1161^"]、 ctx 為 shoushumingcheng,此時(shí) data 變?yōu)?br>[0220] 〃左肺上葉切除術(shù)"
[0221 ] 17、執(zhí)行SCALAR原語(yǔ),以當(dāng)前ctx值shoushumingcheng為鍵、當(dāng)前data為值記錄到 state中,此時(shí)state變?yōu)?br>[0222] {
[0223] "uniq-record-id":"102f5037",
[0224] "medical-record-id":19858,
[0225] "patient-id":1233,
[0226] "hosp_id":13,
[0227] 〃hosp_name〃: 〃測(cè)試醫(yī)院〃,
[0228] "disease_id":23,
[0229] "disease_name":"肺癌",
[0230] "shoushuqingkuang_seq":2,
[0231 ] ''shoushuriqi": "2014-03-25",
[0232] ''shoushumingcheng〃: 〃左肺上葉切除術(shù)"
[0233] }
[0234] 18、因當(dāng)前抽取樹(shù)的所有結(jié)點(diǎn)都被遍歷了一遍,且state非空,則按照遍歷順序?qū)?state中的鍵值對(duì)作為表格的一行輸出,具體如表8所不:
[0236] 表8
[0237] 19、回溯一級(jí)至CTX(shoushumingcheng)結(jié)點(diǎn),恢復(fù)ctx和data
[0238] 20、回溯一級(jí)至ITER結(jié)點(diǎn),對(duì)應(yīng)data數(shù)組所有元素都已處理完畢。
[0239] 21、回溯一級(jí)至CTX(shoushuqingkuang)結(jié)點(diǎn),恢復(fù)ctx和data
[0240] 22、回溯一級(jí)至CID結(jié)點(diǎn),恢復(fù)ctx和data
[0241] 23、沒(méi)有更多原語(yǔ)結(jié)點(diǎn)需要執(zhí)行,抽取樹(shù)執(zhí)行完畢
[0242] 最終產(chǎn)生的平面表9即為:
[0244] 表 9
[0245] 其他幾張平面表的生成過(guò)程與此類(lèi)似,不再贅述。
[0246] 以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1. 一種將樹(shù)形嵌套數(shù)據(jù)轉(zhuǎn)換為平面數(shù)據(jù)表的方法,其特征在于,包括以下步驟: A、 將待轉(zhuǎn)換的信息字段集合中包含的各個(gè)信息字段分別定位到所述信息字段對(duì)應(yīng)在 所述樹(shù)形數(shù)據(jù)嵌套結(jié)構(gòu)中的各個(gè)葉節(jié)點(diǎn); B、 獲取從根節(jié)點(diǎn)到各個(gè)所述葉節(jié)點(diǎn)的各條路徑; C、 根據(jù)所述各條路徑生成各條原語(yǔ)鏈表; D、 將所述原語(yǔ)鏈表合并為單個(gè)原語(yǔ)樹(shù); E、 遍歷所述單個(gè)原語(yǔ)樹(shù)的各個(gè)節(jié)點(diǎn),以獲取各個(gè)抽取原語(yǔ)樹(shù); F、 執(zhí)行所述各個(gè)抽取原語(yǔ)樹(shù),以獲取所述各個(gè)抽取原語(yǔ)樹(shù)對(duì)應(yīng)的各個(gè)平面數(shù)據(jù)表。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟C包括: C1、生成所述各條路徑的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的抽取原語(yǔ); C2、將所述各條路徑的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的抽取原語(yǔ)分別串聯(lián)成原語(yǔ)鏈表。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟Cl還包括: 當(dāng)判斷所述路徑中的枝節(jié)點(diǎn)或葉節(jié)點(diǎn)為可取多值節(jié)點(diǎn)時(shí),為所述枝節(jié)點(diǎn)或葉節(jié)點(diǎn)增加 生成一級(jí)ITER抽取原語(yǔ); 其中,所述可取多值節(jié)點(diǎn)為其下有同構(gòu)節(jié)點(diǎn)組或者其本身包含同構(gòu)多值信息的節(jié)點(diǎn); 所述ITER為:將當(dāng)前工作對(duì)象作為列表遍歷,將每個(gè)元素作為新的環(huán)境數(shù)據(jù)對(duì)象,同時(shí) 將元素下標(biāo)生成以當(dāng)前環(huán)境名稱(chēng)命名的列。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟Cl還包括: 當(dāng)判斷所述路徑中的節(jié)點(diǎn)為葉節(jié)點(diǎn)時(shí),若所述葉節(jié)點(diǎn)對(duì)應(yīng)的字段包含同構(gòu)多值信息, 則生成JSON原語(yǔ);若所述葉節(jié)點(diǎn)對(duì)應(yīng)的字段為單值信息,則生成SCALAR原語(yǔ); 其中,所述JSON為:將當(dāng)前環(huán)境數(shù)據(jù)對(duì)象序列化為JSON字符串,生成以當(dāng)前環(huán)境名稱(chēng)為 列名的列; 所述SCALAR為:將當(dāng)前環(huán)境數(shù)據(jù)對(duì)象作為單值,輸出為以當(dāng)前環(huán)境名稱(chēng)為列名的列;其 中,若所述對(duì)象為列表類(lèi)型則取首個(gè)元素。5. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟Cl還包括: 當(dāng)判斷所述路徑中的節(jié)點(diǎn)為根節(jié)點(diǎn)時(shí),為所述根節(jié)點(diǎn)生成CID抽取原語(yǔ); 當(dāng)判斷所述路徑中的節(jié)點(diǎn)為枝節(jié)點(diǎn)時(shí),為所述枝節(jié)點(diǎn)生成CTX抽取原語(yǔ); 其中,所述CID為:生成預(yù)設(shè)公共字段; 所述CTX為:將當(dāng)前工作對(duì)象設(shè)為指定key對(duì)應(yīng)的數(shù)據(jù)對(duì)象,同時(shí)將key作為當(dāng)前環(huán)境名 稱(chēng)。6. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟D包括: D1、確定各條原語(yǔ)鏈表中的各個(gè)原語(yǔ)的級(jí)別和類(lèi)型; D2、將同一級(jí)別中相同的原語(yǔ)合并為一個(gè)原語(yǔ)節(jié)點(diǎn); D3、通過(guò)連接關(guān)系將各個(gè)原語(yǔ)節(jié)點(diǎn)連接,以獲取單個(gè)原語(yǔ)樹(shù)。7. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟E包括: E1、若所述單個(gè)原語(yǔ)樹(shù)的各個(gè)葉節(jié)點(diǎn)回溯到根節(jié)點(diǎn)的各條路徑中有可取多值節(jié)點(diǎn),則 分別獲取所述各條路徑中的各個(gè)首個(gè)可取多值節(jié)點(diǎn); E2、將所述各個(gè)首個(gè)可取多值節(jié)點(diǎn)加入可取多值節(jié)點(diǎn)集合; E3、遍歷所述可取多值節(jié)點(diǎn)集合中各個(gè)首個(gè)可取多值節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑及其下的子 樹(shù),以及遍歷根節(jié)點(diǎn)及所述根節(jié)點(diǎn)下不包含可取多值節(jié)點(diǎn)路徑的子樹(shù),以獲取各個(gè)抽取原 語(yǔ)樹(shù)。
【文檔編號(hào)】G06F17/30GK105930447SQ201610248636
【公開(kāi)日】2016年9月7日
【申請(qǐng)日】2016年4月20日
【發(fā)明人】王曉哲, 曹代軍, 羅立剛
【申請(qǐng)人】零氪科技(北京)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1