def patient_screening_history(patient_id): """Display a patient's past referrals and screening results, and a form to enter new screening results. """ check_patient_permission(patient_id) patient = Patient.query.get(patient_id) patient.update_stats() form = ScreeningResultForm() sliding_scale_options = SlidingScale.query.filter( SlidingScale.service_id == current_user.service_id) # Add the current organization's sliding scale options to the dropdown form.sliding_scale_id.choices = [ (str(option.id), option.scale_name) for option in sliding_scale_options ] or [("", "N/A")] if form.validate_on_submit(): screening_result = PatientScreeningResult() screening_result.service_id = current_user.service_id screening_result.eligible_yn = form.eligible_yn.data screening_result.sliding_scale_id = form.sliding_scale_id.data or None screening_result.notes = form.notes.data patient.screening_results.append(screening_result) # If the patient has an open referral to the current organization, mark # as completed open_referrals = [ r for r in patient.referrals if r.to_service_id == current_user.service.id and r.in_received_status() ] for referral in open_referrals: referral.mark_completed() db.session.commit() return render_template('patient_screening_history.html', patient=patient, form=form)
def patient_screening_history(patient_id): """Display a patient's past referrals and screening results, and a form to enter new screening results. """ check_patient_permission(patient_id) patient = Patient.query.get(patient_id) patient.update_stats() form = ScreeningResultForm() sliding_scale_options = SlidingScale.query.filter( SlidingScale.service_id == current_user.service_id ) # Add the current organization's sliding scale options to the dropdown form.sliding_scale_id.choices = [ (str(option.id), option.scale_name) for option in sliding_scale_options ] or [("", "N/A")] if form.validate_on_submit(): screening_result = PatientScreeningResult() screening_result.service_id = current_user.service_id screening_result.eligible_yn = form.eligible_yn.data screening_result.sliding_scale_id = form.sliding_scale_id.data or None screening_result.notes = form.notes.data patient.screening_results.append(screening_result) # If the patient has an open referral to the current organization, mark # as completed open_referrals = [ r for r in patient.referrals if r.to_service_id == current_user.service.id and r.in_received_status() ] for referral in open_referrals: referral.mark_completed() db.session.commit() return render_template('patient_screening_history.html', patient=patient, form=form)
def patient_overview(id): check_patient_permission(id) patient = Patient.query.get(id) # If this patient has a referral to the current organization in SENT status, # update it to RECEIVED sent_referrals = [ r for r in patient.referrals if r.to_service_id == current_user.service_id and r.in_sent_status() ] for referral in sent_referrals: referral.mark_received() if sent_referrals: db.session.commit() patient.update_stats() prescreen_results = calculate_pre_screen_results( fpl=patient.fpl_percentage, has_health_insurance=patient.insurance_status, is_eligible_for_medicaid="", service_ids=[current_user.service_id] ) form = ScreeningResultForm() sliding_scale_options = SlidingScale.query.filter( SlidingScale.service_id == current_user.service_id ) form.sliding_scale_id.choices = [ (str(option.id), option.scale_name) for option in sliding_scale_options ] or [("", "N/A")] if form.validate_on_submit(): screening_result = PatientScreeningResult() screening_result.service_id = current_user.service_id screening_result.eligible_yn = form.eligible_yn.data screening_result.sliding_scale_id = form.sliding_scale_id.data or None screening_result.notes = form.notes.data patient.screening_results.append(screening_result) # If the patient has an open referral to the current organization, mark # as completed open_referrals = [ r for r in patient.referrals if r.to_service_id == current_user.service.id and r.in_received_status() ] for referral in open_referrals: referral.mark_completed() db.session.commit() past_results = [r for r in patient.screening_results if r.service_id == current_user.service_id] new_form = ScreeningResultForm(formdata=None) new_form.sliding_scale_id.choices = [ (str(option.id), option.scale_name) for option in sliding_scale_options ] or [("", "N/A")] return render_template( 'patient_overview.html', patient=patient, form=new_form, service=prescreen_results[0], past_results=past_results )
def patient_overview(id): check_patient_permission(id) patient = Patient.query.get(id) patient.update_stats() prescreen_results = calculate_pre_screen_results( fpl=patient.fpl_percentage, has_health_insurance=patient.insurance_status, is_eligible_for_medicaid="", service_ids=[current_user.service_id] ) form = ScreeningResultForm() sliding_scale_options = SlidingScale.query.filter( SlidingScale.service_id == current_user.service_id ) form.sliding_scale_id.choices = [("", "N/A")] + [ (str(option.id), option.scale_name) for option in sliding_scale_options ] if form.validate_on_submit(): screening_result = PatientScreeningResult() screening_result.service_id = current_user.service_id screening_result.eligible_yn = form.eligible_yn.data screening_result.sliding_scale_id = form.sliding_scale_id.data or None screening_result.notes = form.notes.data patient.screening_results.append(screening_result) # If the patient has an open referral to the current organization, mark # as completed open_referrals = [ r for r in patient.referrals if r.to_service_id == current_user.service.id and r.in_sent_status() ] if open_referrals: screening_result.patient_referral_id = open_referrals[0].id for referral in open_referrals: referral.mark_completed() send_referral_closed_email( service=referral.to_service, patient=patient, from_app_user=referral.from_app_user, closed_user=current_user ) db.session.commit() past_results = [r for r in patient.screening_results if r.service_id == current_user.service_id] new_form = ScreeningResultForm(formdata=None) new_form.sliding_scale_id.choices = [("", "N/A")] + [ (str(option.id), option.scale_name) for option in sliding_scale_options ] # if there is no referral id, then this is a screening result being saved # that is not associated to a referral if request.form and 'referral_id' in request.form: referral_form = ReferralCommentForm() if referral_form.validate_on_submit() and referral_form.notes.data != '': referral = PatientReferral.query.get(referral_form.referral_id.data) referral_comment = PatientReferralComment() referral_comment.patient_referral_id = referral_form.referral_id.data referral_comment.notes = referral_form.notes.data db.session.add(referral_comment) db.session.commit() send_referral_comment_email( service=referral.to_service, patient=patient, referral=referral, commented_user=current_user ) else: referral_form = ReferralCommentForm(formdata=None) has_open_referral = bool( [r for r in patient.referrals if r.status == 'SENT' and r.to_service_id == current_user.service.id] ) return render_template( 'patient_overview.html', patient=patient, form=new_form, service=prescreen_results[0], past_results=past_results, referral_form=referral_form, has_open_referral=has_open_referral )
def patient_overview(id): check_patient_permission(id) patient = Patient.query.get(id) # If this patient has a referral to the current organization in SENT status, # update it to RECEIVED sent_referrals = [ r for r in patient.referrals if r.to_service_id == current_user.service_id and r.in_sent_status() ] for referral in sent_referrals: referral.mark_received() if sent_referrals: db.session.commit() patient.update_stats() prescreen_results = calculate_pre_screen_results( fpl=patient.fpl_percentage, has_health_insurance=patient.insurance_status, is_eligible_for_medicaid="", service_ids=[current_user.service_id]) form = ScreeningResultForm() sliding_scale_options = SlidingScale.query.filter( SlidingScale.service_id == current_user.service_id) form.sliding_scale_id.choices = [ (str(option.id), option.scale_name) for option in sliding_scale_options ] or [("", "N/A")] if form.validate_on_submit(): screening_result = PatientScreeningResult() screening_result.service_id = current_user.service_id screening_result.eligible_yn = form.eligible_yn.data screening_result.sliding_scale_id = form.sliding_scale_id.data or None screening_result.notes = form.notes.data patient.screening_results.append(screening_result) # If the patient has an open referral to the current organization, mark # as completed open_referrals = [ r for r in patient.referrals if r.to_service_id == current_user.service.id and r.in_received_status() ] for referral in open_referrals: referral.mark_completed() db.session.commit() past_results = [ r for r in patient.screening_results if r.service_id == current_user.service_id ] new_form = ScreeningResultForm(formdata=None) new_form.sliding_scale_id.choices = [ (str(option.id), option.scale_name) for option in sliding_scale_options ] or [("", "N/A")] return render_template('patient_overview.html', patient=patient, form=new_form, service=prescreen_results[0], past_results=past_results)
def patient_overview(id): check_patient_permission(id) patient = Patient.query.get(id) patient.update_stats() prescreen_results = calculate_pre_screen_results( fpl=patient.fpl_percentage, has_health_insurance=patient.insurance_status, is_eligible_for_medicaid="", service_ids=[current_user.service_id]) form = ScreeningResultForm() sliding_scale_options = SlidingScale.query.filter( SlidingScale.service_id == current_user.service_id) form.sliding_scale_id.choices = [("", "N/A")] + [ (str(option.id), option.scale_name) for option in sliding_scale_options ] if form.validate_on_submit(): screening_result = PatientScreeningResult() screening_result.service_id = current_user.service_id screening_result.eligible_yn = form.eligible_yn.data screening_result.sliding_scale_id = form.sliding_scale_id.data or None screening_result.notes = form.notes.data patient.screening_results.append(screening_result) # If the patient has an open referral to the current organization, mark # as completed open_referrals = [ r for r in patient.referrals if r.to_service_id == current_user.service.id and r.in_sent_status() ] if open_referrals: screening_result.patient_referral_id = open_referrals[0].id for referral in open_referrals: referral.mark_completed() send_referral_closed_email(service=referral.to_service, patient=patient, from_app_user=referral.from_app_user, closed_user=current_user) db.session.commit() past_results = [ r for r in patient.screening_results if r.service_id == current_user.service_id ] new_form = ScreeningResultForm(formdata=None) new_form.sliding_scale_id.choices = [("", "N/A")] + [ (str(option.id), option.scale_name) for option in sliding_scale_options ] # if there is no referral id, then this is a screening result being saved # that is not associated to a referral if request.form and 'referral_id' in request.form: referral_form = ReferralCommentForm() if referral_form.validate_on_submit( ) and referral_form.notes.data != '': referral = PatientReferral.query.get( referral_form.referral_id.data) referral_comment = PatientReferralComment() referral_comment.patient_referral_id = referral_form.referral_id.data referral_comment.notes = referral_form.notes.data db.session.add(referral_comment) db.session.commit() send_referral_comment_email(service=referral.to_service, patient=patient, referral=referral, commented_user=current_user) else: referral_form = ReferralCommentForm(formdata=None) has_open_referral = bool([ r for r in patient.referrals if r.status == 'SENT' and r.to_service_id == current_user.service.id ]) return render_template('patient_overview.html', patient=patient, form=new_form, service=prescreen_results[0], past_results=past_results, referral_form=referral_form, has_open_referral=has_open_referral)