Example #1
0
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,
        )
Example #2
0
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)
Example #3
0
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')
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
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)
Example #8
0
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,
        )
Example #9
0
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)
Example #10
0
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)
Example #11
0
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"'
        )