亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Key-Value鍵值對(duì)數(shù)據(jù)在新生兒聽力篩查登記系統(tǒng)中的應(yīng)用

        2019-10-08 07:13:36黎勇易松鄧忠
        醫(yī)學(xué)信息 2019年4期

        黎勇 易松 鄧忠

        摘要:本文圍繞新生兒聽力篩查登記系統(tǒng)的技術(shù)實(shí)現(xiàn),著重從新生兒不同報(bào)告單資料數(shù)據(jù)的保存及展示方面來(lái)闡述技術(shù)核心實(shí)現(xiàn)過(guò)程,針對(duì)不同的基層醫(yī)院需要存儲(chǔ)的新生兒數(shù)據(jù)格式不一致問(wèn)題,在關(guān)系數(shù)據(jù)庫(kù)中采用Key-Value形式來(lái)進(jìn)行存儲(chǔ),而數(shù)據(jù)的查詢展示則利用數(shù)據(jù)庫(kù)編程技術(shù)或JAVA函數(shù)式編程技術(shù)實(shí)現(xiàn)。

        關(guān)鍵詞:Key-Value數(shù)據(jù)存儲(chǔ);數(shù)據(jù)庫(kù)編程;JAVA函數(shù)式編程

        中圖分類號(hào):TP311.13;R764.04? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:B? ? ? ? ? ? ? ? ? ? ? ? ?DOI:10.3969/j.issn.1006-1959.2019.04.004

        文章編號(hào):1006-1959(2019)04-0011-03

        Abstract:This paper focuses on the technical realization of the newborn hearing screening registration system, focusing on the technical core implementation process from the preservation and display of different report data of newborns, and the inconsistency of the newborn data format that needs to be stored in different primary hospitals. The relational database uses the Key-Value form for storage, while the data query display is implemented using database programming techniques or JAVA functional programming techniques.

        Key words:Key-Value data storage;Database programming;JAVA functional programming

        先天性聽力損失是新生兒最常見的出生缺陷之一,1‰~3‰的發(fā)病率居我國(guó)五類致殘因素之首[1]。就湖南省郴州地區(qū)而言,新生兒聽力篩查存在如下問(wèn)題:①手工信息的處理方式不但工作量大、流程復(fù)雜,而且數(shù)據(jù)的收集、整合過(guò)程難免錯(cuò)漏、殘缺,針對(duì)大量數(shù)據(jù)的線性增長(zhǎng)無(wú)法做到較好的存儲(chǔ),對(duì)數(shù)據(jù)的分析、統(tǒng)計(jì)更加困難。②不同地區(qū),由于各醫(yī)院的信息管理系統(tǒng)相互獨(dú)立,患者資料難以做到實(shí)時(shí)共享,從而造成了重復(fù)檢查,不但加大了患者負(fù)擔(dān),同時(shí)也浪費(fèi)了醫(yī)療有限資源。利用信息化技術(shù)實(shí)現(xiàn)的新生兒聽力篩查登記系統(tǒng),不但解放了勞動(dòng)量,有效的將手工作業(yè)模式轉(zhuǎn)換為信息自動(dòng)化管理模式,同時(shí)也確保了數(shù)據(jù)的準(zhǔn)確性、全面性和時(shí)效性[1]。新生兒聽力篩查登記的實(shí)現(xiàn)其主要技術(shù)難點(diǎn)在于不同基層醫(yī)院數(shù)據(jù)格式的統(tǒng)一存儲(chǔ)、數(shù)據(jù)查詢展示及數(shù)據(jù)的統(tǒng)計(jì)分析。現(xiàn)將具體技術(shù)實(shí)現(xiàn)介紹如下。

        1數(shù)據(jù)的存儲(chǔ)

        由于基層醫(yī)院使用不同的報(bào)告單,要將報(bào)告單內(nèi)容存儲(chǔ)到關(guān)系數(shù)據(jù)庫(kù)的同一個(gè)數(shù)據(jù)實(shí)體表就必須將擁有不同內(nèi)容的登記表單轉(zhuǎn)換為統(tǒng)一格式存儲(chǔ),一種實(shí)現(xiàn)方法是將整個(gè)報(bào)告單轉(zhuǎn)換為JSON格式進(jìn)行存儲(chǔ),若要對(duì)數(shù)據(jù)做查詢分析則需要解析存儲(chǔ)的JSON格式數(shù)據(jù)[2]??紤]到系統(tǒng)性能及技術(shù)實(shí)現(xiàn),在數(shù)據(jù)存儲(chǔ)中采用了另一種存儲(chǔ)方式,即在關(guān)系型數(shù)據(jù)庫(kù)中采取非表格式的Key-Value鍵值對(duì)格式的數(shù)據(jù)存儲(chǔ)方式,將不同表單數(shù)據(jù)轉(zhuǎn)換為Key-Value鍵值對(duì)形式的縱向存儲(chǔ)[3]。因此,在數(shù)據(jù)庫(kù)中設(shè)計(jì)如表1結(jié)構(gòu)的數(shù)據(jù)表。

        在數(shù)據(jù)實(shí)體表的設(shè)計(jì)中,id為表的主鍵,通過(guò)采用注解@GeneratedValue的生成策略,并指定策略的strategy屬性為AUTO,自動(dòng)生成最適合底層數(shù)據(jù)庫(kù)的主鍵生成策略;templateid為對(duì)應(yīng)的報(bào)告單模板ID,即不同基層醫(yī)院所使用的不同報(bào)告單登記模板的后臺(tái)標(biāo)識(shí);field為報(bào)告單登記模板中所用組件的命名,如下拉框男女選擇組件命名為sex等;value則為報(bào)告單重組件對(duì)應(yīng)的值;rowid是通過(guò)UUID.randomUUID()生成的36位字符型長(zhǎng)度的唯一識(shí)別碼,用于標(biāo)識(shí)一個(gè)報(bào)告單的所有值。

        2數(shù)據(jù)的展示

        數(shù)據(jù)的展示通過(guò)使用easyui前臺(tái)框架的datagrid來(lái)展示,實(shí)現(xiàn)步驟如下:①第一步:選擇報(bào)告單模板,通過(guò)選擇的報(bào)告單模板檢索報(bào)告單的字段配置信息。②第二步:通過(guò)標(biāo)簽循環(huán)讀取后臺(tái)返回的報(bào)告單List字段配置列表,并生成datagrid中的table展示列。③第三步:通過(guò)POST方式請(qǐng)求后臺(tái)展示數(shù)據(jù)。在請(qǐng)求后臺(tái)數(shù)據(jù)展示實(shí)現(xiàn)中即可通過(guò)數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程的編程實(shí)現(xiàn),同時(shí)又可通過(guò)JAVA函數(shù)式編程實(shí)現(xiàn),兩種方式的實(shí)現(xiàn)核心主要體現(xiàn)在對(duì)縱向存儲(chǔ)的數(shù)據(jù)做行列轉(zhuǎn)換及行合并操作。

        2.1存儲(chǔ)過(guò)程實(shí)現(xiàn)? 存儲(chǔ)過(guò)程編程主要利用動(dòng)態(tài)SQL的拼裝以及循環(huán)結(jié)構(gòu)[4,5]來(lái)實(shí)現(xiàn)數(shù)據(jù)的展示功能,其實(shí)現(xiàn)步驟如下。

        第一步:定義存儲(chǔ)過(guò)程,并確定傳入、傳出參數(shù)。傳入?yún)?shù)包括了模板id、查詢條件conditions、開始頁(yè)數(shù)page、頁(yè)大小pagesize;傳出參數(shù)僅包含了符合條件的總數(shù)據(jù)條數(shù)totalcount。

        第二步:通過(guò)傳入的查詢條件字符conditions參數(shù)(格式:“field;condition;value|field;condition;value|…”),拆分重組為SQL查詢條件語(yǔ)句,結(jié)合傳入的開始頁(yè)參數(shù)page及頁(yè)大小pagesize篩選出符合條件的指定報(bào)告單模板數(shù)據(jù)。

        第三步:利用REPEAT …UNTIL …END REPEAT循環(huán)讀取所選報(bào)告單模板字段配置,利用數(shù)據(jù)庫(kù)系統(tǒng)函數(shù)CONCAT及GROUP_CONCAT生成動(dòng)態(tài)查詢語(yǔ)句,完成數(shù)據(jù)的行列轉(zhuǎn)換并輸出顯示。CONCAT函數(shù)主要完成字符串的拼接,GROUP_CONCAT函數(shù)主要作用是完成行合并。其實(shí)現(xiàn)代碼如下所示:

        第四步:利用Hibernate的createStoredProcedureCall方法調(diào)用指定名稱的存儲(chǔ)過(guò)程,通過(guò)procedureCall.getOutputs().getCurrent()獲取ResultSetOutput結(jié)果,最終通過(guò)ResultSetOutput獲取到datagird的list數(shù)據(jù)列表,OUT模式的totalcount參數(shù)則用于分頁(yè),并展示到前臺(tái)界面。

        采用存儲(chǔ)過(guò)程實(shí)現(xiàn)的數(shù)據(jù)展示簡(jiǎn)化了系統(tǒng)的Java編程,意味著部分業(yè)務(wù)邏輯不再應(yīng)用程序中處理,同時(shí)所有的記錄檢索等操作都是通過(guò)存儲(chǔ)過(guò)程實(shí)現(xiàn),因此采用存儲(chǔ)過(guò)程編程技術(shù)的實(shí)現(xiàn)減少了網(wǎng)絡(luò)交互,而由于不同數(shù)據(jù)庫(kù)的內(nèi)部編程語(yǔ)法不太一致,導(dǎo)致了系統(tǒng)不具備可移植性。

        2.2 JAVA編程利用JAVA8的新特性實(shí)現(xiàn)? JAVA函數(shù)式編程主要利用對(duì)核心類庫(kù)的集合類的API和新引入的流(Stream)[6]的改進(jìn)來(lái)實(shí)現(xiàn)數(shù)據(jù)的展示功能,其實(shí)現(xiàn)主要步驟如下:

        第一步:通過(guò)Service層接口調(diào)用自定義函數(shù)getDataByTemplateId(String id),該函數(shù)的主要功能是獲取傳入的指定登記模板的ID來(lái)獲取數(shù)據(jù)存儲(chǔ)實(shí)體表中符合條件的所有記錄,其返回結(jié)果為L(zhǎng)ist列表對(duì)象。

        第二步:通過(guò)Stream API處理數(shù)據(jù)集合,使用collect來(lái)將一個(gè)數(shù)據(jù)流中的元素進(jìn)行分組,由于在數(shù)據(jù)存儲(chǔ)表中同一報(bào)告單的一次表單提交數(shù)據(jù)是使用的UUID.randomUUID()生成的唯一標(biāo)識(shí),通過(guò)collect中的數(shù)據(jù)分組將產(chǎn)生Map的結(jié)果,其實(shí)現(xiàn)代碼如下:

        Map> datamap=lists.stream().collect(

        Collectors.groupingBy(Data::getRowid));

        在實(shí)現(xiàn)代碼中,應(yīng)用了定義在輔助類Collects中的groupingBy收集器,它通過(guò)接收Data實(shí)體的getRowid分類方法,并生成Map結(jié)果,其中g(shù)etRowid方法返回的結(jié)果將作為Map的Key,符合條件的分類lists集合記錄將作為Map的Value。

        第三步:申明空的list對(duì)象List> datalist=new ArrayList>(),用于存儲(chǔ)最終的數(shù)據(jù)結(jié)果。

        第四步:申明迭代器Iterator,用于循環(huán)讀取datamap中的內(nèi)容,申明語(yǔ)句如下:

        Iterator>> it= datamap.entrySet().iterator();

        第五步:使用while循環(huán)讀取迭代器中的內(nèi)容,并將一組list內(nèi)容通過(guò)forEach循環(huán)讀取并put到新申明的map對(duì)象中,最后將最終結(jié)果使用add加入到第三步中的datalist,到此完成了同一報(bào)告單的數(shù)據(jù)分組及數(shù)據(jù)的行列轉(zhuǎn)換展示,java代碼如下所示:

        3總結(jié)

        利用Key-Value鍵值對(duì)格式有效的解決了不同報(bào)告單內(nèi)容字段不一致而無(wú)法存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)的同一數(shù)據(jù)實(shí)體表中的存儲(chǔ)問(wèn)題,同時(shí)Key-Value鍵值對(duì)格式的存儲(chǔ)還為數(shù)據(jù)的查詢及統(tǒng)計(jì)分析提供了便利。在數(shù)據(jù)的展示實(shí)現(xiàn)過(guò)程中,既可利用數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程編程技術(shù)實(shí)現(xiàn)又可利用JAVA8的函數(shù)式編程實(shí)現(xiàn)。存儲(chǔ)過(guò)程的實(shí)現(xiàn)簡(jiǎn)化了JAVA編碼,利用傳入的conditions參數(shù),先檢索符合條件的rowid值,通過(guò)rowid值快速查詢有效的數(shù)據(jù),并對(duì)數(shù)據(jù)執(zhí)行行列轉(zhuǎn)換及行合并的操作,利用存儲(chǔ)過(guò)程的實(shí)現(xiàn)增加了數(shù)據(jù)庫(kù)服務(wù)端的處理成本,大量邏輯業(yè)務(wù)的處理約束了軟件的架構(gòu)。利用JAVA8的新特性實(shí)現(xiàn)數(shù)據(jù)展示僅需數(shù)據(jù)庫(kù)實(shí)體表,無(wú)需實(shí)現(xiàn)自定義函數(shù)及存儲(chǔ)過(guò)程,同時(shí)在系統(tǒng)發(fā)布過(guò)程中可以做到多web容器部署,從而實(shí)現(xiàn)負(fù)載均衡。

        參考文獻(xiàn):

        [1]黎曼儂,王瓊,黨峰博,等.新生兒疾病篩查信息系統(tǒng)管理軟件應(yīng)用的效果分析[J].中國(guó)醫(yī)學(xué)工程,2014(1):186-188.

        [2]徐寶磊,羅江,潘剛.基于JSON的數(shù)據(jù)交換技術(shù)應(yīng)用研究[J].軟件導(dǎo)刊,2017,10(16):173-175.

        [3]蔣付彬,王華軍.NoSQL數(shù)據(jù)庫(kù)的應(yīng)用及選型研究[J].信息與電腦(理論版),2016(3):141-142.

        [4]王志剛,江友華.MySQL高效編程[M].北京:人民郵電出版社,2012:116-128.

        [5]梁敬彬.探討動(dòng)態(tài)SQL擴(kuò)展的應(yīng)用[J].福建電腦,2018,34(3):92-94.

        [6]Richard Warburton,著.Java8函數(shù)式編程[M].王群鋒,譯.北京:人民郵電出版社,2015:15-31.

        [7]宮明.函數(shù)式編程探析[J].電腦編程技巧與維護(hù),2017(3):29-30.

        收稿日期:2018-11-12;修回日期:2018-11-22

        編輯/楊倩

        久久综合亚洲色社区| 99久久99久久精品免费看蜜桃| 国产成人精品一区二区三区视频| 国内精品九九久久久精品| 亚洲熟伦在线视频| 亚洲日本一区二区在线| 亚洲av成人片色在线观看高潮 | 欧美v日韩v亚洲综合国产高清| 中文字幕视频一区懂色| 人与人性恔配视频免费| 水蜜桃无码视频在线观看| 综合91在线精品| 最好的99精品色视频大全在线| 亚洲精品乱码久久久久蜜桃| 日韩亚洲av无码一区二区不卡 | 亚洲乱码中文字幕视频| 妇女bbbb插插插视频| 国产国拍亚洲精品mv在线观看| 亚洲av综合色区久久精品天堂 | 日韩日韩日韩日韩日韩| 精品久久久久久久中文字幕| 在线无码免费看黄网站| 人妻少妇精品视频一区二区三| 国产午夜精品一区二区| 日韩免费一区二区三区在线| 一二区视频免费在线观看| 红桃av一区二区三区在线无码av| 国产va免费精品高清在线| 欧美日本国产亚洲网站免费一区二区| 国产一级内射一片视频免费| 插我一区二区在线观看| 日本VA欧美VA精品发布| 日韩国产自拍成人在线| 人人妻人人澡人人爽国产| 嫖妓丰满肥熟妇在线精品| 1234.com麻豆性爰爱影| 视频一区二区三区黄色| 久久精品噜噜噜成人| 久久精品性无码一区二区爱爱 | 久久无码中文字幕东京热| 粉嫩极品国产在线观看免费一区|