def update_user_survey_by_id(_id): """ Update/replace existing survey by _id """ survey = Survey() content = request.get_json(silent=True, force=True) old = 'NO OLD SURVEY FOUND!' try: old = survey.getByID(_id).serialize() return jsonify(success=bool( survey.updateByUniqueID(_id, content['survey'], content['tags'], content['ongoing']))) except ValueError as error: raise MethodNotAllowed(error.message) except BadValueException as error: raise MethodNotAllowed(error.message) except SurveyNotFound as error: raise SurveyNotFound(_id) finally: add_to_audit_log( 'update_user_survey_by_id', survey_id=_id, new=content, old=old, )
def get_user_diary(): diary = Diary() try: return jsonify(diaries=[ob.serialize() for ob in diary.getAllByUniqueID(stack.top.uniqueID, utils.Time.Iso8601ToDatetime(request.args.get('from', None)), utils.Time.Iso8601ToDatetime(request.args.get('until', None)))]) except ValueError as error: raise MethodNotAllowed(error.message) except db.BadValueException as error: raise MethodNotAllowed(error.message)
def get_all_surveys(): """ Get all surveys for all users. """ survey = Survey() try: return jsonify(surveys=[ob.serialize() for ob in survey.getAll()]) except ValueError as error: raise MethodNotAllowed(error.message) except BadValueException as error: raise MethodNotAllowed(error.message) finally: add_to_audit_log('get_all_surveys')
def add_diary(): diary = Diary() consent = request.get_json(silent=True, force=True) try: validate(consent, inputs.diary) except ValidationError as error: raise MethodNotAllowed(error.message) try: return jsonify(success=bool(diary.addByUniqueID(stack.top.uniqueID, consent['diary']))) except ValueError as error: raise MethodNotAllowed(error.message) except db.BadValueException as error: raise MethodNotAllowed(error.message)
def add_survey(): survey = Survey() consent = request.get_json(silent=True, force=True) try: validate(consent, inputs.survey) except ValidationError as error: raise MethodNotAllowed(error.message) try: return jsonify(success=bool( survey.addByUniqueID(stack.top.uniqueID, consent['survey'], consent['tags'], consent['ongoing']))) except ValueError as error: raise MethodNotAllowed(error.message) except db.BadValueException as error: raise MethodNotAllowed(error.message)
def get_survey(): survey = Survey() try: return jsonify(surveys=[ ob.serialize() for ob in survey.getAllByUniqueID( stack.top.uniqueID, utils.Time.Iso8601ToDatetime(request.args.get('from', None)), utils.Time.Iso8601ToDatetime(request.args.get('until', None)), request.args.get('tags').split(',') if request.args. get('tags', None) is not None else None, utils.json.Json._getJSONBool(request.args.get('ongoing', None)), ) ]) except ValueError as error: raise MethodNotAllowed(error.message) except db.BadValueException as error: raise MethodNotAllowed(error.message)
def update_user_diary_by_id(_id): diary = Diary() consent = request.get_json(silent=True, force=True) try: diary.getByUniqueIDAndID(stack.top.uniqueID, _id).serialize() except: raise DiaryNotFound(_id) try: validate(consent, inputs.diary) except ValidationError as error: raise MethodNotAllowed(error.message) try: return jsonify(success=bool(diary.updateByUniqueIDAndID(stack.top.uniqueID, _id, consent['diary']))) except ValueError as error: raise MethodNotAllowed(error.message) except db.BadValueException as error: raise MethodNotAllowed(error.message)
def delete_survey_by_id(_id): """ Delete existing survey by _id """ survey = Survey() old = 'NO OLD SURVEY FOUND!' try: old = survey.getByID(_id).serialize() return jsonify(success=bool(survey.deleteByUniqueID(_id))) except ValueError as error: raise MethodNotAllowed(error.message) except BadValueException as error: raise MethodNotAllowed(error.message) except SurveyNotFound as error: raise SurveyNotFound(_id) finally: add_to_audit_log( 'delete_survey_by_id', survey_id=_id, old=old, )
def update_survey_by_id(_id): survey = Survey() consent = request.get_json(silent=True, force=True) try: survey.getByUniqueIDAndID(stack.top.uniqueID, _id).serialize() except: raise SurveyNotFound(_id) try: validate(consent, inputs.survey) except ValidationError as error: raise MethodNotAllowed(error.message) try: return jsonify(success=bool( survey.updateByUniqueIDAndID(stack.top.uniqueID, _id, consent['survey'], consent['tags'], consent['ongoing']))) except ValueError as error: raise MethodNotAllowed(error.message) except db.BadValueException as error: raise MethodNotAllowed(error.message)
def get_all_surveys_by_user(_uid): """ Get all surveys for a given user """ survey = Survey() try: return jsonify(surveys=[ ob.serialize() for ob in survey.getAllByUniqueID( _uid, utils.Time.Iso8601ToDatetime(request.args.get('from', None)), utils.Time.Iso8601ToDatetime(request.args.get('until', None)), (request.args.get('tags').split(',') if request.args. get('tags', None) is not None else None), utils.json.Json._getJSONBool(request.args.get('ongoing', None))) ]) except ValueError as error: raise MethodNotAllowed(error.message) except BadValueException as error: raise MethodNotAllowed(error.message) except UserNotFound as error: raise UserNotFound(_uid) finally: add_to_audit_log('get_all_surveys_by_user', user_id=_uid)
def set_user_consent(): user = User() consent = request.get_json(silent=True, force=True) if Role.relative in stack.top.roles: try: validate(consent, inputs.user_consent_relative) except ValidationError as error: raise MethodNotAllowed(error.message) try: return jsonify(success=bool( user.setRelativeConsentByUniqueID( uniqueID=stack.top.uniqueID, sex=consent['sex'], birthdate=utils.Time.DMYToDatetime(consent['birthdate']), signature=consent['signature']))) except ValueError as error: raise MethodNotAllowed(error.message) except db.BadValueException as error: raise MethodNotAllowed(error.message) if Role.patient in stack.top.roles: try: validate(consent, inputs.user_consent_patient) except ValidationError as error: raise MethodNotAllowed(error.message) try: return jsonify(success=bool( user.setPatientConsentByUniqueID( uniqueID=stack.top.uniqueID, sex=consent['sex'], birthdate=utils.Time.DMYToDatetime(consent['birthdate']), signature=consent['signature'], physician_contact_permitted=consent[ 'physician_contact_permitted'], medical_record_abstraction=consent[ 'medical_record_abstraction'], data_exchange_cohort=consent['data_exchange_cohort']))) except ValueError as error: raise MethodNotAllowed(error.message) except db.BadValueException as error: raise MethodNotAllowed(error.message) else: raise MethodNotAllowed( 'Bad value for field of type "roles". Reason: "Value cannot be null"' )