天天看點

利用python将json格式的檔案導入neo4j圖資料庫

{"名稱": "A鍊球菌群感染", "簡介": "(一)發病原因\nA鍊球菌群呈乙型溶血反應,故過去稱其為乙型溶血性鍊球菌(β-hemolytic streptococcus)。生化分類法此菌為化膿鍊球菌。依其表面抗原的不同又可分為90多種血清型。目前對表面抗原R、T、S蛋白成分的作用還不了解,M蛋白則是鍊球菌有緻病能力的重要因素。它可抵抗機體白細胞對它的吞噬作用,如無M蛋白則無毒力。機體感染後可獲得對M蛋白的特異性免疫力,且可保持數年。\n\n細胞壁有脂磷壁酸質(lipoteichoic acid)也是一種重要毒力因子,能使細菌附着到宿主黏膜及細胞膜上。\n\nA鍊球菌群的緻病力還來自産生的毒素和細胞外蛋白。\n\n毒素有:\n①緻熱性外毒素(pyrogenic exotoxin)亦即紅斑毒素,為一種耐熱蛋白,有抗原性,除可使皮膚發生猩紅熱樣皮疹外,尚有化膿、細胞毒、增強内毒素毒性等作用,還具有超抗原作用。至少有A,B,C三種(有人認為有四種)不同的抗原型。原不産生紅斑毒素的菌株與能産生紅斑毒素的噬菌體作用後可變為産毒株。\n\n②鍊球菌溶血素(streptolysin)有溶解紅細胞殺傷白細胞、血小闆以及損傷心髒的作用。有O和S兩種鍊球菌溶血素。O鍊球菌溶血素有抗原性,感染後可産生相應的抗體,可保持數月之久,故可作為鍊球菌新近感染的标志之一。S鍊球菌溶血素無抗原性或抗原性不強,體内尚未查到其抗體。\n\nA鍊球菌群産生的細胞外蛋白有:\n\n①透明質酸酶(hyaluronidase),可溶解組織間質的透明質酸,使細菌易于在組織中擴散。\n②鍊道酶,又稱脫氧核糖核酸酶(DNase),能溶解具有高度黏性的DNA。此酶有A,B,C,D四種不同的血清型。有抗原性可産生抗體。\n\n③鍊激酶(streptokinase)又名溶纖維蛋白酶,能使血液中的纖維蛋白溶酶原(plasminogen)轉變為纖維蛋白溶酶(plasmin),進而阻止血液凝固或可溶解已凝固的血塊。\n\n④血清混濁因子(opacity factor,OF),是一種α脂蛋白酶。可使馬血清變混濁。有抑制機體産生特異性及非特異性免疫反應的作用。\n\n⑤煙酰胺腺嘌呤二核苷酸核苷酶(NADase),能分解相應的組織成分,進而破壞機體的某些防衛能力,例如白細胞可被殺滅。\n(二)發病機制\n細菌在呼吸道黏膜或其他組織上繁殖迅速。由于M蛋白有抵抗機體白細胞的吞噬作用,若當時機體抵抗力低下,難以将細菌很快消滅,細菌在增生過程中,可産生溶血素,使宿主的血細胞分解、死亡。鍊球菌緻熱性外毒素(SPE)除可引起發熱、化膿、皮疹外,近年認為還具有超抗原(superantigen)作用,可非特異性地刺激T細胞增生,釋放TNF,IL-1,IL-6,IFN-γ等細胞因子,大大增強内毒素休克作用,同時減低機體的吞噬細胞及B細胞産生抗體的功能,導緻臨床出現中毒性休克樣綜合征(toxic shock-like syndrome,TSLS),也可稱作鍊球菌中毒性休克綜合征(streptococcal toxic shock syndrome,STSS)。鍊道酶(streptodornase)可降解宿主細胞的核酸,使之成為炎性竈中有利于細菌的營養成分。鍊激酶和透明質酸酶可破壞宿主的組織屏障而使感染擴散。發炎物質的堆積以及鍊球菌的增生,導緻局部組織pH下降,更有利于細菌蛋白酶活性增強,進一步加重組織破壞。加上機體的發炎滲出反應,形成了局部組織的化膿變化。進而可引起菌血症、敗血症,出現腦膜炎、腹膜炎等疾病。有實驗證明緻熱性外毒素A(SPEA)的毒性明顯大于SPEB和SPEC。在TSLS的發病中起着更為重要的作用。A鍊球菌群感染的2~4周部分患者可出現風濕病和腎小球腎炎。心髒可出現心肌炎、心包炎和心内膜炎,其後造成心瓣膜損害。其發病機制尚不清楚。多發性關節炎及腎小球腎炎的發生,可能與鍊球菌抗原抗體複合物有關。近來認為鍊球菌M蛋白和外毒素均為超抗原,超抗原可能為引起感染後自身免疫原因之一。\n", "症狀": "A鍊球菌群可引起全身各處的化膿性疾病,最常見的有以下幾種。\n1.急性咽喉炎、急性扁桃體炎 患者以兒童為多。多發生于冬春季節。患者可有發熱、咽痛、頭痛等症狀。檢查可見咽部及扁桃體充血、水腫以及膿性滲出物,可形成僞膜。恢複期部分患者可出現風濕病或腎炎。\n2.皮膚及軟組織感染 丹毒 皮膚有微小損傷(如足癬)或發生退化時(老年)有利于丹毒的發生。細菌進入破損處後可經淋巴擴散。患者可有發熱、頭痛、全身不适等全身性症狀。數小時内局部皮膚出現紅斑,邊界清楚,且高出正常皮膚。嚴重者可出現含有膿性液體的大疱群組織壞死,附近淋巴結可腫大且有壓痛。新生兒臍部感染;嬰幼兒可患膿疱病;手術傷口感染等。蜂窩織炎常可導緻菌血症。最嚴重的為壞死性筋膜炎(necrotizing fasciitis),為皮下深部筋膜及脂肪進行性壞死性感染過程。感染多起始于創傷(不顯眼的外傷)或手術。局部出現紅、腫、熱、痛,很快向外擴充,24~48h病變處顔色由紅變紫,繼而變藍,形成含有黃色液體的水疱和大疱。在第4~5病日時紫色區開始壞死,7~10天時邊界清楚,壞死的皮膚脫落,顯露出皮下廣泛的壞死組織。患者發高熱、衰弱、反應遲鈍,極易引起菌血症、敗血症,實際上TSLS患者多伴有嚴重的軟組織感染。尚有患者可患肌炎,但多與壞死性筋膜炎并存,單發者少見。\n3.中毒性休克樣綜合征(TSLS) 從20世紀80年代後期,本已少見的嚴重A群菌感染又明顯增多。患者多為20~50歲身體健康者。病原菌多為A組菌M1和M3型,還有M12和M28型,均能産生外毒素A和B。入侵門戶多為皮膚和軟組織,特别重要的是蜂窩織炎和壞死性筋膜炎(可占70%)。肺部感染亦為重要來源。患者發冷、高熱,伴有某部位劇烈疼痛,如肢體、胸部、心髒(可似心肌梗死)、關節、腹部(像腹膜炎樣)等處。均有低血壓乃至休克,嗜睡,意識模糊甚至精神錯亂,出現幻覺等;腎功能受損甚至急性腎衰竭;肝功能可異常,ALT及血膽紅素可增高;還可出現急性呼吸窘迫綜合征。不少患者血清蛋白減低、血鈣血鈉減少等。雖經現代化搶救及治療,病死率仍在30%以上。總之TSLS的臨床表現與葡萄球菌引起的TSS無何差別,均有:①發熱;②低血壓;③猩紅熱樣或紅斑樣皮疹,後期脫皮;④伴有3個以上重要器官的損害,如腎衰竭,成人呼吸窘迫綜合征、肝功受損以及腦功能異常等。\n4.其他感染 A鍊球菌群可引起内眼炎、鼻窦炎、陰道炎、子宮内膜炎、肺炎等。機體免疫力不足者可發展成菌血症,進而出現腦膜炎、心内膜炎、腹膜炎、關節炎、骨髓炎、産褥熱、血栓性靜脈炎等。\n", "診斷": "主要依據細菌培養。除做溶血反應外,應以血清分類法确定其群别及型别。檢測患者血清中抗鍊球菌溶血素O抗體,效價在1∶400以上有診斷意義。\n此外,當出現中毒性休克綜合征(TSS)是也可以進行以下診斷檢查\n1.細菌培養 咽拭或傷口等處分泌物或滲出物有A組鍊球菌生長。恢複期血清可檢測抗鍊球菌溶血素O等抗體。由侵襲性A組鍊球菌所緻TSS,其血培養陽性率可高達60%。\n2.尿正常 高熱病人可出現蛋白尿,并發腎炎時尿蛋白增加,并出現紅細胞和管型,無并發症者尿液異常在熱退後消失。\n3.周圍血象 白細胞總數及中性粒細胞均增高,有化膿性并發症者更高,感染嚴重者,如TSS病人細胞分類可呈左移,猩紅熱者出疹後嘈酸性粒細胞可增高至5%~10%。TSS病人血小闆計數起病時可正常,繼而下降。\n4.其他 TSS病人可出現肺功能減退,血氧飽和度降低,肝功能、腎功能減退,低蛋白血症等表現。\nA鍊球菌群感染的鑒别診斷\n1.鍊球菌扁桃體炎尚需與下列疾病鑒别。\n(1)咽白喉 起病較緩,發熱較本病為低,咽部充血不著,覆寫灰白色假膜,并可波及軟腭、懸雍垂及咽壁等部位,假膜不易拭去,剝離時可留下出血面,咽拭培養及塗片檢查有助于診斷。\n(2)傳染性單核細胞增多症 咽部體征可與鍊球菌感染相仿,但發熱持續時間長,抗菌藥物無反應,周圍血象中異常淋巴細胞顯著增多,嗜異性凝集試驗陽性。\n(3)樊尚(奮森)咽峽炎 口臭著,扁桃體及軟腭上有污灰色假膜、繼發性壞死。并有壞死組織脫落後形成的淺潰瘍,周圍組織無明顯充血或水腫。病變多為一側性,全身症狀輕、熱度低、白細胞計數正常。滲出物塗片可找到樊尚螺旋體和梭形杆菌。\n2.丹毒 有特征性皮損可以診斷 皮損處細菌少 不易獲陽性結果。總之,A族鍊球菌感染與其它化膿菌感染不易差別,鑒别診斷主要依據細菌培養結果。此外患者血清中抗鍊球菌溶血素O抗體效價,有助于判斷是否為活動性感染。\n3.猩紅熱 有典型皮疹、口周蒼白、“草莓舌”或“楊莓舌”、白細胞及中性粒細胞增高,出疹後嗜酸性粒細胞增高等特點及咽拭培養有A族鍊球菌可以診斷。也可借皮膚轉白試驗鑒别。\n4.藥疹 可呈猩紅熱樣皮疹,有服藥史及一定潛伏期,無咽峽炎及“草莓舌”改變,中毒症狀輕。\n5.麻疹 起病初有明顯示卡他症狀及口腔麻疹黏膜斑,起病後4天出疹,為斑丘疹,分布廣,皮疹之間皮膚正常。\n6.風疹 淺紅色斑疹,耳後、枕淋巴結腫大,咽部症狀輕,無“草莓舌”。\n7.金葡菌感染 由于該菌有紅疹毒素,亦可呈猩紅熱樣皮疹,鑒别主要依靠細菌培養。\n", "并發症": "1.化膿性并發症 感染直接侵襲鄰近組織器官或蔓延至管腔,此類并發症多見于兒童,常見者有化膿性颌下或頸部淋巴結炎、化膿性中耳炎、乳突炎、鼻窦炎、扁桃體周膿腫、咽後壁膿腫等。鍊球菌通過篩闆蔓延緻腦膜炎、腦膿腫和顱内靜脈窦栓塞者偶見。由A組鍊球菌所緻肺炎、肺膿腫、縱隔炎、心包炎等目前均甚少見。\n2.非化膿性并發症 由鍊球菌所緻的變态反應性疾病,包括風濕熱和急性腎小球腎炎。\n除某些“皮膚”型菌株外,A組鍊球菌均可引起風濕熱,一般在急性扁桃體炎或咽峽炎後3周時起病,但亦有短至2~3天,長至1個月左右發病。風濕熱在扁桃體炎和猩紅熱病人中的發生率約為2.8%。丹毒後引起風濕熱的發生率不詳,膿疱瘡後不發生風濕熱,但可緻腎小球腎炎。\n急性腎小球腎炎多在鍊球菌感染後第3周起病,A組鍊球菌的某些型别感染與腎炎發病有關,如呼吸系感染菌12型以及緻膿疱瘡的49型均為引起腎炎的常見菌株,其他尚有1、4、25、55、57、60和61型等。在可引起腎小球腎炎的鍊球菌感染中,并發該病者可達10%~15%。\n\n3.遷徙性并發症 由細菌血源性播散可産生化膿性關節炎、心内膜炎、腦膜炎或腦膿腫、骨髓炎和肝膿腫等。目前此類并發症在有效抗菌藥物治療以來已罕見。\n", "治療": "1.傳染源 患者和帶菌者正常人鼻咽部、皮膚可帶菌,并有肛門陰道帶菌而引起暴發流行的報告。病人應隔離治療,隔離至咽拭培養陰轉。集體兒童機構發生猩紅熱流行時,對急性咽炎及扁桃體炎患兒均按猩紅熱隔離治療。對密切接觸的易感者給予青黴素預防。兒童機構從業人員中的帶菌者應暫時調離工作,給予青黴素G治療。\n2.傳播途徑 呼吸道與直接接觸均可傳播。亦有進食被污染食物曾引起咽峽炎暴發的報道生活貧困、衛生條件差居住擁擠、密切接觸等均有助于鍊球菌感染的發生。病人的分泌物及污染物應消毒,醫護人員應戴口罩。當出現不明原因感染時應及時就醫。\n3.人群易感性 本菌可侵襲任何年齡的人但發病者多為兒童。流行期間避免到擁擠的公共場所,注意個人衛生避免傷口感染。\nA鍊球菌群感染的西醫治療\n藥物治療:\n\n治療藥物首選青黴素,但應考慮到可能有耐藥菌株,應加大劑量或改用他藥,如紅黴素,克林黴素,第一代、二代頭孢類抗生素等。最好參照當地藥敏結果選用。\n\n由于A組鍊球菌感染與風濕熱的密切關系,風濕性心髒病或風濕熱病人宜預防應用抗菌藥防止鍊球菌呼吸系感染的發生青黴素為首選預防用藥,可應用苄星青黴素,成人每月肌内注射120萬U小兒60萬~120萬U療程數年以上,直至病情穩定為止。對青黴素過敏者可予紅黴素250mg每天2次長期服用如病人不能堅持長療程者可定期作咽拭培養,發現A組鍊球菌時則按急性鍊球菌咽炎予青黴素或紅黴素治療一療程劑量同前述。\n對猩紅熱病人應予以隔離治療以控制傳染源隔離期6天,咽拭培養轉陰無并發症者即可出院,亦可家庭隔離幼托機構或學校發生猩紅熱流行時對\n急性咽炎和扁桃體炎者均應按猩紅熱隔離治療,對易感人群中密切接觸者檢疫7~12天,也有主張給予青黴素預防用藥者。\n對帶菌者亦應予青黴素治療直至培養轉陰,以控制傳染源,此對幼托機構的從業人員尤為重要。\n\n預後:\n除侵襲性A組鍊球菌感染外在早期應用青黴素治療後,預後良好風濕熱及腎小球腎炎的發病亦減少侵襲性A組鍊球菌感染目前病死率高如能盡早診斷及治療中應用抗毒素或細胞因子其預後可能改觀。\n", "吃什麼好": "在服用抗生素期間可以每天喝一杯酸奶。酸奶中含有的雙歧杆菌不僅可以減輕抗生素的副作用,還能促進消化。服用抗生素的患者可多吃含維生素B族的食物,如黃豆、瘦肉、綠葉蔬菜等,緩解服藥引起的不良反應。\n服用抗生素後不能吃水果,特别是味酸的水果會大大降低藥效,結果延誤了治療,造成嚴重後果。口服抗生素類藥物,一般通過胃腸溶解吸收。而大多數水果(如蘋果,杏,櫻桃,葡萄,橙子,橘子,猕猴桃等)含有大量的檸檬酸,蘋果酸,酒石酸等酸味成分,這些果酸的溶解性極強,進入胃腸道後會破壞抗生素的穩定性,促進抗生素溶解和分解,使藥效
           

筆者收到了朋友的求助,希望我寫一段python代碼将含對用關系的json檔案導入neo4j圖資料庫。json的格式如下:

[
  {
    "名稱": "Alagille綜合征",
    "簡介": "根據典型症狀及肝活檢才能确診。",
    "治療": "無特殊療法,可給予消膽胺或中藥,以治療膽汁淤積,并補充脂溶性維生素。"
  },{
    "名稱": "A-V綜合征",
    "簡介": "(一)發病原因,A-V 征形成的原因很多,包括眼外肌本身的因素、解剖因素、神經支配因素以及遺傳因素等",
    "治療": "1.臨床類型與表現",
    "醫療建議":"找個女朋友貼貼//test"
  }
]
           

他說資料量有幾十萬條,而且對應關系不唯一:但可以保證每條都含有名稱和治療,但是可能有若幹條其他的對用關系,例如上文的例子:其既包含之前的三個子產品,還有最後的醫療建議關系。

是以,我寫出了一下代碼:

import json
from neo4j import GraphDatabase

# Connect to Neo4j
driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "123456"))

# Read json file
with open('D:/neo4j/neo4j-community-4.4.16/import/2.json', 'r', encoding='utf-8') as f:
    data = json.loads(f.read())
print(data)
# Create nodes and relationships
with driver.session() as session:
    for item in data:
        name = item['名稱']
        introduction = item['簡介']
        treatment = item['治療']
        flag_suggest_solution = False
        if '醫療建議' in item:
            suggest_solution = item['醫療建議']
            flag_suggest_solution = True
        print('flag:',flag_suggest_solution)

        session.run("CREATE (d:Disease111 {name: $name, treatment: $treatment})",
                    name=name, treatment=treatment)
        session.run("CREATE (d:Introduction111 {introduction: $introduction})",
                    introduction=introduction)
        session.run("CREATE (d:Treatment111 {treatment: $treatment})",
                    treatment=treatment)
        if flag_suggest_solution:
            session.run("CREATE (d:Suggest_solution11 {suggest_solution: $suggest_solution})",
                        suggest_solution=suggest_solution)
        session.run(
            "MATCH( f: Disease111 {name:$name}),(b:Introduction111{introduction:$introduction}) with f, b CREATE(f)-["
            ":介紹]->(b)", name=name, introduction=introduction)
        session.run("MATCH( f: Disease111 {name:$name}),(b:Treatment111{treatment: $treatment}) with f, b CREATE(f)-["
                    ":治療]->(b)", name=name, treatment=treatment)
        if flag_suggest_solution:
            session.run(
                "MATCH( f: Disease111 {name:$name}),(b:Suggest_solution11{suggest_solution: $suggest_solution}) with "
                "f, b CREATE(f)-[ "
                ":醫療建議]->(b)", name=name, suggest_solution=suggest_solution)
    
driver.close()
print("successfully")
           

這裡有以下注意事項:

  1. from neo4j import GraphDatabase
               
    需要導包
  2. driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "123456"))
               
    這裡的neo4j使用者名和密碼是你自己的。
  3. with open('D:/neo4j/neo4j-community-4.4.16/import/2.json', 'r', encoding='utf-8') as f:
               
    這裡需要判斷json的格式,建議讀取後print一下,如果是亂碼的話建議修改格式。
  4. if '醫療建議' in item:
                suggest_solution = item['醫療建議']
                flag_suggest_solution = True
            print('flag:',flag_suggest_solution)
               
    在這裡,需要實作聲明flag函數,否則會報錯。