999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Key-Value鍵值對數據在新生兒聽力篩查登記系統中的應用

2019-10-08 07:13:36黎勇易松鄧忠
醫學信息 2019年4期

黎勇 易松 鄧忠

摘要:本文圍繞新生兒聽力篩查登記系統的技術實現,著重從新生兒不同報告單資料數據的保存及展示方面來闡述技術核心實現過程,針對不同的基層醫院需要存儲的新生兒數據格式不一致問題,在關系數據庫中采用Key-Value形式來進行存儲,而數據的查詢展示則利用數據庫編程技術或JAVA函數式編程技術實現。

關鍵詞:Key-Value數據存儲;數據庫編程;JAVA函數式編程

中圖分類號:TP311.13;R764.04? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼:B? ? ? ? ? ? ? ? ? ? ? ? ?DOI:10.3969/j.issn.1006-1959.2019.04.004

文章編號: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‰的發病率居我國五類致殘因素之首[1]。就湖南省郴州地區而言,新生兒聽力篩查存在如下問題:①手工信息的處理方式不但工作量大、流程復雜,而且數據的收集、整合過程難免錯漏、殘缺,針對大量數據的線性增長無法做到較好的存儲,對數據的分析、統計更加困難。②不同地區,由于各醫院的信息管理系統相互獨立,患者資料難以做到實時共享,從而造成了重復檢查,不但加大了患者負擔,同時也浪費了醫療有限資源。利用信息化技術實現的新生兒聽力篩查登記系統,不但解放了勞動量,有效的將手工作業模式轉換為信息自動化管理模式,同時也確保了數據的準確性、全面性和時效性[1]。新生兒聽力篩查登記的實現其主要技術難點在于不同基層醫院數據格式的統一存儲、數據查詢展示及數據的統計分析。現將具體技術實現介紹如下。

1數據的存儲

由于基層醫院使用不同的報告單,要將報告單內容存儲到關系數據庫的同一個數據實體表就必須將擁有不同內容的登記表單轉換為統一格式存儲,一種實現方法是將整個報告單轉換為JSON格式進行存儲,若要對數據做查詢分析則需要解析存儲的JSON格式數據[2]。考慮到系統性能及技術實現,在數據存儲中采用了另一種存儲方式,即在關系型數據庫中采取非表格式的Key-Value鍵值對格式的數據存儲方式,將不同表單數據轉換為Key-Value鍵值對形式的縱向存儲[3]。因此,在數據庫中設計如表1結構的數據表。

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

2數據的展示

數據的展示通過使用easyui前臺框架的datagrid來展示,實現步驟如下:①第一步:選擇報告單模板,通過選擇的報告單模板檢索報告單的字段配置信息。②第二步:通過標簽循環讀取后臺返回的報告單List字段配置列表,并生成datagrid中的table展示列。③第三步:通過POST方式請求后臺展示數據。在請求后臺數據展示實現中即可通過數據庫存儲過程的編程實現,同時又可通過JAVA函數式編程實現,兩種方式的實現核心主要體現在對縱向存儲的數據做行列轉換及行合并操作。

2.1存儲過程實現? 存儲過程編程主要利用動態SQL的拼裝以及循環結構[4,5]來實現數據的展示功能,其實現步驟如下。

第一步:定義存儲過程,并確定傳入、傳出參數。傳入參數包括了模板id、查詢條件conditions、開始頁數page、頁大小pagesize;傳出參數僅包含了符合條件的總數據條數totalcount。

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

第三步:利用REPEAT …UNTIL …END REPEAT循環讀取所選報告單模板字段配置,利用數據庫系統函數CONCAT及GROUP_CONCAT生成動態查詢語句,完成數據的行列轉換并輸出顯示。CONCAT函數主要完成字符串的拼接,GROUP_CONCAT函數主要作用是完成行合并。其實現代碼如下所示:

第四步:利用Hibernate的createStoredProcedureCall方法調用指定名稱的存儲過程,通過procedureCall.getOutputs().getCurrent()獲取ResultSetOutput結果,最終通過ResultSetOutput獲取到datagird的list數據列表,OUT模式的totalcount參數則用于分頁,并展示到前臺界面。

采用存儲過程實現的數據展示簡化了系統的Java編程,意味著部分業務邏輯不再應用程序中處理,同時所有的記錄檢索等操作都是通過存儲過程實現,因此采用存儲過程編程技術的實現減少了網絡交互,而由于不同數據庫的內部編程語法不太一致,導致了系統不具備可移植性。

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

第一步:通過Service層接口調用自定義函數getDataByTemplateId(String id),該函數的主要功能是獲取傳入的指定登記模板的ID來獲取數據存儲實體表中符合條件的所有記錄,其返回結果為List列表對象。

第二步:通過Stream API處理數據集合,使用collect來將一個數據流中的元素進行分組,由于在數據存儲表中同一報告單的一次表單提交數據是使用的UUID.randomUUID()生成的唯一標識,通過collect中的數據分組將產生Map的結果,其實現代碼如下:

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

Collectors.groupingBy(Data::getRowid));

在實現代碼中,應用了定義在輔助類Collects中的groupingBy收集器,它通過接收Data實體的getRowid分類方法,并生成Map結果,其中getRowid方法返回的結果將作為Map的Key,符合條件的分類lists集合記錄將作為Map的Value。

第三步:申明空的list對象List> datalist=new ArrayList>(),用于存儲最終的數據結果。

第四步:申明迭代器Iterator,用于循環讀取datamap中的內容,申明語句如下:

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

第五步:使用while循環讀取迭代器中的內容,并將一組list內容通過forEach循環讀取并put到新申明的map對象中,最后將最終結果使用add加入到第三步中的datalist,到此完成了同一報告單的數據分組及數據的行列轉換展示,java代碼如下所示:

3總結

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

參考文獻:

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

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

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

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

[5]梁敬彬.探討動態SQL擴展的應用[J].福建電腦,2018,34(3):92-94.

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

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

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

編輯/楊倩

主站蜘蛛池模板: 色天天综合| 99精品伊人久久久大香线蕉 | 久操线在视频在线观看| 欧美日韩中文国产| 激情综合婷婷丁香五月尤物| 亚洲AV人人澡人人双人| 国产福利免费视频| 成人午夜视频在线| 免费一看一级毛片| 亚洲天堂2014| 久久人午夜亚洲精品无码区| 午夜日韩久久影院| 国产网站一区二区三区| 九色视频一区| 成AV人片一区二区三区久久| 性激烈欧美三级在线播放| 国产精品免费p区| 成人精品视频一区二区在线 | 国产亚洲精品yxsp| 久久福利片| 日韩毛片视频| 成人在线天堂| 久久久受www免费人成| P尤物久久99国产综合精品| 亚洲乱码视频| 91在线无码精品秘九色APP| 亚洲首页在线观看| 99re经典视频在线| 久久人妻系列无码一区| 国产幂在线无码精品| 一本无码在线观看| 国产日韩丝袜一二三区| 99精品高清在线播放| 视频国产精品丝袜第一页| 99精品国产电影| 波多野结衣久久高清免费| 亚洲黄网视频| 婷婷色一区二区三区| 99精品热视频这里只有精品7| 欧美亚洲综合免费精品高清在线观看 | 免费aa毛片| 99视频只有精品| 国产成人一区二区| 亚洲日韩精品无码专区| 日韩国产黄色网站| 亚洲 欧美 日韩综合一区| 亚洲国产成人麻豆精品| 免费毛片全部不收费的| 特级做a爰片毛片免费69| 99久久精品国产自免费| 国产精品三级专区| 日韩区欧美国产区在线观看| 91福利国产成人精品导航| 国产一区二区福利| 中国一级特黄大片在线观看| 青青操国产视频| 最近最新中文字幕在线第一页 | 婷婷午夜影院| 99人妻碰碰碰久久久久禁片| 亚洲激情区| 亚洲国产精品一区二区高清无码久久| 激情爆乳一区二区| 制服丝袜国产精品| 国产精品视频猛进猛出| 日韩成人在线一区二区| 国内精品视频区在线2021| 中文字幕在线免费看| 成人在线第一页| 日韩AV无码免费一二三区| 精品一区二区三区四区五区| 日韩无码真实干出血视频| 成年看免费观看视频拍拍| 欧美日韩资源| 国产三级视频网站| 亚洲成人播放| 欧美69视频在线| 国产v精品成人免费视频71pao| 无码AV动漫| 99福利视频导航| 国产精品xxx| 欧美亚洲第一页| 欧美成人影院亚洲综合图|