Ejemplo n.º 1
0
def applyDiagnoseForm(formid):
    if (int(formid) == 1) :
        form = DiagnoseForm3(request.form)
        form_result = form.validate()
        if form_result.status == rs.SUCCESS.status:
            if(form.diagnoseId):
                new_diagnose = Diagnose.getDiagnoseById(form.diagnoseId)
            else:
                new_diagnose = Diagnose.getNewDiagnoseByStatus(DiagnoseStatus.Draft, session['userId'])
            if(new_diagnose is None):
                new_diagnose = Diagnose()
                new_diagnose.status = DiagnoseStatus.Draft

            new_diagnose.doctorId = form.doctorId
            new_diagnose.uploadUserId = session['userId']

            Diagnose.save(new_diagnose)
            form_result.data = {'formId': 2, 'diagnoseId': new_diagnose.id}
        return jsonify(form_result.__dict__)
    elif (int(formid) == 2) :
        form = DiagnoseForm1(request.form)
        form_result = form.validate()
        if form_result.status == rs.SUCCESS.status:
            if form.diagnoseId is not None:
                new_diagnose = Diagnose.getDiagnoseById(form.diagnoseId)
            else:
                new_diagnose = Diagnose.getNewDiagnoseByStatus(DiagnoseStatus.Draft, int(session['userId']))
            if(new_diagnose is not None):
                # 去拿没有draft的用户
                if(form.exist):
                    new_patient = Patient.get_patient_by_id(form.patientid)
                else:
                    new_patient = Patient.get_patient_draft(new_diagnose.patientId)
                if new_patient is None:
                    new_patient = Patient()
                    new_patient.type = PatientStatus.diagnose
                    new_patient.userID = session['userId']
                    new_patient.realname = form.patientname
                    new_patient.gender = form.patientsex
                    new_patient.birthDate = datetime.strptime(form.birthdate, "%Y-%m-%d")
                    new_patient.identityCode = form.identitynumber
                    new_patient.locationId = form.locationId
                    new_patient.identityPhone = form.phonenumber
                    new_patient.status = ModelStatus.Draft
                    # new_patient.locationId = form.location
                    Patient.save(new_patient)
                new_diagnose.patientId = new_patient.id
                Diagnose.save(new_diagnose)

                # Hospital User 注册用户
                if(form.isHospitalUser):
                    new_user = User(form.phonenumber, random.sample('zyxwvutsrqponmlkjihgfedcba1234567890',6), False)
                    new_user.type = UserStatus.patent
                    new_user.status = ModelStatus.Draft
                    User.save(new_user)
                    new_patient.userID = new_user.id
                    Patient.save(new_patient)
                    new_userrole = UserRole(new_user.id, RoleId.Patient)
                    UserRole.save(new_userrole)

                form_result.data = {'formId': 3, }
            else:
                form_result = ResultStatus(FAILURE.status, "找不到第一步草稿")
        return jsonify(form_result.__dict__)
    elif (int(formid) == 3):
        form = DiagnoseForm2(request.form)
        form_result = form.validate()
        if form_result.status == rs.SUCCESS.status:

            if form.diagnoseId is not None:
                new_diagnose = Diagnose.getDiagnoseById(form.diagnoseId)
            else:
                new_diagnose = Diagnose.getNewDiagnoseByStatus(DiagnoseStatus.Draft, int(session['userId']))

            if new_diagnose is not None:

                if form.exist:
                    new_pathology = Pathology.getById(form.pathologyId)
                elif new_diagnose.pathologyId:
                    new_pathology = Pathology.getById(new_diagnose.pathologyId)
                else:
                    new_pathology = Pathology.getByPatientStatus(session['userId'], ModelStatus.Draft)

                if new_pathology is None:
                    new_pathology = Pathology(new_diagnose.patientId)

                new_pathology.diagnoseMethod = form.dicomtype
                new_pathology.status = ModelStatus.Draft
                new_pathology.save(new_pathology)

                PathologyPostion.deleteByPathologyId(new_pathology.id)
                for position in form.patientlocation:
                    new_position_id = PathologyPostion(new_pathology.id, position)
                    PathologyPostion.save(new_position_id)

                File.cleanDirtyFile(form.fileurl, new_pathology.id, FileType.Dicom)
                for fileurl in form.fileurl:
                    new_file = File.getFilebyId(int(fileurl))
                    new_file.pathologyId = new_pathology.id
                    File.save(new_file)

                new_diagnose.pathologyId = new_pathology.id
                Diagnose.save(new_diagnose)
                form_result.data = {'formId': 4}
            else:
                form_result = ResultStatus(FAILURE.status, "找不到上步的草稿")
        return jsonify(form_result.__dict__)
    elif (int(formid) == 4):
        form = DiagnoseForm4(request.form)
        form_result = form.validate()
        if form_result.status == rs.SUCCESS.status:
            if form.diagnoseId is not None:
                new_diagnose = Diagnose.getDiagnoseById(form.diagnoseId)
            else:
                new_diagnose = Diagnose.getNewDiagnoseByStatus(DiagnoseStatus.Draft, int(session['userId']))
            if(new_diagnose is not None):
                new_pathology = Pathology.getById(new_diagnose.pathologyId)
                if(new_pathology is not None):
                    new_pathology.caseHistory = form.illnessHistory
                    new_pathology.hospitalId = form.hospitalId
                    new_pathology.status = ModelStatus.Normal
                    Pathology.save(new_pathology)

                    File.cleanDirtyFile(form.fileurl, new_pathology.id, FileType.FileAboutDiagnose)
                    for fileurl in form.fileurl:
                        new_file = File.getFilebyId(int(fileurl))
                        new_file.pathologyId = new_pathology.id
                        File.save(new_file)

                    new_patient = Patient.get_patient_by_id(new_diagnose.patientId)
                    new_patient.status = PatientStatus.diagnose
                    new_diagnose.status = DiagnoseStatus.NeedPay
                    Diagnose.save(new_diagnose)
                    new_diagnoselog = DiagnoseLog(new_diagnose.uploadUserId, new_diagnose.id, DiagnoseLogAction.NewDiagnoseAction)
                    DiagnoseLog.save(db_session, new_diagnoselog)
                else:
                    form_result = ResultStatus(FAILURE.status, "找不到上步的草稿1")
            else:
                form_result = ResultStatus(FAILURE.status, "找不到上步的草稿2")
        form_result.data = {'isFinal': True}
        return jsonify(form_result.__dict__)
    else:
        return jsonify(ResultStatus(FAILURE.status, "错误的表单号").__dict__)