def setUp(self): log_in_provider(self.client, build_provider()) self.contact_method = ContactMethod.objects.create( name="Carrier Pidgeon") self.contact_result = ContactResult.objects.create( name="Reached on phone", patient_reached=True) self.pt = Patient.objects.create( first_name="Juggie", last_name="Brodeltein", middle_name="Bayer", phone='+49 178 236 5288', gender=Gender.objects.first(), address='Schulstrasse 9', city='Munich', state='BA', zip_code='63108', pcp_preferred_zip='63018', date_of_birth=datetime.date(1990, 1, 1), patient_comfortable_with_english=False, preferred_contact_method=self.contact_method, ) self.reftype = ReferralType.objects.create( name="Specialty", is_fqhc=False) self.refloc = ReferralLocation.objects.create( name='COH', address='Euclid Ave.') self.refloc.care_availiable.add(self.reftype) self.no_show_reason = NoShowReason.objects.create(name="Hella busy.")
def test_workup_signing(self): ''' Verify that singing is possible for attendings, and not for others. ''' wu_url = "workup-sign" self.wu.diagnosis_categories.add(models.DiagnosisType.objects.first()) self.wu.save() # Fresh workups should be unsigned self.assertFalse(self.wu.signed()) # Providers with can_attend == False should not be able to sign for nonattesting_role in ["Preclinical", "Clinical", "Coordinator"]: log_in_provider(self.client, build_provider([nonattesting_role])) response = self.client.get(reverse(wu_url, args=(self.wu.id, ))) self.assertRedirects(response, reverse('workup', args=(self.wu.id, ))) self.assertFalse(models.Workup.objects.get(pk=self.wu.id).signed()) # Providers able to attend should be able to sign. log_in_provider(self.client, build_provider(["Attending"])) response = self.client.get(reverse(wu_url, args=(self.wu.id, ))) self.assertRedirects( response, reverse('workup', args=(self.wu.id, )), ) # the self.wu has been updated, so we have to hit the db again. self.assertTrue(models.Workup.objects.get(pk=self.wu.id).signed())
def setUp(self): log_in_provider(self.client, build_provider()) self.pt = Patient.objects.create( first_name="Juggie", last_name="Brodeltein", middle_name="Bayer", phone='+49 178 236 5288', gender=Gender.objects.first(), address='Schulstrasse 9', city='Munich', state='BA', zip_code='63108', pcp_preferred_zip='63018', date_of_birth=datetime.date(1990, 1, 1), patient_comfortable_with_english=False, ) self.series_type = models.VaccineSeriesType.objects.create( name="Hepatitis A") self.series = models.VaccineSeries.objects.create( author=Provider.objects.first(), author_type=ProviderType.objects.first(), patient=self.pt, kind=self.series_type) self.vai = models.VaccineActionItem.objects.create( instruction=ActionInstruction.objects.create( instruction="Please call"), due_date=datetime.date.today(), comments="", author=Provider.objects.first(), author_type=ProviderType.objects.first(), patient=self.pt, vaccine=self.series)
def setUp(self): models.ClinicDate.objects.create( clinic_type=models.ClinicType.objects.first(), clinic_date=now().date()) self.provider = build_provider() log_in_provider(self.client, self.provider) self.wu = models.Workup.objects.create( clinic_day=models.ClinicDate.objects.first(), chief_complaint="SOB", diagnosis="MI", HPI="A", PMH_PSH="B", meds="C", allergies="D", fam_hx="E", soc_hx="F", ros="", pe="", A_and_P="", author=models.Provider.objects.first(), author_type=ProviderType.objects.first(), patient=Patient.objects.first())
def setUp(self): """ Provides the same context in all the tests """ log_in_provider(self.client, build_provider()) self.contact_method = ContactMethod.objects.create( name="Carrier Pidgeon") self.pt = Patient.objects.create( first_name="Juggie", last_name="Brodeltein", middle_name="Bayer", phone='+49 178 236 5288', gender=Gender.objects.first(), address='Schulstrasse 9', city='Munich', state='BA', zip_code='63108', pcp_preferred_zip='63018', date_of_birth=datetime.date(1990, 1, 1), patient_comfortable_with_english=False, preferred_contact_method=self.contact_method, ) reftype = ReferralType.objects.create( name="Specialty", is_fqhc=False) refloc = ReferralLocation.objects.create( name='COH', address='Euclid Ave.') refloc.care_availiable.add(reftype) self.referral = models.Referral.objects.create( comments="Needs his back checked", status=models.Referral.STATUS_PENDING, kind=reftype, author=Provider.objects.first(), author_type=ProviderType.objects.first(), patient=self.pt ) self.referral.location.add(refloc) self.followup_request = models.FollowupRequest.objects.create( referral=self.referral, contact_instructions="Call him", due_date=datetime.date(2018, 9, 1), author=Provider.objects.first(), author_type=ProviderType.objects.first(), patient=self.pt ) self.successful_res = ContactResult.objects.create( name="Got him", patient_reached=True) self.unsuccessful_res = ContactResult.objects.create( name="Disaster", patient_reached=False) # Need to update referral location self.referral_location = ReferralLocation.objects.create( name="Franklin's Back Adjustment", address="1435 Sillypants Drive") self.noapt_reason = NoAptReason.objects.create( name="better things to do") self.noshow_reason = NoShowReason.objects.create( name="Hella busy.")
def setUp(self): log_in_provider(self.client, build_provider()) models.IncomeRange.objects.create(name="Default") models.EducationLevel.objects.create(name="Default") models.WorkStatus.objects.create(name="Default") models.ResourceAccess.objects.create(name="Default") models.ChronicCondition.objects.create(name="Default") models.TransportationOption.objects.create(name="Default")
def setUp(self): log_in_provider(self.client, build_provider()) self.ai = ActionItem.objects.create( due_date=datetime.date(2020, 1, 1), author=Provider.objects.first(), instruction=ActionInstruction.objects.create( instruction="Follow up on labs"), comments="I hate tests", author_type=ProviderType.objects.all()[0], patient=Patient.objects.all()[0])
def setUp(self): self.all_roles_provider = build_provider() log_in_provider(self.client, self.all_roles_provider) self.apt = models.Appointment.objects.create( comment='test this stuff', clindate=now().date(), clintime=time(9, 0), appointment_type='PSYCH_NIGHT', author=Provider.objects.first(), author_type=ProviderType.objects.filter( signs_charts=False).first(), patient=Patient.objects.first())
def setUp(self): provider = build_provider() log_in_provider(self.client, provider) self.formdata = { 'title': 'Depression', 'text': 'so sad does testing work???', 'patient': Patient.objects.first(), 'author': provider, 'author_type': ProviderType.objects.first() } models.ClinicDate.objects.create( clinic_type=models.ClinicType.objects.first(), clinic_date=now().date())
def setUp(self): # build an attending and a clinical student self.attending = build_provider(roles=["Attending"], email='*****@*****.**') self.clinical_student = build_provider(roles=["Clinical"], email='*****@*****.**') log_in_provider(self.client, self.attending) self.wu_info = dict(chief_complaint="SOB", diagnosis="MI", HPI="A", PMH_PSH="B", meds="C", allergies="D", fam_hx="E", soc_hx="F", ros="", pe="", A_and_P="") # prepare a patient with an unsigned wu today, in addition to # what comes in in the fixture self.clinic_today = ClinicDate.objects.create( clinic_type=ClinicType.objects.first(), clinic_date=now().date()) self.pt2 = Patient.objects.create( first_name="Arthur", last_name="Miller", middle_name="", phone='+49 178 236 5288', gender=Gender.objects.first(), address='Schulstrasse 9', city='Munich', state='BA', zip_code='63108', pcp_preferred_zip='63018', date_of_birth=datetime.date(1994, 1, 22), patient_comfortable_with_english=False, preferred_contact_method=ContactMethod.objects.first(), ) self.wu2 = Workup.objects.create( clinic_day=self.clinic_today, author=self.clinical_student, author_type=self.clinical_student.clinical_roles.first(), patient=self.pt2, **self.wu_info)
def setUp(self): log_in_provider(self.client, build_provider()) self.pt = Patient.objects.create( first_name="Juggie", last_name="Brodeltein", middle_name="Bayer", phone='+49 178 236 5288', gender=Gender.objects.first(), address='Schulstrasse 9', city='Munich', state='BA', zip_code='63108', pcp_preferred_zip='63018', date_of_birth=datetime.date(1990, 1, 1), patient_comfortable_with_english=False, )
def setUp(self): self.provider = log_in_provider( self.client, build_provider()) models.ClinicType.objects.create(name="Basic Care Clinic") models.ClinicDate.objects.create( clinic_type=models.ClinicType.objects.first(), clinic_date=now().date())
def test_workup_pdf(self): """Verify that pdf download with the correct name """ wu_url = "workup-pdf" self.wu.diagnosis_categories.add(models.DiagnosisType.objects.first()) self.wu.save() for nonstaff_role in ProviderType.objects.filter(staff_view=False): log_in_provider(self.client, build_provider([nonstaff_role])) response = self.client.get(reverse(wu_url, args=(self.wu.id, ))) self.assertRedirects(response, reverse('workup', args=(self.wu.id, ))) for staff_role in ProviderType.objects.filter(staff_view=True): log_in_provider(self.client, build_provider([staff_role.pk])) response = self.client.get(reverse(wu_url, args=(self.wu.id, ))) assert response.status_code == 200
def test_workup_update(self): ''' Updating should be possible always for attendings, only without attestation for non-attendings. ''' # if the wu is unsigned, all can access update. for role in ["Preclinical", "Clinical", "Coordinator", "Attending"]: log_in_provider(self.client, build_provider([role])) response = self.client.get( reverse('workup-update', args=(self.wu.id, ))) self.assertEqual(response.status_code, 200) self.wu.sign(build_provider(["Attending"]).associated_user) self.wu.save() # nonattesting cannot access for role in ["Preclinical", "Clinical", "Coordinator"]: log_in_provider(self.client, build_provider([role])) response = self.client.get( reverse('workup-update', args=(self.wu.id, ))) self.assertRedirects(response, reverse('workup', args=(self.wu.id, ))) # attesting can log_in_provider(self.client, build_provider(["Attending"])) response = self.client.get( reverse('workup-update', args=(self.wu.id, ))) self.assertEqual(response.status_code, 200)
def test_workup_submit(self): """verify we can submit a valid workup as a signer and nonsigner""" for provider_type in ["Attending", "Clinical"]: provider = build_provider([provider_type]) log_in_provider(self.client, provider) pt_id = Patient.objects.first().pk wu_count = models.Workup.objects.all().count() wu_data = wu_dict(units=True) wu_data['diagnosis_categories'] = [ models.DiagnosisType.objects.first().pk ] wu_data['clinic_day'] = wu_data['clinic_day'].pk r = self.client.post(reverse('new-workup', args=(pt_id, )), data=wu_data) self.assertRedirects( r, reverse("core:patient-detail", args=(pt_id, ))) self.assertEqual(wu_count + 1, models.Workup.objects.all().count()) self.assertEqual(models.Workup.objects.last().signed(), provider.clinical_roles.first().signs_charts)
def test_progressnote_signing(self): """Verify that singing is possible for attendings and not for others. """ sign_url = "progress-note-sign" pn = models.ProgressNote.objects.create( title='Depression', text='so sad does testing work???', patient=Patient.objects.first(), author=models.Provider.objects.first(), author_type=ProviderType.objects.first()) # Fresh notes should be unsigned self.assertFalse(pn.signed()) # Providers with can_attend == False should not be able to sign for nonattesting_role in ["Preclinical", "Clinical", "Coordinator"]: log_in_provider(self.client, build_provider([nonattesting_role])) response = self.client.get(reverse(sign_url, args=(pn.id, ))) self.assertRedirects( response, reverse('progress-note-detail', args=(pn.id, ))) self.assertFalse( models.ProgressNote.objects.get(pk=pn.id).signed()) # Providers able to attend should be able to sign. log_in_provider(self.client, build_provider(["Attending"])) response = self.client.get(reverse(sign_url, args=(pn.id, ))) self.assertRedirects( response, reverse('progress-note-detail', args=(pn.id, )), ) # the pn has been updated, so we have to hit the db again. self.assertTrue(models.ProgressNote.objects.get(pk=pn.id).signed())
def setUp(self): self.provider = log_in_provider( self.client, build_provider())