Exemple #1
0
def trans_pacs_reg(order_id, pacs_assem_id, op_type, op_name):
    """
    根据预约号、PACS项目组ID,将项目组进行登入、或取消登入的操作
    :param order_id:
    :param pacs_assem_id:
    :param op_type:
    :param op_name:
    :return:
    """
    department_id, assemdIds = _common_fun(pacs_assem_id)
    # 获取操作者id
    # result = tjAssert(getUserByRealName(op_name))
    # op_id = result['msg']['id']
    # confirmId = getUserIdByRealName(audit_doctor, appconfig['PACS_USE_EXAM_DOCTOR'], 'pacs')
    log.info('获取到技师名字:{}  是否是使用体检系统的用户名:{} '.format(
        op_name, appconfig['PACS_USE_EXAM_DOCTOR']))
    op_id = getUserIdByRealName(op_name, appconfig['PACS_USE_EXAM_DOCTOR'],
                                'pacs')
    log.info("获取登记技师ID为:{}".format(op_id))
    result = None
    if op_type == '登记':
        result = tjAssert(loginAssems(order_id, assemdIds, op_id))
    elif op_type == '撤销登记':
        result = tjAssert(
            cancelLoginAssems(order_id, department_id, assemdIds, op_id))
    else:
        raise InvalidOpTypeException(
            '无效的操作类型OP_TYPE:{},值必须为[登记]或[撤销登记]'.format(op_type))

    log.info(result['msg'])
Exemple #2
0
def _get_opid(opName, auditName):
    auditName = auditName if auditName else opName  # 审核医生,如果审核医生为空,则使用报告医生

    log.info('获取到报告医生:{}  审核医生:{}'.format(opName, auditName))

    opId = getUserIdByRealName(opName, False, 'nj')

    log.info("获取报告医生id:{}  用户名:{}".format(opId, opName))

    if not auditName:
        raise TJException('没有发现有效的审核医生')

    auditId = getUserIdByRealName(auditName, False, 'nj')

    log.info("获取审核医生id:{}  用户名:{}".format(auditId, auditName))
    return opId, auditId
Exemple #3
0
def _get_opid(lisResult):
    opName = lisResult.OPERATOR_NAME  # 报告医生
    auditName = lisResult.AUDIT_NAME if lisResult.AUDIT_NAME is not None else lisResult.OPERATOR_NAME  # 审核医生,如果审核医生为空,则使用报告医生

    log.info('获取到报告医生:{}  审核医生:{}'.format(opName, auditName))

    opId = getUserIdByRealName(opName, False, 'lis')

    log.info("获取报告医生id:{}  用户名:{}".format(opId, opName))

    if not auditName:
        raise TJException('没有发现有效的审核医生')

    auditId = getUserIdByRealName(auditName, False, 'lis')

    log.info("获取审核医生id:{}  用户名:{}".format(auditId, auditName))
    return opId, auditId
def _get_opid(opName, auditName):
    # opName = lis_results_dict.get('JYYS', None)  # 报告医生
    # auditName = lis_results_dict.get('SHYS', None) if lis_results_dict.get('SHYS',
    #                                                                        None) is not None else opName  # 审核医生,如果审核医生为空,则使用报告医生

    log.info('获取到报告医生:{}  审核医生:{}'.format(opName, auditName))

    opId = getUserIdByRealName(opName, False, 'lis')

    log.info("获取报告医生id:{}  用户名:{}".format(opId, opName))

    if not auditName:
        raise TJException('没有发现有效的审核医生')

    auditId = getUserIdByRealName(auditName, False, 'lis')

    log.info("获取审核医生id:{}  用户名:{}".format(auditId, auditName))
    return opId, auditId
def _get_opid(pacs_results_dict):
    opName = pacs_results_dict.get('BGYSXM', None)  # 报告医生
    auditName = pacs_results_dict.get('SHRXM', None) if pacs_results_dict.get(
        'BGYSXM', None) is not None else opName  # 审核医生,如果审核医生为空,则使用报告医生

    log.info('获取到报告医生:{}  审核医生:{}'.format(opName, auditName))

    opId = getUserIdByRealName(opName, False, 'pacs')

    log.info("获取报告医生id:{}  用户名:{}".format(opId, opName))

    if not auditName:
        raise TJException('没有发现有效的审核医生')

    auditId = getUserIdByRealName(auditName, False, 'pacs')

    log.info("获取审核医生id:{}  用户名:{}".format(auditId, auditName))
    return opId, auditId
Exemple #6
0
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())
Exemple #7
0
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)