def get_basic_info(self): sfzh, blh, jzkh, xm, csrq = self.basic_info out_data = [] sql = '''select sfzh , bah as blh, jzkh, xm, csrq, ldrq from gy_brjbxxk where ''' if sfzh: sfzh_sql = sql + "sfzh='{}'".format(sfzh) out_data.extend(self.fetch(sfzh_sql)) if blh: blh_sql = sql + "bah='{}'".format(blh) out_data.extend(self.fetch(blh_sql)) if jzkh: jzkh_sql = sql + "jzkh='{}'".format(jzkh) out_data.extend(self.fetch(jzkh_sql)) if xm: xm_rq_sql = sql + "xm='{}'".format(xm) tem_data = [ row_data for row_data in self.fetch(xm_rq_sql) if filter_data(self.basic_info, row_data) ] out_data.extend(tem_data) seen = set() new_data = [] for i in out_data: if i['jzkh'] not in seen: seen.add(i['jzkh']) new_data.append(i) return new_data
def get_base_info(self): sfzh, blh, jzkh, xm, csrq = self.base_info sql = BASE_SQL.format(blh, jzkh, xm) out_data = [ row_data for row_data in self.fetch(sql) if filter_data(self.base_info, row_data) ] return out_data
def start(self, base_info): name = base_info[3] blh = base_info[1] blh_set = set(self.search_patient_with_name(name)) blh_array = [ i for i in blh_set if filter_data(base_info, self.patient_info(i)) ] # 过滤数据 if blh: blh_array.append(blh) result = [self.get_data(i) for i in set(blh_array) if i] return result
def start(self, base_info): name = base_info[3] blh = base_info[1] blh_array = self.get_data(name) if blh: blh_array.append(blh) result = [] for i in set(blh_array): for para in set(self.get_data(i)): detail_data, main_info = self.get_detail(para) if filter_data(base_info, main_info): # 过滤数据 result.append(detail_data) return result
def filter_valid(self, idx, blh): resp = self._session.get( self._host + '/zwemr/Doctors/BingAnShouYeView1.aspx?state=1&zyxh={}&bah={}&gh={}' .format(idx, blh, self._user)) doc = etree.HTML(resp.text) xm = ''.join(doc.xpath('//*[@id="_ctl0_C1_LabName"]//text()')).strip() sfzh = ''.join( doc.xpath('//*[@id="_ctl0_C1_LabIDcard"]//text()')).strip() csrq = ''.join( doc.xpath('//*[@id="_ctl0_C1_LabCsrq"]//text()')).strip() if not filter_data(self.base_info, (sfzh, blh, None, xm, csrq)): return return doc
def check_patient(self, doc): """数据验证""" url = self.host + '/app-station-manage/medicalRecord/getInpatientInfo' json_data = { "inpatientId": doc['inhospitalPatientId'], "masterPatientIndex": doc['masterPatientIndex'], "type": '2', } response = requests.post(url, headers=self.authorize, json=json_data) result = response.json() data = result['body'] if result['code'] == 2000 and data: base_info = (data['idCardNo'], data['medicalRecordNo'], '', data['patientName'], data['birthdate']) if filter_data(self.source_info, base_info): patientInfo = { 30101: data['patientName'], 30102: data['gender'], 30104: data['medicalRecordNo'], 30110: data['birthdate'], 30178: data['age'], 30111: data['countryName'], 30117: data['nationDesc'], 30119: data['idCardNo'], 30106: None, # 医疗保险支付方式 30107: data['costTypeName'], 30115: data['professionDesc'], 30118: data['marriageStatusDesc'], 30120: data['presentAddress'], # 30126: p_2('TxtDwdh'), # 单位电话 30121: data['workName'], 30122: data['workAddress'], 30128: data['hospitalizedWayDesc'], 30129: data['hospitalizedDate'], 30133: data['hospitalizedMainDiagnose'], 30182: 3, # 数据来源 30131: data['outHospitalDate'], 30130: data['hospitalDays'], 30136: data['injuryPoisoningReason'], 30138: None, # 30139: p_2('TxtBlh'), # 病理号 30174: data['aboType'], 30140: data['hbsAg'], # 0:阴性 1:阳性 null:未做 30141: data['hcvAb'], 30142: data['hivAb'], 30143: data['tpha'], 30144: data['infectiousReport'], 30175: data['rhType'], 30137: data['allgergyDesc'], 30173: data['outHospitalWay'], 30176: data['hospitalizedAgain'], 30177: '入院前: {}'.format(data['beforeHospitalizedComa']) + '入院后: {}'.format(data['afterHospitalizedComa']), 'lxr': [{ 30124: data['linkmanName'], 30125: data['linkmanAddress'], 30126: data['linkmanPhoneNo'], 30180: data['linkTypeName'] }], } index_id = data['id'] return patientInfo, index_id return '', False