def signUp(): data = request.get_json() try: email = data["email"] name = data["name"] password = generate_password_hash(data["password"]) gender = data["gender"] phone = data["phone"] except: raise InvalidUsage("Algo deu errado na inscrição do usuário.", status_code=410) newUser = User(email=email, name=name, pw_hash=password, gender=gender, phone=phone) try: db.session.add(newUser) db.session.commit() except: raise InvalidUsage("Erro na persistência dos dados no banco.", status_code=410) return "Sucesso na inscrição do usuário."
def change_bed(id): params_dict = { 'patient_id': request.json.get('patient_id', None), 'sn': request.json.get('sn', None), 'bed_id': request.json.get('bed_id', None) } try: ChangeBedValidation().load(params_dict) except ValidationError as e: return jsonify({'status': 'fail', 'reason': str(e)}) bed = Bed.query.get_or_404(id) if 'sn' in request.json and request.json['sn']: sn = request.json['sn'] accuchek = Accuchek.query.filter(Accuchek.sn == sn).first() if accuchek is None: return jsonify({'status': 'fail', 'reason': '血糖仪不存在'}) may_bed = bed.query.filter(Bed.sn == sn).first() if may_bed: if may_bed.bed_id != bed.bed_id: return jsonify({'status': 'fail', 'reason': '血糖仪已经被用在其他床位上了'}) if 'patient_id' in request.json and request.json['patient_id']: patient_id = request.json['patient_id'] may_bed = bed.query.filter(Bed.patient_id == patient_id).first() if may_bed and may_bed.bed_id != bed.bed_id: return jsonify({'status': 'fail', 'reason': '病人已经被安置在了其他床位上'}) bed_history = BedHistory() for k in request.json: if hasattr(bed_history, k): setattr(bed_history, k, request.json[k]) date = datetime.datetime.now().date() time = str(datetime.datetime.now().time())[0:8] bed_history.bed_id = id bed_history.date = date bed_history.time = time try: db.session.add(bed_history) db.session.add(bed) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) for k in request.json: if hasattr(bed, k): setattr(bed, k, request.json[k]) try: db.session.add(bed) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'bed': bed.to_json(), 'status': 'success', 'reason': '数据已经被更改了' })
def delete_patients(id): patient = Patient.query.get_or_404(id) for data in patient.datas: try: db.session.delete(data) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) try: db.session.delete(patient) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({'status': 'success', 'reason': '数据已经被删除了'})
def delete_bed(id): bed = Bed.query.get_or_404(id) bedhistorys = bed.bed_historys.all() try: db.session.delete(bed) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) for bedhistory in bedhistorys: try: db.session.delete(bedhistory) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({'status': 'success', 'reason': '数据已经被删除了'}), 200
def getUser(id): try: user = User.query.filter_by(id=id).first() except: raise InvalidUsage("Erro ao procurar usuário.", status_code=410) userData = user.getProfile() return jsonify(userData)
def change_history(id): params_dict = { 'history_id': request.json.get('history_id', None), 'sn': request.json.get('sn', None), 'id_number': request.json.get('id_number', None), 'time': request.json.get('time', None), 'date': request.json.get('date', None), 'bed_id': request.json.get('bed_id', None), 'patient_id': request.json.get('patient_id', None) } try: ChangeBedHistoryValidation().load(params_dict) except ValidationError as e: return jsonify({'status': 'fail', 'reason': str(e)}) bed_history = BedHistory.query.get_or_404(id) for k in request.json: if hasattr(bed_history, k): setattr(bed_history, k, request.json[k]) if 'time' in request.json: time = request.json['time'] if len(time) < 8: time = time[0:5] + ':00' bed_history.time = time try: db.session.add(bed_history) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ "bed_history": bed_history.to_json(), "status": "success", "reason": "数据已经被更改了" })
def new_patient(): params_dict = { 'patient_id': request.json.get('patient_id', None), 'doctor_name': request.json.get('doctor_name', None), 'id_number': request.json.get('id_number', None), 'tel': request.json.get('tel', None), 'age': request.json.get('age', None), 'sex': request.json.get('sex', None), 'patient_name': request.json.get('patient_name', None) } try: PatientValidation().load(params_dict) except ValidationError as e: return jsonify({'status': 'fail', 'reason': str(e)}) id_number = request.json['id_number'] patient = Patient.query.filter(Patient.id_number == id_number).first() if patient: return jsonify({'status': 'fail', 'reason': '这个医疗卡号已经被使用了'}) patient = Patient.from_json(request.json) try: db.session.add(patient) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'patient': patient.to_json(), 'status': 'success', 'reason': '数据已经被添加' })
def change_patient(id): params_dict = { 'patient_id': request.json.get('patient_id', None), 'doctor_name': request.json.get('doctor_name', None), 'id_number': request.json.get('id_number', None), 'tel': request.json.get('tel', None), 'age': request.json.get('age', None), 'sex': request.json.get('sex', None), 'patient_name': request.json.get('patient_name', None) } try: ChangePatientValidation().load(params_dict) except ValidationError as e: return jsonify({'status': 'fail', 'reason': str(e)}) patient = Patient.query.get_or_404(id) if 'id_number' in request.json: id_number = request.json['id_number'] may_patient = Patient.query.filter( Patient.id_number == id_number).first() if may_patient and patient.id_number != id_number: if may_patient.patient_id != patient.patient_id: return jsonify({'status': 'fail', 'reason': '这个医疗卡号已经被使用了'}) for k in request.json: if hasattr(patient, k): setattr(patient, k, request.json[k]) try: db.session.add(patient) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'patient': patient.to_json(), 'status': 'success', 'reason': '数据已经更改' })
def logOut(): try: logout_user() return "Logout feito com sucesso." except: raise InvalidUsage("Não foi possível fazer o Logout.", status_code=401)
def new_history(): params_dict = { 'history_id': request.json.get('history_id', None), 'sn': request.json.get('sn', None), 'id_number': request.json.get('id_number', None), 'time': request.json.get('time', None), 'date': request.json.get('date', None), 'bed_id': request.json.get('bed_id', None), 'patient_id': request.json.get('patient_id', None) } try: BedHistoryValidation().load(params_dict) except ValidationError as e: return jsonify({'status': 'fail', 'reason': str(e)}) bed_history = BedHistory() for k in request.json: if hasattr(bed_history, k): setattr(bed_history, k, request.json[k]) date = datetime.datetime.now().date() time = str(datetime.datetime.now().time())[0:8] bed_history.date = date bed_history.time = time try: db.session.add(bed_history) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ "bed_history": bed_history.to_json(), "status": "success", "reason": "数据已经被添加" })
def delete_history(id): bed_history = BedHistory.query.get_or_404(id) try: db.session.delete(bed_history) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({"status": "success", "reason": "数据已经被删除了"})
def getSession(): try: user = current_user data = user.getProfile() except: raise InvalidUsage("Usuário não está logado.", status_code=401) return jsonify(data)
def getTeams(): path = "Teams.txt" try: f = open(path, "r", encoding="utf-8") except: raise InvalidUsage("Erro na aquisição dos termos.", status_code=410) return jsonify(f.readlines())
def delete_data(id): data = Data.query.get_or_404(id) try: db.session.delete(data) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'status': 'success', 'reason': '数据已经被删除' }), 200
def terms(): path = "Terms.txt" try: f = open(path, "r", encoding="utf-8") except: raise InvalidUsage("Erro na aquisição dos termos.", status_code=410) text = f.read() data = {"terms": current_user.terms, "text": text} return jsonify(data)
def login(): data = request.get_json() try: email = data["email"] password = data["password"] except: raise InvalidUsage("Informações faltando.", status_code=410) user = User.query.filter_by(email=email).first() if user is None: raise InvalidUsage("Usuário não encontrado.", status_code=410) if user.fb == True: raise InvalidUsage("Faça Login usando o botão do Facebook.", status_code=401) if check_password_hash(user.pw_hash, password): login_user(user) return jsonify(user.id) raise InvalidUsage("Usuário ou senha incorretos.", status_code=401)
def new_bed(): params_dict = { 'sn': request.json.get('sn', None), 'bed_id': request.json.get('bed_id', None), 'patient_id': request.json.get('patient_id', None) } try: BedValidation().load(params_dict) except ValidationError as e: return jsonify({'status': 'fail', 'reason': str(e)}) bed = Bed() bedhistory = BedHistory() if 'sn' in request.json: sn = request.json['sn'] maybed_sn = bed.query.filter(Bed.sn == sn).first() if maybed_sn: return jsonify({'status': 'fail', 'reason': '血糖仪已经被使用在了其他床位'}) if 'patient_id' in request.json: patient_id = request.json['patient_id'] mayed_id = bed.query.filter(Bed.patient_id == patient_id).first() if mayed_id: return jsonify({'status': 'fail', 'reason': '病人已经被安置在其他床位'}) else: bedhistory.patient_id = patient_id for k in request.json: if hasattr(bedhistory, k): setattr(bedhistory, k, request.json[k]) for k in request.json: if hasattr(bed, k): setattr(bed, k, request.json[k]) try: db.session.add(bed) db.session.commit() bedhistory.bed_id = bed.bed_id date = datetime.datetime.now().date() time = str(datetime.datetime.now().time())[0:8] bedhistory.date = date bedhistory.time = time db.session.add(bedhistory) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'bed': bed.to_json(), 'status': 'success', 'reason': '数据已经被添加' })
def delete_operator(id): operator = Operator.query.get_or_404(id) if current_user.tel != operator.tel: return jsonify({ 'status':'fail', 'reason':'没有权限' }), 403 try: db.session.delete(operator) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'status': 'success', 'reason': '数据已经被删除了' }), 200
def setData(): data = request.get_json() user = current_user print(data) for key in data: try: if user.setAttributes(key, data[key]): db.session.commit() continue except: raise InvalidUsage( "Erro ao alterar dados. Atributo inexistente ou inalterável.", status_code=410) userData = user.getProfile() return jsonify(userData)
def change_password(): operator_name =request.json['operator_name'] password = "".join(random.sample('1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',8)) operator = Operator.query.filter(Operator.operator_name == operator_name).first() if operator is None: return jsonify({ 'status':'fail', 'reason':'用户不存在' }) operator.password = password try: db.session.add(operator) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'status':'success', 'reason':'密码更改成功', 'new_password':password, 'operator':operator.to_json() })
def fbSignUp(): data = request.get_json() try: email = data["email"] name = data["name"] except: raise InvalidUsage("Informações faltando.", status_code=410) user = User.query.filter_by(email=email).first() if user is None: user = User(email=email, name=name, pw_hash="", phone="", gender="Não informado", fb=True) db.session.add(user) db.session.commit() login_user(user) return jsonify(user.id)
def change_sparedata_data(id): params_dict = { 'data_id': request.json.get('data_id', None), 'sn': request.json.get('sn', None), 'glucose': request.json.get('glucose', None), 'id_number': request.json.get('id_number', None), 'time': request.json.get('time', None), 'date': request.json.get('date', None), 'hidden': request.json.get('hidden', None), 'doctor_name': request.json.get('doctor_name', None), 'sex': request.json.get('sex', None), 'patient_name': request.json.get('patient_name', None), 'age': request.json.get('age', None), 'tel': request.json.get('tel', None) } try: ChangeSpareDataValidation().load(params_dict) except ValidationError as e: return jsonify({ 'status': 'fail', 'reason': str(e) }) data = SpareData.query.get_or_404(id) for k in request.json: if hasattr(data, k): setattr(data, k, request.json[k]) try: db.session.add(data) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'sparedata':data.to_full_json(), 'status':'success', 'reason':'备用机数据已经被修改了' })
def change_operator(id): params_dict = { 'operator_id': request.json.get('operator_id', None), 'operator_name': request.json.get('operator_name', None), 'password': request.json.get('password', None), 'tel': request.json.get('tel', None), 'hospital': request.json.get('hospital', None), 'lesion': request.json.get('lesion', None), 'email': request.json.get('email', None), 'office': request.json.get('office', None) } try: ChangeOperatorValidation().load(params_dict) except ValidationError as e: return jsonify({ 'status': 'fail', 'reason': str(e) }) operator = Operator.query.get_or_404(id) for k in request.json: if k == 'password_hash': continue if k == 'password': operator.password = request.json[k] if hasattr(operator, k): setattr(operator, k, request.json[k]) try: db.session.add(operator) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'operator': operator.to_json(), 'status': 'success', 'reason': '数据已经被更改了' }), 200
def new_data_artificial(): params_dict = { 'data_id': request.json.get('data_id', None), 'sn': request.json.get('sn', None), 'glucose': request.json.get('glucose', None), 'id_number': request.json.get('id_number', None), 'time': request.json.get('time', None), 'date': request.json.get('date', None), 'hidden': request.json.get('hidden', None), 'patient_id': request.json.get('patient_id', None), 'patient_name': request.json.get('patient_name', None), 'sex': request.json.get('sex', None), 'tel': request.json.get('tel', None), 'age': request.json.get('age', None), 'doctor_name': request.json.get('doctor_name', None) } try: DataArtificialValidation().load(params_dict) except ValidationError as e: return jsonify({ 'status': 'fail', 'reason': str(e) }) accuchek = Accuchek.query.filter(Accuchek.sn == request.json.get('sn')).first() if accuchek is None: return jsonify({ 'status': 'fail', 'reason': '血糖仪不存在' }) data = Data() for k in request.json: if hasattr(data, k): setattr(data, k, request.json[k]) if 'date' not in request.json: data.date = datetime.utcnow().date() if 'time' not in request.json: data.time = str(datetime.datetime.now().time())[0:8] if 'time' in request.json: time = request.json['time'] if len(time)<8: time = time[0:5]+':00' data.time = time patient_id = request.json['patient_id'] patient = Patient.query.filter(Patient.patient_id == patient_id).first() if patient is None: patient = Patient() for k in request.json: if hasattr(patient, k): setattr(patient, k, request.json[k]) try: db.session.add(patient) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) try: db.session.add(data) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'data': data.to_json_without_patient(), 'status': 'success', 'reason': '数据已经被添加了' })
def new_operator(): params_dict = { 'operator_id': request.json.get('operator_id', None), 'operator_name': request.json.get('operator_name', None), 'password': request.json.get('password', None), 'tel': request.json.get('tel', None), 'hospital': request.json.get('hospital', None), 'lesion': request.json.get('lesion', None), 'email': request.json.get('email', None), 'office':request.json.get('office', None) } try: OperatorValidation().load(params_dict) except ValidationError as e: return jsonify({ 'status':'fail', 'reason':str(e) }) if 'tel' not in request.json or request.json['tel'] is None: return jsonify({ 'status':'fail', 'reason':'需要有电话' }) if 'operator_name' not in request.json or request.json['operator_name'] is None: return jsonify({ 'status':'fail', 'reason':'需要有账户名' }) tel = request.json['tel'] operator_name = request.json['operator_name'] operator = Operator.query.filter(Operator.operator_name == operator_name).first() if operator: return jsonify({ 'status':'fail', 'reason':'用户名已经被使用了' }) operator = Operator.query.filter(Operator.tel == tel).first() if operator: return jsonify({ 'status':'fail', 'reason':'电话或者邮箱已经被使用了' }) operator = Operator.from_json(request.json) # req = requests.session() # try: # res = req.get('http://www.baidu.com') # if res.status_code != 200: # return jsonify({ # 'status': 'fail', # 'reason': 'the web does not connect to the outer net', # 'operators': [] # }) # except: # return jsonify({ # 'status': 'fail', # 'reason': 'the web does not connect to the outer net', # 'operators': [] # }) # msg = Message('Operator active', sender='*****@*****.**', recipients=['*****@*****.**']) # host = 'http://101.200.52.233:8080' # msg.body = 'the operator name is %s, the operator id is%id, the operator url is %s%s' % ( # operator.operator_name, operator.id, host, url_for('operator_blueprint.get_operator', id=operator.id)) # # mail.send(msg) # try: # mail.send(msg) # except: # return jsonify({ # 'status': 'fail', # 'reason': 'the mail has been posted failed', # 'operators': [] # }) try: db.session.add(operator) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'operator':operator.to_json(), 'status':'success', 'reason':'数据已经被添加' })
def new_data_auto(): params_dict = { 'data_id': request.json.get('data_id', None), 'sn': request.json.get('sn', None), 'patient_id': request.json.get('patient_id',None), 'glucose': request.json.get('glucose', None), 'id_number': request.json.get('id_number', None), 'time': request.json.get('time', None), 'date': request.json.get('date', None), 'hidden': request.json.get('hidden', None) } try: DataValidation().load(params_dict) except ValidationError as e: return jsonify({ 'status': 'fail', 'reason': str(e) }) if request.json['sn'] not in sn_numbers: data = Data() for k in request.json: if hasattr(data, k): setattr(data, k, request.json[k]) if 'date' not in request.json: data.date = datetime.utcnow().date() if 'time' not in request.json: data.time = str(datetime.datetime.now().time())[0:8] if 'time' in request.json: time = request.json['time'] if len(time) < 8: time = time[0:5] + ':00' data.time = time accuchek = Accuchek.query.filter(Accuchek.sn == request.json['sn']).first() if accuchek is None: return jsonify({ 'status':'fail', 'reason':'血糖仪不存在' }) bed = accuchek.bed if accuchek is not None else None patient = bed.patient if bed is not None else None id_number = patient.id_number if patient is not None else None patient_id = patient.patient_id if patient is not None else None data.id_number = id_number data.patient_id = patient_id try: db.session.add(data) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'patient':data.patient.to_json_patient(), 'data': data.to_json_without_patient(), 'status': 'success', 'reason': '数据已经被添加了' }) else: data = SpareData() for k in request.json: if hasattr(data, k): setattr(data, k, request.json[k]) if 'date' not in request.json: data.date = datetime.utcnow().date() if 'time' not in request.json: data.time = str(datetime.datetime.now().time())[0:8] if 'time' in request.json: time = request.json['time'] if len(time) < 8: time = time[0:5] + ':00' data.time = time try: db.session.add(data) db.session.commit() except IntegrityError as e: raise InvalidUsage(message=str(e), status_code=500) return jsonify({ 'data': data.to_full_json(), 'status': 'success', 'reason': '数据已经被添加了' })