diff --git a/cpovc_forms/forms.py b/cpovc_forms/forms.py index b932f721f..817ced98f 100644 --- a/cpovc_forms/forms.py +++ b/cpovc_forms/forms.py @@ -8180,3 +8180,229 @@ class DREAMS_FORM(forms.Form): #'data-parsley-required': "true", #'data-parsley-group': 'group0', 'rows': '3'})) + + +#Pregnant Women_Adolescent +class PREGNANT_WOMEN_ADOLESCENT(forms.Form): + org_units_list = get_facility_list() + # HIV_STATUS_CHOICES=(('1', 'Skilled'), ('0', 'Unskilled')) + PWA_WA1_01 = forms.ChoiceField( + choices=(('contact', '1st Contact'), ('tri', '1st Trimester'),('3rd', '3rd Trimester'),('4th', 'Labour/Delivery'),), + widget=forms.RadioSelect( + # renderer=RadioCustomRenderer, + attrs={ + # 'data-parsley-errors-container': "#errorfield" + })) + + PMTCT_PWA6q = forms.DateField( + required=False, + widget=forms.widgets.DateInput( + # format="%m/%d/%Y", + attrs={'placeholder': _('Date'), + 'class': 'form-control', + 'name': 'PMTCT_PWA6q', + 'id': 'PMTCT_PWA6q', + 'autocomplete': "off", + # 'data-parsley-required': "true", + # 'data-parsley-group': 'group0' + })) + + PMTCT_PWA7q = forms.ChoiceField( + required=False, + choices=(('1', 'HIV_Positive'), ('0', 'HIV_Negative'),), + widget=forms.RadioSelect( + # renderer=RadioCustomRenderer, + attrs={ + # 'data-parsley-required': 'true', + # 'data-parsley-errors-container': "#errorfield" + })) + + PMTCT_PWA8q = forms.DateField( + required=False, + widget=forms.widgets.DateInput( + # format="%Y/%m/%d", + attrs={'placeholder': _('Date'), + 'class': 'form-control', + 'name': 'PMTCT_PWA8q', + 'id': 'PMTCT_PWA8q', + 'autocomplete': "off", + # 'data-parsley-required': "true", + # 'data-parsley-group': 'group0' + })) + + PMTCT_PWA9q = forms.ChoiceField( + required=False, + choices=(('1', 'HIV_Positive'), ('0', 'HIV_Negative'),), + widget=forms.RadioSelect( + # renderer=RadioCustomRenderer, + attrs={ + # 'data-parsley-required': 'true', + # 'data-parsley-errors-container': "#errorfield" + })) + + PMTCT_PWA10q = forms.DateField( + required=False, + widget=forms.widgets.DateInput( + # format="%Y/%m/%d", + attrs={'placeholder': _('Date'), + 'class': 'form-control', + 'name': 'PMTCT_PWA10q', + 'id': 'PMTCT_PWA10q', + 'autocomplete': "off", + # 'data-parsley-required': "true", + # 'data-parsley-group': 'group0' + })) + + PMTCT_PWA11q = forms.ChoiceField( + required=False, + choices=(('1', 'HIV_Positive'), ('0', 'HIV_Negative'),), + widget=forms.RadioSelect( + # renderer=RadioCustomRenderer, + attrs={ + # 'data-parsley-required': 'true', + # 'data-parsley-errors-container': "#errorfield" + })) + + PMTCT_PWA12q = forms.DateField( + required=False, + widget=forms.widgets.DateInput( + # format="%Y/%m/%d", + attrs={'placeholder': _('Date'), + 'class': 'form-control', + 'name': 'PMTCT_PWA12q', + 'id': 'PMTCT_PWA12q', + 'autocomplete': "off", + # 'data-parsley-required': "true", + # 'data-parsley-group': 'group0' + })) + + PMTCT_PWA13q = forms.ChoiceField( + required=False, + choices=(('1', 'HIV_Positive'), ('0', 'HIV_Negative'),), + widget=forms.RadioSelect( + # renderer=RadioCustomRenderer, + attrs={ + # 'data-parsley-required': 'true', + # 'data-parsley-errors-container': "#errorfield" + })) + + PMTCT_PWA1q = forms.DateField( + widget=forms.widgets.DateInput( + # format="%Y/%m/%d", + attrs={'placeholder': _('Date'), + 'class': 'form-control', + 'name': 'PMTCT_PWA1q', + 'id': 'PMTCT_PWA1q', + 'autocomplete': "off", + # 'data-parsley-required': "true", + # 'data-parsley-group': 'group0' + })) + + PMTCT_PWA2q = forms.DateField( + widget=forms.widgets.DateInput( + # format="%Y/%m/%d", + attrs={'placeholder': _('Date'), + 'class': 'form-control', + 'name': 'PMTCT_PWA2q', + 'id': 'PMTCT_PWA2q', + 'autocomplete': "off", + # 'data-parsley-required': "true", + # 'data-parsley-group': 'group0' + })) + + PMTCT_PWA3q = forms.DateField( + widget=forms.widgets.DateInput( + # format="%Y/%m/%d", + attrs={'placeholder': _('Date'), + 'class': 'form-control', + 'name': 'PMTCT_PWA3q', + 'id': 'PMTCT_PWA3q', + 'autocomplete': "off", + # 'data-parsley-required': "true", + # 'data-parsley-group': 'group0' + })) + + PMTCT_PWA4q = forms.DateField( + widget=forms.widgets.DateInput( + # format="%Y/%m/%d", + attrs={'placeholder': _('Date'), + 'class': 'form-control', + 'name': 'PMTCT_PWA4q', + 'id': 'PMTCT_PWA4q', + 'autocomplete': "off", + # 'data-parsley-required': "true", + # 'data-parsley-group': 'group0' + })) + + PMTCT_PWA5q = forms.ChoiceField( + choices=(('1', 'Skilled'), ('0', 'Unskilled'),), + widget=forms.RadioSelect( + # renderer=RadioCustomRenderer, + attrs={ + # 'data-parsley-errors-container': "#errorfield" + })) + + PMTCT_PWA14q = forms.CharField(widget=forms.TextInput( + attrs={'placeholder': _('Facility Name'), + 'class': 'form-control', + 'id': 'PMTCT_PWA14q', + 'readonly':'True', + # 'data-parsley-group': 'group0' + })) + + PMTCT_PWA15q = forms.CharField(widget=forms.TextInput( + attrs={'placeholder': _('CCC NO'), + 'class': 'form-control', + # 'data-parsley-required': "False", + 'data-parsley-type': "number", + # 'data-parsley-required': "False" + })) + + PMTCT_PWA16q = forms.CharField(widget=forms.TextInput( + attrs={'placeholder': _('VL result'), + 'class': 'form-control', + # 'data-parsley-required': "False", + 'data-parsley-type': "number", + # 'data-parsley-required': "False" + })) + + PMTCT_PWA17q = forms.DateField( + widget=forms.widgets.DateInput( + # format="%Y/%m/%d", + attrs={'placeholder': _('Date'), + 'class': 'form-control', + 'name': 'PMTCT_PWA17q', + 'id': 'PMTCT_PWA17q', + 'autocomplete': "off", + # 'data-parsley-required': "true", + # 'data-parsley-group': 'group0' + })) + + # PWA_WA1_15 = forms.ChoiceField( + # choices=YESNO_CHOICES, + # widget=forms.RadioSelect( + # # renderer=RadioCustomRenderer, + # attrs={ + # # 'data-parsley-errors-container': "#errorfield" + # })) + PMTCT_PWA18q = forms.ChoiceField( + choices=(('1', 'YES'), ('0', 'NO')), + widget=forms.RadioSelect( + # renderer=RadioCustomRenderer, + attrs={ + # 'data-parsley-required': 'true', + # 'data-parsley-errors-container': "#errorfield" + })) + + PMTCT_PWA19q = forms.DateField( + widget=forms.widgets.DateInput( + attrs={'placeholder': _('Date'), + 'class': 'form-control', + 'name': 'PMTCT_PWA19q', + 'id': 'PMTCT_PWA19q', + 'autocomplete': "off", + # 'data-parsley-required': "true", + # 'data-parsley-group': 'group0' + })) + + diff --git a/cpovc_forms/models.py b/cpovc_forms/models.py index 351f984e4..e6b5fd953 100644 --- a/cpovc_forms/models.py +++ b/cpovc_forms/models.py @@ -1495,13 +1495,13 @@ def __unicode__(self): class OvcCasePersons(models.Model): pid = models.UUIDField( primary_key=True, default=uuid.uuid1, editable=False) - # person_category = models.CharField(max_length=5, default='PERP') + person_category = models.CharField(max_length=5, default='PERP') person_relation = models.CharField(max_length=5, null=True) person_first_name = models.CharField(max_length=100, null=True) person_other_names = models.CharField(max_length=100, null=True) person_surname = models.CharField(max_length=100, null=True) person_type = models.CharField(max_length=5, default='PERP') - person_identifier = models.CharField(max_length=15, null=True) + # person_identifier = models.CharField(max_length=15, null=True) person_dob = models.DateField(null=True) person_sex = models.CharField( max_length=4, null=True, @@ -1512,12 +1512,12 @@ class OvcCasePersons(models.Model): class Meta: db_table = 'ovc_case_other_person' - verbose_name = 'Case Other Person' - verbose_name_plural = 'Case Other Persons' - - def __unicode__(self): - """To be returned by admin actions.""" - return '%s %s' % (self.person_first_name, self.person_surname) + # verbose_name = 'Case Other Person' + # verbose_name_plural = 'Case Other Persons' + # + # def __unicode__(self): + # """To be returned by admin actions.""" + # return '%s %s' % (self.person_first_name, self.person_surname) class OvcCaseInformation(models.Model): @@ -1561,3 +1561,149 @@ class Meta: def __unicode__(self): """To be returned by admin actions.""" return '%s' % (str(self.case)) + +#Pregnant Women/Adolesctent Monthly Tracker + +class OVCPregnantWomen(models.Model): + preg_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + person = models.ForeignKey(RegPerson, on_delete=models.CASCADE) + date_of_contact = models.DateField(default=timezone.now, blank=True, null=True) + date_test_done2a = models.DateField(blank=True, null=True) + test_result2b=models.BooleanField(null=True) + date_test_done3a = models.DateField(blank=True, null=True) + test_result3b=models.BooleanField(null=True) + date_test_done4a = models.DateField(blank=True, null=True) + test_result4b=models.BooleanField(null=True) + date_test_done5a = models.DateField(blank=True, null=True) + test_result5b=models.BooleanField(null=True) + anc_date1 = models.DateField(default=timezone.now, blank=True, null=True) + anc_date2 = models.DateField(default=timezone.now, blank=True, null=True) + anc_date3 = models.DateField(default=timezone.now, blank=True, null=True) + anc_date4 = models.DateField(default=timezone.now, blank=True, null=True) + mode_of_delivery= models.BooleanField(null=True) + facility_code = models.CharField(max_length=10, null=True) + ccc_no= models.IntegerField(null=True) + vl_result= models.IntegerField(null=True) + vl_test_date=models.DateField(default=timezone.now, blank=True, null=True) ###date new 1 + disclosure_done= models.BooleanField(null=True) + event = models.ForeignKey(OVCCareEvents, on_delete=models.CASCADE) + is_void = models.BooleanField(default=False) + date_of_event = models.DateField(default=timezone.now, blank=True, null=True)### date + timestamp_created = models.DateTimeField(auto_now_add=True) + timestamp_updated = models.DateTimeField(auto_now=True) + + class Meta: + db_table = 'ovc_pregnant_women' + def __unicode__(self): + return str(self.tracker_id) + +#PMTCT EVENTS +class PMTCTEvents(models.Model): + event = models.UUIDField(primary_key=True, default=uuid.uuid1, editable=False) + event_type_id = models.CharField(max_length=10) + event_counter = models.IntegerField(default=0) + event_score = models.IntegerField(null=True, default=0) + date_of_event = models.DateField(default=timezone.now) + created_by = models.IntegerField(null=True, default=404) + timestamp_created = models.DateTimeField(default=timezone.now) + is_void = models.BooleanField(default=False) + sync_id = models.UUIDField(default=uuid.uuid1, editable=False) + app_user = models.ForeignKey(AppUser, default=1, on_delete=models.CASCADE) + person = models.ForeignKey(RegPerson, null=True, on_delete=models.CASCADE) + + class Meta: + db_table = 'pmtct_events' + + +class OVCPreventiveEvents(models.Model): + event = models.UUIDField(primary_key=True, default=uuid.uuid1, editable=False) + event_type_id = models.CharField(max_length=10) + event_counter = models.IntegerField(default=0) + event_score = models.IntegerField(null=True, default=0) + date_of_event = models.DateField(default=timezone.now) + date_of_previous_event = models.DateTimeField(null=True) + created_by = models.IntegerField(null=True, default=404) + timestamp_created = models.DateTimeField(default=timezone.now) + is_void = models.BooleanField(default=False) + sync_id = models.UUIDField(default=uuid.uuid1, editable=False) + app_user = models.ForeignKey(AppUser, default=1, on_delete=models.CASCADE) + person = models.ForeignKey(RegPerson, null=True, on_delete=models.CASCADE) + house_hold = models.ForeignKey(OVCHouseHold, null=True, on_delete=models.CASCADE) + + class Meta: + db_table = 'ovc_preventive_events' + +# PMTCTQuestions +class PMTCTQuestions(models.Model): + question_id = models.UUIDField(primary_key=True, default=uuid.uuid1, editable=False) + code = models.CharField(max_length=20) + question = models.CharField(max_length=55) + domain = models.CharField(max_length=10) + question_text = models.CharField(max_length=255) + question_type = models.CharField(max_length=20, null=False) + form = models.ForeignKey(OVCCareForms, on_delete=models.CASCADE) + is_void = models.BooleanField(default=False) + timestamp_created = models.DateTimeField(auto_now_add=True) + timestamp_updated = models.DateTimeField(auto_now=True) + + # def __unicode__(self): + # return self.code + + class Meta: + db_table = 'pmtct_questions' + + +class PMTCTPregnantWA(models.Model): + pmtct_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + person = models.ForeignKey(RegPerson, on_delete=models.CASCADE) + caregiver = models.ForeignKey(RegPerson, on_delete=models.CASCADE, related_name='pmtct_caregiver') + question_code = models.CharField(max_length=10, null=False, blank=True) + question = models.ForeignKey(PMTCTQuestions, on_delete=models.CASCADE) + answer = models.CharField(max_length=15) + event = models.ForeignKey(PMTCTEvents, on_delete=models.CASCADE) + + timestamp_created = models.DateTimeField(default=timezone.now) + is_void = models.BooleanField(default=False) + timestamp_updated = models.DateTimeField(auto_now=True) + + def __unicode__(self): + return self.answer + + def save(self, force_insert=False, force_update=False, using=None, update_fields=None): + self.question_code = self.question.code + super(PMTCTPregnantWA, self).save(force_insert, force_update, using, update_fields) + + class Meta: + db_table = 'pmtct_pregnant_Women_Adolescents' + + def __unicode__(self): + return str(self.pmtct_id) + + +class pmtct_registration(models.Model): + pmtct_id = models.UUIDField(primary_key=True, default=uuid.uuid1, editable=False) + person = models.ForeignKey(RegPerson, on_delete=models.CASCADE) + school_id = models.ForeignKey(SchoolList, on_delete=models.CASCADE) + child_cbo = models.ForeignKey(RegOrgUnit, on_delete=models.CASCADE) + caretaker = models.ForeignKey(RegPerson, null=True, related_name='caretaker', on_delete=models.CASCADE) + caretaker_contact = models.CharField(max_length=15) + facility = models.CharField(max_length=15) + ccc_no = models.CharField(max_length=15) + chv = models.ForeignKey(RegPerson, related_name='pmtct_chv', null=True, on_delete=models.CASCADE) + registration_date = models.DateField(default=timezone.now, null=True) + is_active = models.BooleanField(default=True) + exit_reason = models.CharField(max_length=4, null=True) + exit_date = models.DateField(default=timezone.now, null=True) + event = models.ForeignKey(OVCPreventiveEvents, on_delete=models.CASCADE) + pmtct_grouping_id = models.UUIDField(default=uuid.uuid1, editable=False) + timestamp_created = models.DateTimeField(default=timezone.now) + timestamp_updated = models.DateTimeField(default=timezone.now) + is_void = models.BooleanField(default=False) + sync_id = models.UUIDField(default=uuid.uuid1, editable=False) + + + class Meta: + db_table = 'pmtct_registration' + + def __unicode__(self): + return str(self.pmtct_id) diff --git a/cpovc_forms/urls.py b/cpovc_forms/urls.py index 2d997ab3a..2a86c3ed5 100644 --- a/cpovc_forms/urls.py +++ b/cpovc_forms/urls.py @@ -177,10 +177,14 @@ # Dreams SerivceUptake Form re_path('dreamsform/new/(?P\d+)/', views.new_dreamsform, name='new_dreamsform'), - #edit hivriskscreening tool - path('hivriskscreeningtool/edit/(?P\W+)/', views.edit_hivriskscreeningtool, name='hivriskscreeningtool'), + #Pregnant Women Adolescent + path('pregnantwomen/new/(?P\d+)/', views.new_pregnantwomen, name='new_pregnantwomen'), + + #Edit Pregant women/adolescent form + path('pregnantwomen/edit/(?P\W+)/', views.edit_pregnantwomen, name='pregnantwomen'), + + # Delete pregnantWomen + path('delete_pregnantwomen/(?P)/', views.delete_pregnantwomen, name='delete_pregnantwomen'), - #Delete hivscreening tool - path('delete_hivriskscreening/(?P)/', views.delete_hivriskscreening, name='delete_hivriskscreening'), ] diff --git a/cpovc_forms/views.py b/cpovc_forms/views.py index de6deed05..334b2d26f 100644 --- a/cpovc_forms/views.py +++ b/cpovc_forms/views.py @@ -23,7 +23,7 @@ OVC_CaseEventForm, DocumentsManager, OVCSchoolForm, OVCBursaryForm, BackgroundDetailsForm, OVC_FTFCForm, OVCCsiForm, OVCF1AForm, OVCHHVAForm, Wellbeing, GOKBursaryForm, CparaAssessment, CparaMonitoring, CasePlanTemplate, WellbeingAdolescentForm, HIV_SCREENING_FORM, - HIV_MANAGEMENT_ARV_THERAPY_FORM, HIV_MANAGEMENT_VISITATION_FORM, DREAMS_FORM) + HIV_MANAGEMENT_ARV_THERAPY_FORM, HIV_MANAGEMENT_VISITATION_FORM, DREAMS_FORM, PREGNANT_WOMEN_ADOLESCENT) from .models import ( OVCEconomicStatus, OVCFamilyStatus, OVCReferral, OVCHobbies, OVCFriends, @@ -34,9 +34,9 @@ OVCAdverseEventsFollowUp, OVCAdverseEventsOtherFollowUp, OVCCaseEventClosure, OVCCaseGeo, OVCMedicalSubconditions, OVCBursary, OVCFamilyCare, OVCCaseEventSummon, OVCCareEvents, OVCCarePriority, - OVCCareServices, OVCCareEAV, OVCCareAssessment, OVCGokBursary, OVCCareWellbeing, OVCCareCpara, OVCCareQuestions, - OVCCareForms, OVCExplanations, OVCCareF1B, - OVCCareBenchmarkScore, OVCMonitoring, OVCHouseholdDemographics, OVCHivStatus, OVCHIVManagement, OVCHIVRiskScreening) + OVCCareServices, OVCCareEAV, OVCCareAssessment, OVCGokBursary, OVCCareWellbeing, OVCCareCpara, OVCCareQuestions, OVCExplanations, OVCCareF1B, + OVCCareBenchmarkScore, OVCMonitoring, OVCHouseholdDemographics, OVCHivStatus, OVCHIVManagement, OVCHIVRiskScreening, + OVCPregnantWomen, PMTCTEvents, OVCPreventiveEvents,PMTCTPregnantWA, pmtct_registration, PMTCTQuestions) from cpovc_ovc.models import OVCRegistration, OVCHHMembers, OVCHealth, OVCHouseHold, OVCFacility from cpovc_main.functions import ( get_list_of_org_units, get_dict, get_vgeo_list, get_vorg_list, @@ -10146,3 +10146,230 @@ def new_dreamsform(request, id): 'vals': vals}) + +def new_pregnantwomen(request, id): + if request.method == 'POST': + data = request.POST + import pdb + person = RegPerson.objects.get(pk=int(id)) + appuser = request.user.id + event_type_id = 'WBGA' + date_of_event = timezone.now() + + """ Save Wellbeing-event """ + + # get event counter + event_counter = PMTCTEvents.objects.filter( + event_type_id=event_type_id, person=id, is_void=False).count() + # save event + # try: + pmtctevent = PMTCTEvents.objects.create( + event_type_id=event_type_id, + event_counter=event_counter, + event_score=0, + date_of_event=date_of_event, + created_by=appuser, + person=person, + # house_hold=house_holds + ) + # except Exception as e: + # error_message = f'Pmtct Events failed: {e}' + + # get questions for adolescent + questions = PMTCTQuestions.objects.filter(code__startswith='PWA', is_void=False) + care_giver = RegPerson.objects.get(id=OVCRegistration.objects.get(person=person).caretaker_id) + for question in questions: + question_code_q=question.code + question_ansr_a=data.get(question.question) + if question_ansr_a is None: + question_ansr_a = 'No' + try: + PMTCTPregnantWA.objects.create( + person=RegPerson.objects.get(pk=int(id)), + caregiver=care_giver, + question=question, + question_code=question_code_q, + answer=question_ansr_a, + timestamp_created=date_of_event, + event=pmtctevent, + ) + except Exception as e: + error_message = f'PMTCT Pregnant table failed: {e}' + print(error_message) + + msg = ' saved successful' + messages.add_message(request, messages.INFO, msg) + url = reverse('ovc_view', kwargs={'id': id}) + return HttpResponseRedirect(url) + + # Get request Method + try: + ovcreg = get_object_or_404(OVCRegistration, person_id=id, is_void=False) + caretaker_id = ovcreg.caretaker_id if ovcreg else None + ovchh = get_object_or_404(OVCHouseHold, head_person=caretaker_id, is_void=False) + household_id = ovchh.id if ovchh else None + except Exception as e: + print(str(e)) + msg = 'Error getting household identifier: (%s)' % (str(e)) + messages.add_message(request, messages.ERROR, msg) + return HttpResponseRedirect(reverse(forms_registry)) + # get child data + init_data = RegPerson.objects.filter(pk=id) + check_fields = ['sex_id', 'relationship_type_id'] + vals = get_dict(field_name=check_fields) + ovc_id = int(id) + import pdb + + event=PMTCTEvents.objects.filter(person_id=id).values_list('event') + data_test = PMTCTPregnantWA.objects.filter(event_id__in=event, is_void=False).values('event_id').distinct() + data_get = [] + data_dict=[] + for b in range(len(data_test)): + data_get.append([]) + for n in range(len(data_test)): + data_array = PMTCTPregnantWA.objects.filter(event_id__in=event, is_void=False, event_id=data_test[b]['event_id']) + for one_pwa in data_array: + data_get[b].append((one_pwa.question_code, one_pwa.answer)) + data_dict.append(dict(data_get[b])) + # pdb.set_trace() + # + # all_events = PMTCTEvents.objects.filter(person_id=id, is_void=False, event_type_id='WBGA') + # all_pmt = PMTCTPregnantWA.objects.filter(person_id=id) + # + # counter = 0 + # all_events_len = len(all_events) - 1 + # data_get = [] + # event_get = [] + # + # while counter < all_events_len: + # + # # print(f'{counter} >>>>{all_events[counter]}') + # count = 0 + # for one_all_pmt in all_events: + # if one_all_pmt.event.pk == all_events[counter].event: + # event_get.append(one_all_pmt) + # # event_get[count] = one_all_pmt + # count += 1 + # print(count) + # + # # data_get[counter] = event_get + # print(counter) + # data_get.append(event_get) + # counter += 1 + # print(data_get) + # pdb.set_trace() + + form = PREGNANT_WOMEN_ADOLESCENT() + context = { + 'form': form, + 'init_data': init_data, + 'vals': vals, + 'person': id, + # 'data_get':data_get + 'data_get':data_dict, + # 'event_id':event + } + return render(request, 'forms/new_pregnantwomen.html', context) + +def edit_pregnantwomen(request, id): + + if request.method == 'POST': + import pdb + data = request.POST + + update_time = timezone.now() + ovc_event = PMTCTEvents.objects.filter(event=id) + pmtct_saved = PMTCTPregnantWA.objects.filter(event=id) + + + # Update pmtct Table + try: + for question in pmtct_saved: + answer = data.get(question.question_code) + if answer is None: + answer = 'No' + elif answer == 'AYES': + answer = True + elif answer == 'ANNO': + answer = False + else: + answer = 'No' + PMTCTPregnantWA.objects.filter(event_id=id).update( + question=question, + answer=answer, + # date_of_event=convert_date(date_of_event, fmt='%Y-%m-%d'), + timestamp_updated=update_time, + event=id + ) + form = PREGNANT_WOMEN_ADOLESCENT() + return render(request, 'forms/edit_pregnantwomen.html', + { + 'form': form, + # 'init_data': init_data, + # 'vals': vals, + # 'resultsets': resultsets, + # 'resultsets2': resultsets2 + }) + except Exception as e: + print(f'The table pmtct didnt update: {e} ') + +def delete_pregnantwomen(request, id, btn_event_pk): + import uuid + new_tracker = PMTCTPregnantWA.objects.filter(event_id__in=uuid.UUID("id").hex) + new_tracker1 = PMTCTPregnantWA.objects.filter(event_id=uuid.UUID(btn_event_pk).hex) + new_tracker.update(is_void=True) + return redirect('new_pregnantwomen', id=new_tracker1.person_id) +# def delete_pregnantwomen(request, id, btn_event_pk): +# jsonCPARAData = [] +# msg = '' +# try: +# event_id = uuid.UUID(btn_event_pk) +# d_event = PMTCTEvents.objects.filter(pk=event_id)[0].timestamp_created +# delta = get_days_difference(d_event) +# if delta < 90: +# event = PMTCTEvents.objects.filter(pk=event_id) +# if event: +# # delete cpara +# ovcpara = PMTCTPregnantWA.objects.filter(event=event) +# if ovcpara: +# ovcpara.delete() +# msg = "Deleted successfully" +# # delete event +# event.delete() +# msg = "Deleted successfully" +# else: +# msg = "Can't delete after 90 days" +# except Exception as e: +# msg = 'An error occured : %s' % str(e) +# print(str(e)) +# jsonCPARAData.append({'msg': msg}) +# return JsonResponse(jsonCPARAData, +# content_type='application/json', +# safe=False) +# def delete_cpara(request, id, btn_event_pk): +# jsonPMTCTData = [] +# msg = '' +# try: +# event_id = uuid.UUID(btn_event_pk) +# d_event = OVCCareEvents.objects.filter(pk=event_id)[0].timestamp_created +# delta = get_days_difference(d_event) +# if delta < 90: +# event = OVCCareEvents.objects.filter(pk=event_id) +# if event: +# # delete cpara +# pmtct = PMTCTPregnantWA.objects.filter(event=event) +# if pmtct: +# pmtct.delete() +# msg = "Deleted successfully" +# # delete event +# event.delete() +# msg = "Deleted successfully" +# else: +# msg = "Can't delete after 90 days" +# except Exception as e: +# msg = 'An error occured : %s' % str(e) +# print(str(e)) +# jsonPMTCTData.append({'msg': msg}) +# return JsonResponse(jsonCPARAData, +# content_type='application/json', +# safe=False) diff --git a/templates/forms/edit_pregnantwomen.html b/templates/forms/edit_pregnantwomen.html new file mode 100644 index 000000000..aa159ca49 --- /dev/null +++ b/templates/forms/edit_pregnantwomen.html @@ -0,0 +1,494 @@ +{% extends 'base.html' %} +{% load app_filters %} +{% load static %} +{% block page_title %} Household Vulnerability Assessment {% endblock %} +{% block style_code %} + + + + + + + +{% endblock %} + +{% block javascript_code%} +{% endblock javascript_code%} + +{% block primary %} + + + + + + + +{% for data in init_data %} + +

Forms Pregnant Women/Adolescent Monthly Tracker {{ data.first_name }} {{ data.surname }} | {{ data.sex_id|gen_value:vals }} | {% if data.date_of_birth|gen_age == 0 %} + UNDER 1 YEAR + {% else %} + {{ data.date_of_birth|gen_age }} YRS + {% endif %}

+ +{% endfor %} + + + + + +
+ +
+ +
+
+
+ + +
+

Pregnant Women/Adolescent Monthly Tracker

+
+
+
+
+ {% csrf_token %} +
+
    +
  1. + Pregnant Woman Details +
  2. +
  3. + Clinic Attendance & mode of delivery +
  4. + +
  5. + HIV Pos Pregnant Women/Adolescents +
  6. +
+ + + {{ form.person }} + {{ form.household_id }} + + + +
+
+ + +
+ +
+ {{ form.PMTCT_PWA19q }} +
+
+ +
+ +
+ {{ form.PWA_WA1_01 }} + +
+
+ +
+
+ +
+ {{ form.PMTCT_PWA6q }} +
+
+
+ +
+ +
+ {{ form.PMTCT_PWA7q }} +
+
+
+
+ +
+ +
+ {{ form.PMTCT_PWA8q }} +{#
#} +
+
+ +
+ +
+ {{ form.PMTCT_PWA9q }} +
+
+
+
+
+ +
+ {{ form.PMTCT_PWA10q }} +{#
#} +
+
+ +
+ +
+ {{ form.PMTCT_PWA11q }} +
+
+
+
+
+ +
+ {{ form.PMTCT_PWA12q }} +{#
#} +
+
+ +
+ +
+ {{ form.PMTCT_PWA13q }} +
+
+
+ +
+
+ + + +
+
+ +
+ +
+ {{ form.PMTCT_PWA1q }} +
+
+ +
+ +
+ {{ form.PMTCT_PWA2q }} +
+{#
#} +
+
+ +
+ +
+ {{ form.PMTCT_PWA3q }} +
+
+ +
+ +
+ {{ form.PMTCT_PWA4q }} +
+
+ +
+ +
+ {{ form.PMTCT_PWA5q }} +
+
+ +
+
+ + + +
+
+
+ +
+ {{ form.PMTCT_PWA14q }} +{# #} +{# #} +
+ +
+ +
+ +
+ {{ form.PMTCT_PWA15q }} +{#
#} +
+
+ +
+ +
+ {{ form.PMTCT_PWA16q }} +{#
#} +
+
+ +
+ +
+ {{ form.PMTCT_PWA17q }} +{#
#} +
+
+ +
+ +
+ {{ form.PMTCT_PWA18q }} +{#
#} +
+
+
+
+ +
+
+
+
+ +
+ + Cancel +
+
+
+
Revised: 1st July 2019
+ + +
+
+ + +
+ + +
+
+ +
+ +
+
+
+ + +
+

Evaluation Events List

+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% if pwa_women %} + + {% for one_screening_data in pwa_women %} + + + + + + + + + + + + + + + + + + + + + +{# #} + + {% endfor %} + {% else %} +
+

No data available

+
+ {% endif %} +
Pregnant Woman DetailsClinic Attendance & mode of deliveryHIV Pos Pregnant Women/Adolescents
Q 1Q 2AQ 2BQ 3AQ 3BQ 4AQ 4BQ 5AQ 5BQ 1Q 2Q 3Q 4Q 5Q 1Q 2Q 3Q 4Q 5 ACTIONS
{{one_screening_data.date_of_contact}}{{one_screening_data.date_test_done2a}}{{one_screening_data.test_result2b}}{{one_screening_data.date_test_done3a}}{{one_screening_data.test_result3b}}{{one_screening_data.date_test_done4a}}{{one_screening_data.test_result4b}}{{one_screening_data.date_test_done5a}}{{one_screening_data.test_result5b}}{{one_screening_data.anc_date1}}{{one_screening_data.anc_date2}}{{one_screening_data.anc_date3}}{{one_screening_data.anc_date4}}{{one_screening_data.mode_of_delivery}}{{one_screening_data.facility_code}}{{one_screening_data.ccc_no}}{{one_screening_data.vl_result}}{{one_screening_data.vl_test_date}}{{one_screening_data.disclosure_done}}#} +{# #} +{# #} +{#
+
+

+
+
+ +
+ +
+ +
+ +{# end row#} + +{% endblock %} + +{% block lazy_javascript_code %} + + + + + + + + + + + +{% endblock %} \ No newline at end of file diff --git a/templates/forms/new_pregnantwomen.html b/templates/forms/new_pregnantwomen.html new file mode 100644 index 000000000..1da91e30f --- /dev/null +++ b/templates/forms/new_pregnantwomen.html @@ -0,0 +1,478 @@ +{% extends 'base.html' %} +{% load app_filters %} +{% load static %} +{% block page_title %} Pregnant Women/Adolescent Monthly Tracker {% endblock %} +{% block style_code %} + + + + + + + +{% endblock %} + +{% block javascript_code%} +{% endblock javascript_code%} + +{% block primary %} + + + + + + + +{% for data in init_data %} + +

Forms Pregnant Women/Adolescent Monthly Tracker {{ data.first_name }} {{ data.surname }} | {{ data.sex_id|gen_value:vals }} | {% if data.date_of_birth|gen_age == 0 %} + UNDER 1 YEAR + {% else %} + {{ data.date_of_birth|gen_age }} YRS + {% endif %}

+ +{% endfor %} + + + + + +
+ +
+ +
+
+
+ + +
+

Pregnant Women/Adolescent Monthly Tracker

+
+
+
+
+ {% csrf_token %} +
+
    +
  1. + Pregnant Woman Details +
  2. +
  3. + Clinic Attendance & mode of delivery +
  4. + +
  5. + HIV Pos Pregnant Women/Adolescents +
  6. +
+ + + {{ form.person }} + {{ form.household_id }} + + + +
+
+ + +
+ +
+ {{ form.PMTCT_PWA19q }} +
+
+ +
+ +
+ {{ form.PWA_WA1_01 }} + +
+
+ +
+
+ +
+ {{ form.PMTCT_PWA6q }} +
+
+
+ +
+ +
+ {{ form.PMTCT_PWA7q }} +
+
+
+{#
#} +{##} +{#
#} +{# #} +{#
#} +{# {{ form.PWA_WA1_3A }}#} +{#
#} +{#
#} +{#
#} +{##} +{#
#} +{# #} +{#
#} +{# {{ form.PWA_WA1_3B }}#} +{#
#} +{#
#} +{#
#} +{#
#} +{#
#} +{# #} +{#
#} +{# {{ form.PWA_WA1_4A }}#} +{#
#} +{#
#} +{#
#} +{##} +{#
#} +{# #} +{#
#} +{# {{ form.PWA_WA1_4B }}#} +{#
#} +{#
#} +{#
#} +{#
#} +{#
#} +{# #} +{#
#} +{# {{ form.PWA_WA1_5A }}#} +{#
#} +{#
#} +{#
#} +{##} +{#
#} +{# #} +{#
#} +{# {{ form.PWA_WA1_5B }}#} +{#
#} +{#
#} +{#
#} + +
+
+ + + +
+
+ +
+ +
+ {{ form.PMTCT_PWA1q }} +
+
+ +
+ +
+ {{ form.PMTCT_PWA2q }} +
+{#
#} +
+
+ +
+ +
+ {{ form.PMTCT_PWA3q }} +
+
+ +
+ +
+ {{ form.PMTCT_PWA4q }} +
+
+ +
+ +
+ {{ form.PMTCT_PWA5q }} +
+
+ +
+
+ + + +
+
+
+ +
+{# {{ form.PWA_WA1_11 }} #} + + +
+ +
+ +
+ +
+ {{ form.PMTCT_PWA15q }} +{#
#} +
+
+ +
+ +
+ {{ form.PMTCT_PWA16q }} +{#
#} +
+
+ +
+ +
+ {{ form.PMTCT_PWA17q }} +{#
#} +
+
+ +
+ +
+ {{ form.PMTCT_PWA18q }} +{#
#} +
+
+
+
+ +
+
+
+
+ +
+ + Cancel +
+
+
+
Revised: 1st July 2019
+ + +
+
+ + +
+ + +
+
+ +
+ +
+
+
+ + +
+

Pregnant Women/Adolescent Tracker

+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% if data_get %} + {% for data in data_get %} + + {% for k, v in data.items %} + + {% endfor %} + + + + + + {% endfor %} + {% endif %} + + + +
Clinic Attendance & mode of deliveryPregnant Woman DetailsHIV Pos Pregnant Women/Adolescents
Q 1Q 2Q 3Q 4Q 5Q 1Q 2AQ 2BQ 3AQ 3BQ 4AQ 4BQ 5AQ 5BQ 1Q 2Q 3Q 4Q 5 ACTIONS
{{ v }} + + +
+
+

+
+
+ +
+ +
+ +
+ +{# end row#} + +{% endblock %} + +{% block lazy_javascript_code %} + + + + + + + + + + + +{% endblock %} \ No newline at end of file diff --git a/templates/ovc/view_child.html b/templates/ovc/view_child.html index 994467393..889276a7e 100644 --- a/templates/ovc/view_child.html +++ b/templates/ovc/view_child.html @@ -415,6 +415,44 @@

Registration details  

+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% endif %}