def post(self): user = DaughterModel.objects(id=request.json['id']).first() return ({ 'accessToken': create_access_token(user.id), 'refreshToken': create_refresh_token(user.id) }, 200) if user and check_password_hash(user.pw, request.json['pw']) else abort(401)
def get(self, p_id): def todays_report(p, date): meal = MealMenu.objects(patient=p, date=date).first() schedule = Schedule.objects(patient=p, date=date).first() photo = RepresentativePhoto.objects(patient=p, date=date).first() condition = PhysicalCondition.objects(patient=p, date=date).first() additional = AdditionalDescription.objects(patient=p, date=date).first() return { 'date': str(date), 'meal': { 'breakfast': str(meal.breakfast).split('\n'), 'lunch': str(meal.lunch).split('\n'), 'dinner': str(meal.dinner).split('\n'), 'snack': meal.snack } if meal else {}, 'schedule': [{ 'time': table.start + ' ~ ' + table.end, 'work': table.work } for table in ScheduleTimeTables.objects( schedule=schedule)] if schedule else [], 'condition': { k: v for k, v in dict(condition.to_mongo()).items() if type(v) == bool and v is True } if condition else {}, 'photo': { 'photo_path': photo.image_path, 'comment': photo.comment } if photo else {}, 'additional': { 'description': additional.description } if additional else {} } daughter = DaughterModel.objects(id=get_jwt_identity()).first() patient = PatientModel.objects(id=p_id).first() current_date = datetime.datetime.utcnow().date() if not patient: abort(400) if patient.daughter.id != daughter.id: abort(403) return self.unicode_safe_json_dumps( { 'today': todays_report(patient, current_date), 'yesterday': todays_report(patient, current_date - datetime.timedelta(days=1)), '2days_ago': todays_report(patient, current_date - datetime.timedelta(days=2)) }, 200)
def delete(self): daughter = DaughterModel.objects(id=get_jwt_identity()).first() if not check_password_hash(daughter.pw, request.json['pw']): abort(403) daughter.delete() return Response('', 200)
def path(self): daughter = DaughterModel.objects(id=get_jwt_identity()).first() if not check_password_hash(daughter.pw, request.json['currentPw']): abort(403) daughter.update(pw=request.json['newPw']) return Response('', 201)
def get(self): """ 요양시설의 순위(overall 기준) API - 로그인이 되어 있지않다면 순위만 조회할 수 있다. - 로그인이 되어있다면 순위와 함께 자신이 이용하고 있는 시설의 정보도 조회할 수 있다. - 순위에 표시되는 시설의 정보는 다음과 같다. - 시설 이름, 시설 주소, 평가 총점, 칭호(있다면 열거함), 시설 전경(사진) """ def overlap_facility_data(facility_obj): return { 'facilityCode': facility_obj.facility_code, 'imagePath': facility_obj.image_path, 'name': facility_obj.name, 'address': facility_obj.address, 'overall': round(facility_obj.overall / facility_obj.evaluation_count, 1) if facility_obj.evaluation_count != 0 else None, 'medals': list(facility_obj.medals) if facility_obj.medals is not None else [] } if facility_obj else {} # 전체 병원의 순위(overall 기준) info = { 'facilityRanking': [ overlap_facility_data(facility) for facility in FacilityModel.objects.order_by('-overall') ] } # 인증된 사용자라면 사용자 본인이 이용하고 있는 시설의 정보 추가 if 'Authorization' in request.headers.keys(): print(request.headers['Authorization']) patients = PatientModel.objects(daughter=DaughterModel.objects( id=get_jwt_identity()).first()) cares = [patient.care_worker for patient in patients] facs = [ FacilityModel.objects( facility_code=care.facility_code).first() for care in cares ] info['myFacilities'] = [overlap_facility_data(fac) for fac in facs] # info['myFacilities'] = \ # [overlap_facility_data(facility) for facility in # [FacilityModel.objects(facility_code=my_fac.facility_code).first() for my_fac in # [c for c in DaughterModel.objects(id=get_jwt_identity()).first().care_workers]]] return self.unicode_safe_json_dumps(info, 200)
def get(self): """ 요양 보호사의 순위(overall 기준) API - 로그인이 되어 있지않다면 순위만 조회할 수 있다. - 로그인이 되어있다면 순위와 함께 자신의 노인을 담당하고 있는 요양보호사의 정보도 조회할 수 있다. - 순위에 표시되는 시설의 정보는 다음과 같다. - 이름, 소속(요양시설), 담당 노인 수, 경력, 총점 """ def overlap_care_worker_data(worker_obj): fac = FacilityModel.objects( facility_code=worker_obj.facility_code).first() return { 'careWorkerId': worker_obj.id, 'imagePath': worker_obj.image_path, 'name': worker_obj.name, 'workplace': fac.name if fac else None, 'patientInCharge': worker_obj.patient_in_charge, 'career': worker_obj.career, 'overall': round(worker_obj.overall / worker_obj.evaluation_count, 1) if worker_obj.evaluation_count != 0 else None } if worker_obj else {} info = { 'careWorkerRanking': [ overlap_care_worker_data(care_worker) for care_worker in CareWorkerModel.objects.order_by('-overall') ] } if 'Authorization' in request.headers.keys(): print(request.headers['Authorization']) patients = PatientModel.objects(daughter=DaughterModel.objects( id=get_jwt_identity()).first()) cares = [patient.care_worker for patient in patients] info['myCareWorkers'] = [ overlap_care_worker_data(care) for care in cares ] # info['myCareWorkers'] = [overlap_care_worker_data(care_worker) # for care_worker # in DaughterModel.objects(id=get_jwt_identity()).first().care_workers] return self.unicode_safe_json_dumps(info, 200)
def get(self): daughter = DaughterModel.objects(id=get_jwt_identity()).first() patients = PatientModel.objects(daughter=daughter) return self.unicode_safe_json_dumps( { 'name': daughter.name, 'age': daughter.age, 'patients': [{ 'name': str(patient.name), 'age': patient.age, 'gender': patient.gender } for patient in patients] if patients else [] }, 200)
def get(self): daughter = DaughterModel.objects(id=get_jwt_identity()).first() return [{ 'id': patient.id, 'name': patient.name, 'careId': patient.care_worker.id, 'careName': patient.care_worker.name, 'facilityCode': patient.care_worker.facility_code, 'facilityName': FacilityModel.objects( facility_code=patient.care_worker.facility_code).first().name } for patient in PatientModel.objects(daughter=daughter) if patient.care_worker], 200
def post(self): req = request.json id = req['id'] if DaughterModel.objects(id=id).first(): abort(409) new_user = { 'id': id, 'pw': generate_password_hash(req['pw']), 'phone_number': req['phoneNumber'], # 'certify_code': req['certifyCode'], 'name': req['name'], 'age': req['age'] } DaughterModel(**new_user).save() return Response('', 201)
def patch(self): accept = request.json['accept'] requester = DaughterModel.objects(id=request.json['id']).first() req = RequestModel.objects(req_id=request.json['reqId']).first() myself = CareWorkerModel.objects(id=get_jwt_identity()).first() if not requester or not req: abort(400) if accept: PatientModel(id=str(uuid.uuid4()), name=req.patient_name, age=req.patient_age, gender=req.patient_gender, daughter=requester, care_worker=myself).save() req.delete() return Response('', 201)