From 796a19fc17eb3c897bc865f8890ed39e7cbaeee2 Mon Sep 17 00:00:00 2001 From: Hyejin Shin Date: Mon, 31 May 2021 00:42:33 +0900 Subject: [PATCH] Add files via upload --- Controller.py | 115 +++++++++++++++++++++++++++++---------------- DevCtrl.py | 19 ++++---- DiseaseFinder.py | 5 +- DiseaseSelector.py | 6 +-- 4 files changed, 89 insertions(+), 56 deletions(-) diff --git a/Controller.py b/Controller.py index 15af4ab..9f5f24b 100644 --- a/Controller.py +++ b/Controller.py @@ -1,44 +1,77 @@ +import sys +from PyQt5.QtWidgets import (QWidget, QGridLayout,QPushButton, QApplication) +from PyQt5.QtWidgets import * +from PyQt5.QtCore import * +from PyQt5.QtGui import * import DiseaseFinder import DiseaseSelector +import DevCtrl +import pymysql + + +class Controller: + def __init__(self, symptomlist): + self.symptomlist = symptomlist + DiseaseList, self.tempDiseaseFinder = self.findDisease(symptomlist) + app = QApplication(sys.argv) + self.windowExample = DevCtrl.Viewer(symptomlist, DiseaseList, self) + self.windowExample.show() + sys.exit(app.exec_()) + + def findDisease(self, symptomlist): + DiseaseList = [] + val = DiseaseFinder.DiseaseFinder(symptomlist).checkDisease() + self.back = False # back이 1이면 backbutton이 활성화되었다고 생각하고 그 전 단계로 돌아간다. + if val != None: + # create diseaseList + DiseaseList = [] # 병명, site 주소가 저장되어 있다. + # destory symptom's list + del(symptomlist) + for key in val: # 이름만 따로 저장해서 activate("viewer, DiseaseList") + DiseaseList.append(key) + + tempDiseaseFinder = val + print(DiseaseList) + return DiseaseList, tempDiseaseFinder + else: + # activate backbutton + prompt + print("decrease symptoms") + # enter symptoms() + + def selectDisease(self, selectedDisease): + #selectedDisease = '라이 증후군(Reye syndrome)' + + url = "" + for diseaseName in self.tempDiseaseFinder: + if(selectedDisease == diseaseName): + url = self.tempDiseaseFinder[diseaseName] + + + tempDiseaseInfo = DiseaseSelector.DiseaseSelector(url).makeSelectedDiseaseInfo() # 선택된 증상, 관련질환, 진료과 등등이 저장 + ###activate("viewer", selectedDiseaseInfo) + self.windowExample2 = DevCtrl.Viewer2(selectedDisease, tempDiseaseInfo, self) + self.windowExample2.show() + + selectedDiseaseInfo = {} # 병명, 진료과 저장 + selectedDiseaseInfo['병명'] = selectedDisease + for diseaseinfo in tempDiseaseInfo: + if diseaseinfo == "진료과": # 병명과 진료과만 따로 저장(이후에 UC-5, 6에서 이용하기 위해) + selectedDiseaseInfo[diseaseinfo] = tempDiseaseInfo[diseaseinfo] + + f = open("selectedDiseaseInfo.txt", "w") + keys = list(selectedDiseaseInfo.keys()) + for k in keys: + f.write(str(k)+": "+selectedDiseaseInfo[k]+"\n") + f.close() + + #print(diseaseinfo) + print(tempDiseaseInfo) + #print(tempDiseaseInfo.keys()) + return selectedDiseaseInfo + + +DiseaseList = [] +symptomlist = ['머리', '건망증'] +controller = Controller(symptomlist) + -# enter symptoms() 함수를 이용해서 받아오지만, 일부분만 구현했기 때문에 symptomlist에 특정 값을 넣어놓았다. -symptomlist = ['등', '관절통'] -val = DiseaseFinder.DiseaseFinder(symptomlist).checkDisease() -back = 0 # back이 1이면 backbutton이 활성화되었다고 생각하고 그 전 단계로 돌아간다. -if val != None: - # create diseaseList - DiseaseList = [] # 병명, site 주소가 저장되어 있다. - # destory symptom's list - del(symptomlist) - for key in val: # 이름만 따로 저장해서 activate("viewer, DiseaseList") - DiseaseList.append(key) - - ###activate("viewer", d) - print(DiseaseList) - - # if back==1: - # activate backbutton + prompt - # enter symptoms() - - # enter selectedDisease() - selectedDisease = '간염(Hepatitis)' - url = url = val[selectedDisease] - - val = DiseaseSelector.DiseaseSelector( - url).makeSelectedDiseaseInfo() # 선택된 증상, 관련질환, 진료과 등등이 저장 - del(DiseaseList) - selectedDiseaseInfo = {} # 병명, 진료과 저장 - selectedDiseaseInfo['병명'] = selectedDisease - for diseaseinfo in val: - if diseaseinfo == "진료과": # 병명과 진료과만 따로 저장(이후에 UC-5, 6에서 이용하기 위해) - selectedDiseaseInfo[diseaseinfo] = val[diseaseinfo] - ###activate("viewer", selectedDiseaseInfo) - print("selecteDiseaseInfo", selectedDiseaseInfo) - # if back==1: - # activate backbutton + prompt - # enter selectedDisease() - -else: - # activate backbutton + prompt - print("decrease symptoms") - # enter symptoms() diff --git a/DevCtrl.py b/DevCtrl.py index 18d04e7..b9abbd6 100644 --- a/DevCtrl.py +++ b/DevCtrl.py @@ -7,7 +7,7 @@ from PyQt5.QtGui import * import HospitalFinder -class DevCtrl(QWidget): +class Viewer(QWidget): def __init__(self, symptomsList, diseaseList, controller): super().__init__() self.Controller = controller @@ -77,22 +77,22 @@ def breakName(self, name): return '\n'.join(list) def btn_clicked(self): + self.Controller.back = True self.close() def make_calluser(self, name): def calluser(): print(name) self.Controller.selectDisease(name) - #self.windowExample2 = DevCtrl2(name) - #self.windowExample2.show() return calluser -class DevCtrl2(QWidget): - def __init__(self, diseaseName, tempDiseaseInfo): +class Viewer2(QWidget): + def __init__(self, diseaseName, tempDiseaseInfo, controller): super().__init__() self.setWindowTitle("DISEASE INFO") self.setGeometry(300,100,1200,800) + self.Controller = controller self.layout = QtWidgets.QHBoxLayout(self) self.scrollArea = QtWidgets.QScrollArea(self) self.scrollArea.setWidgetResizable(True) @@ -192,16 +192,17 @@ def breakName(self, name): return '\n'.join(list) def btn_clicked(self): + self.Controller.back = True self.close() def make_calluser(self, DiseaseInfo): def calluser(): print(DiseaseInfo) - self.windowExample3 = DevCtrl3(DiseaseInfo) + self.windowExample3 = Viewer3(DiseaseInfo) self.windowExample3.show() return calluser -class DevCtrl3(QWidget): +class Viewer3(QWidget): def __init__(self, DiseaseInfo): super().__init__() self.setWindowTitle("GET TREATMENT") @@ -251,8 +252,8 @@ def calluser(): '급성 호흡기 증후군', '코로나', '과제', '하기', '시러어어ㅓㅓ어어'] temp = {'증상': '신상아 괴사성 장염 초기에 증상이 경미할 때는 소화 불량과 증상이 비슷할 수 있습니다. 초기의 주요 증상은 복부 팽만과 이전에 섭취한 우유가 위에 그대로 남아 있는 것입니다. 그 외에 아기의 배가 부르고, 아기가 잘 빨지 않으며, 늘어지면서 잠혈변(눈에 보이지 않는 혈변)이 보입니다. 이러한 증상은 서서히 시작되며, 미숙아나 신생아의 경우 증상이 미약하여 잘 발견되지 않는 경우가 많습니다.상아 괴사성 장염 초기에 증상이 경미할 때는 소화 불량과 증상이 비슷할 수 있습니다. 초기의 주요 증상은 복부 팽만과 이전에 섭취한 우유가 위에 그대로 남아 있는 것입니다. 그 외에 아기의 배가 부르고, 아기가 잘 빨지 않으며, 늘어지면서 잠혈변(눈에 보이지 않는 혈변)이 보입니다. 이러한 증상은 서서히 시작되며, 미숙아나 신생아의 경우 증상이 미약하여 잘 발견되지 않는 경우가 많습니다.위에 그대로 남아 있는 것입니다. 그 외에 아기의 배가 부르고, 아기가 잘 빨지 않으며, 늘어지면서 잠혈변(눈에 보이지 않는 혈변)이 보입니다. 이러한 증상은 서서히 시작되며, 미숙아나 신생아의 경우 증상이 미약하여 잘 발견되지 않는 경우가 많습니다.위에 그대로 남아 있는 것입니다. 그 외에 아기의 배가 부르고, 아기가 잘 빨지 않으며, 늘어지면서 잠혈변(눈에 보이지 않는 혈변)이 보입니다. 이러한 증상은 서서히 시작되며, 미숙아나 신생아의 경우 증상이 미약하여 잘 발견되지 않는 경우가 많습니다.\n 증상이 심해지면 무호흡 증, 서맥, 저체온, 기민 상태, 신경과민, 담즙 섞인 구토, 피 섞인 구토, 복부 팽만, 혈변과 심한 설사, 위 팽만 등의 증상이 나타날 수 있습니다. 이러한 정상이 점점 더 심해질 수 있습니다. 아기가 잘 먹지 않습니다. 또한 저혈압, 저체온, 창백, 호흡 곤란 등 패혈증과 비슷한 증상이 나타날 수 있습니다. 복막염, 장 천공, 쇼크 및 사망까지 이를 수도 있습니다.', '관련질환': '신생아 답즙정체증, 신생아 호흡곤란증후군', '진료과': '산부인과, 신생아과, 소아외과', '동의어': 'Neonatal Necrotizing Enterocolitis,신생아 괴사성 소장결장염,태아 및 신생아의 괴사성 소장결장염', '정의': '신생아 괴사성 장염은 신생아의 소장이나 대장에 생기는 괴사 성 장염입니다. 여러 가지 원인에 의해 발생할 수 있는 신생아 중증 질환의 하나입니다. 장 점막의 괴사가 다양한 정도로 일어나는 것이 특징입니다. 치료하더라도 사망률이 20%에 이르는 무서운 질병입니다.\n ', '원인': '신생아 괴사성 장염은 주로 미숙아에게 발생합니다. 그 원인은 명확하게 밝혀지지 않았습니다. 1,500g 미만 신생아의 발생 빈도는 5% 내외로, 미숙아 자체가 가장 큰 위험 요인입니다. 그 외에도 고농도 우유, 저산소증, 너무 빠른 영양법, 적혈구 증가증, 감염증 등 다양한 위험 요인이 장 점막의 손상, 이차적 세균 감염, 장의 괴사를 일으키는 데 작용합니다. 만삭아의 경우는 심장 질환이나 저산소증이 있을 때 발생할 수 있습니다.', ' 진단': '신생아 괴사성 장염은 병력, 증상, 진찰 등을 종합해서 진단할 수 있습니다. 조기에 진단하고 적극적으로 치료하면 병의 진행을 막을 수 있으므로, 병을 의심하여 찾아내는 것이 중요합니다. 주로 복부 X-ray 사진만으로 진단할 수 있으며, 필요에 따라 복부 초음파 소견이 도움이 될 수 있습니다. 단순 복부 촬영상 이상 소견이 보이며, 장벽 내 공기가 진단에 가장 중요합니다. 간문맥 내 공기가 보이거나 복강 내 공기가 보이면 장 천공을 의미합니다.', '치료': '신생아 괴사성 장염 환아에게는 장기간 금식에 따라 정맥 주사로 인공적 영양 공급을 행해야 합니다. 그러나 이와 같은 정맥 영양법에 의한 합병증으로 패혈증, 혈전증 및 간경변으로 진행 하는 담즙 정체성 황달 등이 생길 수 있습니다.', '경과': '신생아 괴사성 장염을 내과적으로 치료했을 때, 진단 시 장벽 내 공기가 있었던 환자의 20%는 치료에 실패합니다. 이러한 환자 중 9~25%가 사망합니다. 약 10%의 환자는 괴사된 부위에 협착이 생길 수 있습니다. 장의 괴사가 심했던 경우는 생존하더라도 단장 증후군(short bowel syndrome)이 발생하여 영양에 어려움을 겪을 수 있습니다.', '주의사항': '신생아 괴사성 장염은 사망 을 초래할 수 있는 중증 신생아 질환입니다. 따라서 확진된 환자뿐 아니라 의심되는 환자도 집중 치료를 시작해야 합니다. 입을 통한 영양 공급을 일시 중단하고, 혈관을 통한 수액 공급, 전해질 공급, 영양 공급 등을 시 행합니다. 혈액, 대변 및 척수액 배양 검사 시행 후 전신적 항생제로 치료해야 합니다. 장이 천공된 증거가 있으면 괴사된 장을 외과적으로 절제합니다.', '초보엄마가 알아야 할 신생아 응급상황': '이병섭'} - #windowExample = DevCtrl(["두통","피곤함","졸림"], names) - windowExample2 = DevCtrl2("코로나", temp) + #windowExample = Viewer(["두통","피곤함","졸림"], names) + windowExample2 = Viewer2("코로나", temp) #windowExample.show() windowExample2.show() sys.exit(app.exec_()) \ No newline at end of file diff --git a/DiseaseFinder.py b/DiseaseFinder.py index 6d575f7..606a335 100644 --- a/DiseaseFinder.py +++ b/DiseaseFinder.py @@ -14,14 +14,13 @@ def checkDisease(self): from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select - # 크롬 드라이버로 크롬을 실행한다. chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('headless') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('lang=ko_KR') - driver = webdriver.Chrome( - r'C:\Users\es344\chromedriver', chrome_options=chrome_options) + # 크롬 드라이버로 크롬을 실행한다. + driver = webdriver.Chrome(r'C:\Users\user\CAUSE-project\chromedriver_win32\chromedriver.exe', chrome_options=chrome_options) # 신체부위 체크 task_list = [['머리', '?partId=B000007'], ['목', '?partId=B000008'], ['가슴', '?partId=B000020'], ['배', '?partId=B000010'], diff --git a/DiseaseSelector.py b/DiseaseSelector.py index 2a83198..b21cbb9 100644 --- a/DiseaseSelector.py +++ b/DiseaseSelector.py @@ -14,13 +14,13 @@ def makeSelectedDiseaseInfo(self): from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select - # 크롬 드라이버로 크롬을 실행한다. chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('headless') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('lang=ko_KR') - driver = webdriver.Chrome( - r'C:\Users\es344\chromedriver', chrome_options=chrome_options) + + # 크롬 드라이버로 크롬을 실행한다. + driver = webdriver.Chrome(r'C:\Users\user\CAUSE-project\chromedriver_win32\chromedriver.exe', chrome_options=chrome_options) # 질환백과 페이지로 이동 driver.get(self.getUrl())