def lis_to_phexam(lisDepartment, dockingLisFollowing, SQJGMM): """ LIS到体检系统登入状态、LIS结果导入 :param dockingLisFollowing: :return: """ r_list = [] ll = [] log.info('开始查询本样本号所做的项目....') assems = get_assems_by_barcode_id(dockingLisFollowing.ZXTM) str_assems = ','.join(assems) if len(assems) == 0: raise NotFoundException('在检检系统中,未发现条码号为:{}的任何项目组'.format( dockingLisFollowing.ZXTM)) if not dockingLisFollowing.BRID: raise TJException('不存在的预约号') if dockingLisFollowing.ZTBZ == '2': # 表示样本号已经在LIS中登记 log.info('开始对预约号:{} 项目组列表:{} 进行登入操作'.format(dockingLisFollowing.BRID, str_assems)) try: _login() loginAssems(dockingLisFollowing.BRID, str_assems, None) # 为None的话,为当前的登录者进行操作 log.info('项目组登入操作成功') _appen_msg(r_list=r_list, orderId=dockingLisFollowing.BRID, assems=str_assems, assem_name=None, op='登入', msg='登入成功', ex=None, lis_result=None, barcode=dockingLisFollowing.ZXTM) except Exception as e: _appen_msg(r_list, dockingLisFollowing.BRID, str_assems, None, '登入', None, e, None, dockingLisFollowing.ZXTM) elif dockingLisFollowing.ZTBZ == '3': # 表示报告已经完成 try: log.info('开始从平台中,获取报告信息...') build_dict = get_init_dict() build_lis_report(dockingLisFollowing, build_dict) build_dict['PARAMS']['TOKEN'] = get_token( dockingLisFollowing.SQJGDM, SQJGMM, dockingLisFollowing.SQJGDM) report_nos = get_report_no_from_lis(build_dict) if len(report_nos) == 0: raise Exception('没有获取到报告编号') for report_no in report_nos: log.info('使用报告编码:{}查询项目结果'.format(report_no)) req_results_dict = get_init_dict() build_lis_report_results(dockingLisFollowing, report_no, req_results_dict) req_results_dict['PARAMS']['TOKEN'] = get_token( dockingLisFollowing.SQJGDM, SQJGMM, dockingLisFollowing.SQJGDM) lis_results = get_report_result_from_lis( req_results_dict)['Results']['Result'] # 获取到检验医生和审核医生 opName = lis_results.get('JYYS', None) # 报告医生 auditName = lis_results.get('SHYS', None) if lis_results.get( 'SHYS', None) is not None else opName # 审核医生,如果审核医生为空,则使用报告医生 result_dict_list = lis_results['ItemResultList']['ItemResult'] if isinstance(result_dict_list, list): for result in result_dict_list: result['JYYS'] = opName result['SHYS'] = auditName ll.append(result) else: result_dict_list['JYYS'] = opName result_dict_list['SHYS'] = auditName ll.append(result_dict_list) # 以lis项目id为key,建立字典 lis_results_map = {} lis_results_set = set() for result in ll: key = result['XMBM'] lis_results_map[key] = result lis_results_set.add(key) log.info('获取到lis数据的对照码集合为:{}'.format(lis_results_set)) _login() assemName = None for assemId in assems: try: log.info('开始循环获取预约号:{}的项目组id:{}的体检信息'.format( dockingLisFollowing.BRID, assemId)) msg = tjAssert( loadExam(dept=lisDepartment, orderId=dockingLisFollowing.BRID, filterAssemIds=assemId)) exam = msg['msg'] assem = exam['assems'][0] elements = assem['elements'] # 项目组名称 assemName = assem['assemName'] log.info('获取的体检系统的项目名称为:{}'.format(assemName)) # 使用外键组成项目字典 examElementDict = {} examElementSet = set() for element in elements: extCode = element['extSysControlCode'] if not extCode: raise TJException('项目名:{} 的系统对照为空'.format( element['elementName'])) # 开始分割项目对照码,一个小项,可以有多个对照码,使用,,|^,进行分割 keys = re.split(r',|,|\^|\|', extCode) for key in keys: if key: code = key.strip() if code: examElementDict[code] = element examElementSet.add(code) log.info('获取到体检数据的对照码集合为:{}'.format(examElementSet)) # 计算项目编码的合集 both_set = set.intersection(examElementSet, lis_results_set) log.info('得到的交集为:{}'.format(both_set)) # 开始对小项进行标记 for code in both_set: examElementDict[code]['bingo'] = True errMsgs = [] log.info('开始检查哪些项目,在HIS中没有结果...') for element in elements: if 'bingo' not in element.keys(): errMsg = '在LIS提供的项目列表中,未发现项目id:{} 项目名:{} 项目对照:{}的项目'.format( element['elementId'], element['elementName'], element['extSysControlCode']) errMsgs.append(errMsg) if len(errMsgs) > 0: raise TJException(';'.join(errMsgs)) log.info('开始生成LIS体检项目...') # sampleOpId, opId = _get_opid(lis_results) lisDatas = { 'orderId': dockingLisFollowing.BRID, 'elementAssemId': assemId, 'departmentId': lisDepartment, 'sampleOpId': None, # 报告人 'opId': None, # 审核人 'items': [] } sampleOpId = None opId = None isGetDoct = True for code in both_set: examElement = examElementDict[code] hisLisElement = lis_results_map[code] if isGetDoct: # 开始获取医生,只取一次 sampleOpId, opId = _get_opid( hisLisElement.get('JYYS', None), hisLisElement.get('SHYS', None)) lisDatas['sampleOpId'] = sampleOpId lisDatas['opId'] = opId lisElement = {} lisElement['elementId'] = examElement['elementId'] lisElement['checkElementResult'] = hisLisElement.get( 'JCJG', None) lisElement['ferenceLower'] = 0 lisElement['ferenceUpper'] = 0 # 参考范围,使用新版的参考范围 lisElement['showFerence'] = hisLisElement.get( 'CKFW', None) lisElement['unit'] = hisLisElement.get('JLDW', None) lisElement['resultType'] = examElement['resultType'] lisElement['referenceType'] = '1' # e['refType'] # 危机值的标识? lisElement['criticalValuesSymbol'] = hisLisElement.get( 'WJZBZ', None) # SUM_JUDGE_TYPE ,项目异常下小结判断:0表示使用体检系统判断业务,1表示使用外接系统根据positiveSymbol判断 lisElement['sumJudgeType'] = 1 ycts = hisLisElement.get('YCTS', None) resultType = examElement['resultType'] lisElement['positiveSymbol'] = '' if resultType == '1': # 数值类值 if ycts == '3': lisElement['positiveSymbol'] = '高' elif ycts == '4': lisElement['positiveSymbol'] = '低' elif resultType == '2': # 文本类型 if ycts != '1': lisElement['positiveSymbol'] = lisElement[ 'checkElementResult'] # 非正常值的话,这里写检查结果 lisDatas['items'].append(lisElement) isGetDoct = False log.info('开始上传LIS结果数据...') examData = json.dumps(lisDatas, ensure_ascii=False) log.info(examData) log.info("开始保存LIS结果....") result = tjAssert(saveLisExamData(examData)) log.info(result['msg']) _appen_msg(r_list, dockingLisFollowing.BRID, assemId, assemName, 'LIS结果传输', 'LIS结果传输成功', None, _tojson(ll), dockingLisFollowing.ZXTM) except Exception as e: _appen_msg(r_list, dockingLisFollowing.BRID, assemId, assemName, 'LIS结果传输', None, e, _tojson(ll), dockingLisFollowing.ZXTM) except Exception as e: _appen_msg(r_list, dockingLisFollowing.BRID, str_assems, None, 'LIS结果传输', None, e, _tojson(ll), dockingLisFollowing.ZXTM) return r_list
def pacs_to_phexam(dockingPacsFollowing, SQJGMM): r_list = [] log.info('开始拆分医院内流水号:{}'.format(dockingPacsFollowing.YWLSH)) (orderId, assemId) = re.split(r'\^', dockingPacsFollowing.YWLSH) log.info('获取到预约号为:{} 项目组id为:{}'.format(orderId, assemId)) if orderId is None or assemId is None: raise InvalidParamException('获取到的预约号或项目组无效') if dockingPacsFollowing.ZTBZ == '1': log.info('开始登记预约号:{} 项目组:{} 的记录'.format(orderId, assemId)) try: _login() tjAssert(loginAssems(orderId, assemId, None)) # 为None的话,为当前的登录者进行操作 log.info('预约号:{} 项目组:{}登入操作成功'.format(orderId, assemId)) _appen_msg(r_list, orderId, assemId, None, '登入', '登入成功', None) except Exception as e: _appen_msg(r_list, orderId, assemId, None, '登入', None, e) log.error('预约号:{} 项目组:{}登入操作失败!'.format(orderId, assemId)) log.error(e) elif dockingPacsFollowing.ZTBZ == '4': assemName = None try: log.info('开始获取预约号:{} 项目组id:{}的结果信息'.format(orderId, assemId)) log.info('开始通过项目组id:{}来获取科室id'.format(assemId)) departmentId = get_department_by_assem_id(assemId) if departmentId is None: raise TJException('项目组:{}在体检中未找到科室'.format(assemId)) log.info('开始获取报告列表...') build_dict = get_init_dict() build_pacs_report_result(dockingPacsFollowing, build_dict) build_dict['PARAMS']['TOKEN'] = get_token( dockingPacsFollowing.SQJGDM, SQJGMM, dockingPacsFollowing.SQJGDM) pacs_results = get_report_result_from_pacs(build_dict) log.info('获取到PACS的结果为:{}'.format(pacs_results)) pacs_result_dict = pacs_results['FORMLISTS']['FORMLIST'] # 检查结果阴阳性,0未做1阴性2阳性 yybz = pacs_result_dict.get('YYBZ', None) yxbx = pacs_result_dict.get('YXBX', None) jcts = pacs_result_dict.get('JCTS', None) log.info('从报告获取到阳性标识:{} 影像表现:{} 检查提示:{} '.format(yybz, yxbx, jcts)) log.info('从体检系统中获取体检结果...') _login() msg = tjAssert( loadExam(dept=departmentId, orderId=orderId, filterAssemIds=assemId)) exam = msg['msg'] assem = exam['assems'][0] element = assem['elements'][0] # 项目组名称 assemName = assem['assemName'] log.info('获取到项目组名:{}'.format(assemName)) # 初始化保存数据 reporterId, confirmId = _get_opid(pacs_result_dict) log.info('获取到报告者id:{} 审核者id:{}'.format(reporterId, confirmId)) saveExam = initSaveExam(exam, departmentId, confirmId, reporterId) # 小项结果 fs = {'others': yxbx} addElementResult(saveExam, exam=exam, opId=reporterId, **fs) # 项目结论 log.info('获取结论...') writeSymbol = None diseaseCode = None if yybz == '2': # 阳性 result = getDiseaseByName(jcts) if result is None: writeSymbol = '02' else: writeSymbol = '01' diseaseCode = result['msg']['id'] elif yybz == '1': # 阴性 writeSymbol = '03' log.info("获取诊断方式:{},疾病名称:{},疾病id:{}".format( writeSymbol, jcts, diseaseCode)) addDisease(saveExam, exam=exam, deptId=departmentId, opId=reporterId, writeSymbol=writeSymbol, diseaseName=jcts, diseaseCode=diseaseCode) # 开始提交分科结果 examData = json.dumps(saveExam) log.info(examData) log.info('开始提交分科结果...') result = tjAssert(saveExamData(examData)) log.info(result['msg']) _appen_msg(r_list, orderId, assemId, assemName, 'PACS结果传输', '体检结果接收成功', None) except Exception as e: _appen_msg(r_list, orderId, assemId, assemName, 'PACS结果传输', repr(e), e) log.error('预约号:{} 项目组:{}获取PACS结果失败'.format(orderId, assemId)) log.error(e) return r_list
def trans_pacs_result(order_id, pacs_assem_id, pacs_assem_name, report_diagnose, report_result, positive_content, report_url, reporter, audit_doctor, report_date): """ 根据预约号、PACS项目组ID,传输pacs结果到体检系统 :param order_id: :param pacs_element_id: :return: """ department_id, assemdIds = _common_fun(pacs_assem_id) # 获取报告医生的ID reporterId = getUserIdByRealName(reporter, appconfig['PACS_USE_EXAM_DOCTOR'], 'pacs') log.info("获取报告医生ID为:{}".format(reporterId)) # 获取审核医生ID confirmId = getUserIdByRealName(audit_doctor, appconfig['PACS_USE_EXAM_DOCTOR'], 'pacs') log.info("获取审核者医生ID为:{}".format(confirmId)) log.info('开始根据科室、项目组、预约号获取体检信息,科室ID:{} 预约号:{} 项目组ID:{}'.format( department_id, order_id, assemdIds)) msg = tjAssert( loadExam(dept=department_id, orderId=order_id, filterAssemIds=assemdIds)) exam = msg['msg'] # 初始化保存数据 saveExam = initSaveExam(exam, department_id, confirmId, reporterId) # 小项结果 fs = {'others': report_result} addElementResult(saveExam, exam=exam, opId=reporterId, **fs) # 结论部分,开始拆分结论 log.info('获取结论...') if not report_diagnose: raise InvalidDialogException('结论不能为空') summaries = re.split(r'\;|;|\r|\n|\r\n|[\d]+\.', report_diagnose) for s in summaries: summary = re.sub(r'^[\d]+\.', '', s.strip()) if len(summary) == 0: continue log.info('获取结论:{}'.format(summary)) writeSymbol = None diseaseCode = None if summary.find('未见异常') >= 0 or summary.find( '未见明显异常') >= 0 or summary.find('未见确切异常') >= 0: writeSymbol = '03' else: result = getDiseaseByName(summary) if result is None: writeSymbol = '02' else: writeSymbol = '01' diseaseCode = result['msg']['id'] log.info("获取诊断方式:{},疾病名称:{},疾病id:{}".format(writeSymbol, summary, diseaseCode)) addDisease(saveExam, exam=exam, deptId=department_id, opId=reporterId, writeSymbol=writeSymbol, diseaseName=summary, diseaseCode=diseaseCode) # 重大阳性 if positive_content: if positive_content.strip() != '阴性': addPosReport(saveExam, content=positive_content, advice=positive_content, opId=reporterId) # 开始提交分科结果 examData = json.dumps(saveExam) log.info(examData) log.info('开始提交分科结果...') result = tjAssert(saveExamData(examData)) log.info(result['msg']) # 开始传输图像报告 upload_report( order_id=order_id, department_id=department_id, pacs_assem_id=getElementAssemByCode(exam)['assemId'], pacs_assem_name=pacs_assem_name, reporter_id=reporterId, report_url=report_url, report_date=report_date if report_date else datetime.datetime.now())
def transLisByAssem(departmentId, order_id, assemId, lis_result_dict): """ 上传LIS数据到体检系统中 :param departmentId: 科室ID :param assemId:项目组ID :lis_result_dict:项目结果字典 :return: """ lis_result_key_set = set() for key in lis_result_dict.keys(): lis_result_key_set.add(key) # 开始尝试登录到体检系统 log.info('开始尝试登录体检系统,用户名:{} 密码:{}'.format(appconfig['JK_EXAM_USERNAME'], appconfig['JK_EXAM_PASSWORD'])) result = tjAssert( loginByUserNamePwd(appconfig['JK_EXAM_USERNAME'], appconfig['JK_EXAM_PASSWORD'])) log.info('开始根据科室、项目组、预约号获取体检信息,科室ID:{} 预约号:{} 项目组ID:{}'.format( departmentId, order_id, assemId)) msg = tjAssert( loadExam(dept=departmentId, orderId=order_id, filterAssemIds=assemId)) log.info('开始检查以及组装体检项目...') exam = msg['msg'] assem = exam['assems'][0] elements = assem['elements'] # 使用外键组成项目字典 examElementDict = {} examElementSet = set() for element in elements: extCode = None if appconfig['IS_LIS_ITEM_MAPPING']: # 如果不需要映射项目 extCode = element['elementId'] else: extCode = element['extSysControlCode'] # 如果需要映射项目 if not extCode: raise TJException('项目名:{} 的系统对照为空'.format(element['elementName'])) # 开始分割项目对照码,一个小项,可以有多个对照码,使用,,|^,进行分割 keys = re.split(r',|,|\^|\|', extCode) for key in keys: if key: code = key.strip() if code: examElementDict[code] = element examElementSet.add(code) # 计算体检检查项目及lis项目结果列表的交集 both_set = set.intersection(examElementSet, lis_result_key_set) # 开始对小项进行标记 for code in both_set: examElementDict[code]['bingo'] = True errMsgs = [] log.info('开始检查哪些项目,在HIS中没有结果...') # 开始检查哪些项目没有结果 for element in elements: if 'bingo' not in element.keys(): errMsg = '在LIS提供的项目列表中,未发现项目id:{} 项目名:{} 项目对照:{}的项目'.format( element['elementId'], element['elementName'], element['extSysControlCode']) errMsgs.append(errMsg) if len(errMsgs) > 0: raise TJException(';'.join(errMsgs)) log.info('开始生成LIS体检项目...') lisDatas = { 'orderId': order_id, 'elementAssemId': assemId, 'departmentId': departmentId, 'sampleOpId': None, # 报告人 'opId': None, # 审核人 'items': [] } c = 0 item_results = [] for code in both_set: try: examElement = examElementDict[code] hisLisElement = lis_result_dict[code] if c == 0: log.info('用于获取项目结果及操作员的记录ID:{}'.format(hisLisElement.ID)) sampleOpId, opId = _get_opid(hisLisElement) lisDatas['sampleOpId'] = sampleOpId lisDatas['opId'] = opId lisElement = {} lisElement['elementId'] = examElement['elementId'] lisElement[ 'checkElementResult'] = hisLisElement.CONTENT_RESULT.strip( ) if hisLisElement.CONTENT_RESULT else None lisElement[ 'ferenceLower'] = hisLisElement.FERENCE_LOWER_LIMIT if _is_number( hisLisElement.FERENCE_LOWER_LIMIT) else 0 lisElement[ 'ferenceUpper'] = hisLisElement.FERENCE_UPPER_LIMIT if _is_number( hisLisElement.FERENCE_UPPER_LIMIT) else 0 # 参考范围,使用新版的参考范围 lisElement['showFerence'] = hisLisElement.FERENCE_VALUE lisElement['unit'] = hisLisElement.RESULT_UNIT resultType = examElement['resultType'] lisElement['resultType'] = resultType lisElement['referenceType'] = '1' # e['refType'] # 危机值的标识? lisElement[ 'criticalValuesSymbol'] = hisLisElement.CRITICAL_VALUES_SYMBOL # 第三方接入标识 lisElement['sumJudgeType'] = 1 if resultType == '1': # 数值类值 if hisLisElement.POSTIVE_SYMBOL in ('↓', 'L', 'LL'): lisElement['positiveSymbol'] = '低' elif hisLisElement.POSTIVE_SYMBOL in ('↑', 'H', 'HH'): lisElement['positiveSymbol'] = '高' elif resultType == '2': # 文本类型 if hisLisElement.POSITIVE_SYMBOL == '↑' \ or '阳' in hisLisElement.POSITIVE_SYMBOL: lisElement['positiveSymbol'] = lisElement[ 'checkElementResult'] # 非正常值的话,这里写检查结果 # if hisLisElement.POSITIVE_SYMBOL == '↓': # lisElement['positiveSymbol'] = '低' # elif hisLisElement.POSITIVE_SYMBOL == '↑': # lisElement['positiveSymbol'] = '高' # else: # lisElement['positiveSymbol'] = None lisDatas['items'].append(lisElement) # 项目的结果值列表保存,作为将来的参考,结构为 项目名称^项目结果^审核时间 item_results.append('{}^{}^{}'.format( hisLisElement.LIS_ELEMENT_NAME, hisLisElement.CONTENT_RESULT, hisLisElement.AUDIT_DATE.strftime('%Y-%m-%d %H:%M:%S') if hisLisElement.AUDIT_DATE else None)) finally: c += 1 log.info('开始上传LIS结果数据...') examData = json.dumps(lisDatas) log.info(examData) log.info("开始保存LIS结果....") result = tjAssert(saveLisExamData(examData)) log.info(result['msg']) return '\n'.join(item_results)
def save_gmd(): # 获取参数 r = {"Msg": None, "Status": "SUCCESS"} log.info('开始解析骨密度参数...') try: # print(request.json) gmd = json.loads(str(request.data, encoding='utf-8')) log.info('获取到要保存的骨密度数据:{}'.format(gmd)) patient_id = gmd.get('patientID') t = gmd.get('t') z = gmd.get('z') examDoctor = gmd.get('examDoctor') check_result = gmd.get('checkResultStr') log.info('获取到patient_id:{} t值:{} z值:{} 检查结果:{} examDoctor:{}'.format( patient_id, t, z, check_result, examDoctor)) exam_username = appconfig['JK_EXAM_USERNAME'] exam_password = appconfig['JK_EXAM_PASSWORD'] log.info('开始尝试登录体检系统,用户名:{} 密码:{}'.format(exam_username, exam_password)) result = tjAssert(loginByUserNamePwd(exam_username, exam_password)) log.info(result['msg']) # 获取报告医生的ID reporterId = getUserIdByRealName(examDoctor, appconfig['PACS_USE_EXAM_DOCTOR'], 'gmd') log.info("获取报告医生ID为:{}".format(reporterId)) log.info('开始保存骨密度数据...') # 获取诊断医生ID department_id = appconfig['DEPARTMENT'] assemdIds = appconfig['ASSEM_ID'] order_id = patient_id log.info('开始根据科室、项目组、预约号获取体检信息,科室ID:{} 预约号:{} 项目组ID:{}'.format( department_id, order_id, assemdIds)) msg = tjAssert( loadExam(dept=department_id, orderId=patient_id, filterAssemIds=assemdIds)) exam = msg['msg'] # 初始化保存数据 saveExam = initSaveExam(exam, department_id, reporterId, reporterId) # 小项结果 fs = {'3837': str(t), '3838': str(z)} addElementResult(saveExam, exam=exam, opId=reporterId, **fs) log.info('获取诊断信息:{}'.format(check_result)) summary = check_result log.info('获取结论:{}'.format(summary)) writeSymbol = None diseaseCode = None if summary.find('骨量正常') >= 0: writeSymbol = '03' else: result = getDiseaseByName(summary) if result is None: writeSymbol = '02' else: writeSymbol = '01' diseaseCode = result['msg']['id'] log.info("获取诊断方式:{},疾病名称:{},疾病id:{}".format(writeSymbol, summary, diseaseCode)) addDisease(saveExam, exam=exam, deptId=department_id, opId=reporterId, writeSymbol=writeSymbol, diseaseName=summary, diseaseCode=diseaseCode) # 开始提交分科结果 examData = json.dumps(saveExam) log.info(examData) log.info('开始提交分科结果...') result = tjAssert(saveExamData(examData)) log.info(result['msg']) # 开始上传图像 img = gmd.get('image') if img: log.info('开始上传图像报告...') upload_report(order_id=patient_id, department_id=department_id, pacs_assem_id=assemdIds, pacs_assem_name='超声骨密度', reporter_id=reporterId, report_base64=img, report_date=datetime.now()) r['Msg'] = '上传成功' except Exception as e: r['Msg'] = "上传失败!{}".format(repr(e)) log.error('上传数据失败') log.exception(e) finally: log.info('返回数据:{}'.format(r)) return jsonify(r)
def nj_to_exam(tjPacsResult, NJ_DEPARTMENT_ID): log.info( '开始对内镜记录 id:{} 预约号:{} 检查部位:{}进行操作'.format(tjPacsResult.id, tjPacsResult.register_num, tjPacsResult.check_part)) log.info('开始对诊断部位:{}进行分解...'.format(tjPacsResult.check_part)) desc, order_id, assem_id = re.split(r'\^', tjPacsResult.check_part) if order_id is None or assem_id is None: raise InvalidParamException('无效的部位代码,{}'.format(tjPacsResult.check_part)) log.info('获取到预约号:{} 项目组id:{}'.format(order_id, assem_id)) log.info('开始检查操作类型:{}'.format(tjPacsResult.rec_type)) _login() if tjPacsResult.rec_type == '1': log.info('开始登记...') tjAssert(loginAssems(order_id, assem_id, None)) # 为None的话,为当前的登录者进行操作 log.info('预约号:{} 项目组:{}登入操作成功'.format(order_id, assem_id)) elif tjPacsResult.rec_type == '2': log.info('开始保存体检结果...') msg = tjAssert( loadExam(dept=NJ_DEPARTMENT_ID, orderId=order_id, filterAssemIds=assem_id)) exam = msg['msg'] assem = exam['assems'][0] element = assem['elements'][0] # 初始化保存数据 reporterId, confirmId = _get_opid(tjPacsResult.report_doctor, tjPacsResult.audit_doctor) log.info('获取到报告者id:{} 审核者id:{}'.format(reporterId, confirmId)) saveExam = initSaveExam(exam, NJ_DEPARTMENT_ID, confirmId, reporterId) # 小项结果 fs = {'others': tjPacsResult.check_diag} addElementResult(saveExam, exam=exam, opId=reporterId, **fs) # 项目结论 log.info('获取结论...') writeSymbol = None diseaseCode = None dialogs = re.split(r'[\d]+\s*\.|[\d]+\s*、|\r\n', tjPacsResult.check_result) writeSymbol = None diseaseCode = None for diaglog in dialogs: diseaseCode = None if diaglog and diaglog.strip(): if diaglog.find('无异常') >= 0 or diaglog.find('无明显异常') >= 0: # 默认小节 writeSymbol = '03' else: result = getDiseaseByName(diaglog) if result is None: writeSymbol = '02' else: writeSymbol = '01' diseaseCode = result['msg']['id'] log.info("获取诊断方式:{},疾病名称:{},疾病id:{}".format(writeSymbol, diaglog, diseaseCode)) addDisease(saveExam, exam=exam, deptId=NJ_DEPARTMENT_ID, opId=reporterId, writeSymbol=writeSymbol, diseaseName=diaglog, diseaseCode=diseaseCode) # 开始提交分科结果 examData = json.dumps(saveExam) log.info(examData) log.info('开始提交分科结果...') result = tjAssert(saveExamData(examData)) log.info(result['msg'])