def _get_episode_case_properties(episode_case_properties, occurence_case, person_case, use_new_2b_structure): """ :return: Example : {'dateofInitiation': '2016-12-01', 'pregdate': '2016-12-01', 'dotdesignation': u'tbhv_to', 'ptbyr': '2016', 'dotpType': '7', 'dotmob': u'1234567890', 'dotname': u'asdfasdf', 'Ptype': '1', 'poccupation': 1, 'disease_classification': 'P', 'sitedetail: 1} """ episode_properties = {} if use_new_2b_structure: occurence_case_properties = occurence_case.dynamic_case_properties() episode_site_choice = occurence_case_properties.get('site_choice') patient_occupation = person_case.dynamic_case_properties().get('occupation', 'other') episode_disease_classification = occurence_case_properties.get('disease_classification', '') else: episode_site_choice = episode_case_properties.get('site_choice') patient_occupation = episode_case_properties.get('occupation', 'other') episode_disease_classification = episode_case_properties.get('disease_classification', '') if episode_site_choice: site_detail = episode_site.get(episode_site_choice, 'others') episode_properties["sitedetail"] = site_detail episode_case_date = episode_case_properties.get('date_of_diagnosis', None) if episode_case_date: episode_date = datetime.datetime.strptime(episode_case_date, "%Y-%m-%d").date() else: episode_date = datetime.date.today() episode_year = episode_date.year episode_properties.update({ "poccupation": occupation.get( patient_occupation, occupation['other'] ), "pregdate": str(episode_date), "ptbyr": str(episode_year), "disease_classification": disease_classification.get( episode_disease_classification, '' ), "dcpulmunory": dcpulmonory.get(episode_disease_classification, "N"), "dcexpulmunory": dcexpulmonory.get(episode_disease_classification, "N"), "dotname": (' '.join( [episode_case_properties.get(TREATMENT_SUPPORTER_FIRST_NAME, ''), episode_case_properties.get(TREATMENT_SUPPORTER_LAST_NAME, '')]) ), "dotmob": episode_case_properties.get(TREATMENT_SUPPORTER_PHONE, ''), # Can this mandatory field be made N/A if in case we don't collect this as in spec "dotdesignation": episode_case_properties.get('treatment_supporter_designation', ''), "dotpType": treatment_support_designation.get( episode_case_properties.get('treatment_supporter_designation', 'other_community_volunteer'), treatment_support_designation['other_community_volunteer'] ), "dateofInitiation": episode_case_properties.get(TREATMENT_START_DATE, str(datetime.date.today())), "Ptype": patient_type_choice.get(episode_case_properties.get('patient_type_choice', ''), ''), }) return episode_properties
def get_payload(self, repeat_record, episode_case): person_case = self._get_person_case(episode_case) episode_case_properties = episode_case.dynamic_case_properties() person_case_properties = person_case.dynamic_case_properties() person_locations = self._get_person_locations(episode_case) episode_case_date = episode_case_properties.get('date_of_diagnosis', None) if episode_case_date: episode_date = datetime.datetime.strptime(episode_case_date, "%Y-%m-%d").date() else: episode_date = datetime.date.today() return { "Stocode": person_locations.sto, "Dtocode": person_locations.dto, "TBUcode": person_locations.tu, "HFIDNO": person_locations.pcp, "pname": sanitize_text_for_xml(person_case.name), "fhname": self._get_husband_father_name(person_case_properties), "age": (_get_person_age(person_case_properties) or '0'), "gender": person_case_properties.get('sex', '').capitalize(), "Address": self._get_address(person_case_properties), "pin": (person_case_properties.get('current_address_postal_code') or DUMMY_VALUES['pincode']), "lno": person_case_properties.get('phone_number', ''), "mno": '0', "tbdiagdate": _format_date(str(episode_date)), "tbstdate": _format_date( episode_case_properties.get(TREATMENT_START_DATE, str(datetime.date.today()))), "Type": (disease_classification.get(episode_case_properties.get('disease_classification')) or NOT_AVAILABLE_VALUE), "B_diagnosis": basis_of_diagnosis.get(episode_case_properties.get('basis_of_diagnosis'), ''), "D_SUSTest": (drug_susceptibility_test_status.get(episode_case_properties.get('dst_status')) or NOT_AVAILABLE_VALUE), "Treat_I": (episode_case_properties.get('treatment_initiation_status') or NOT_AVAILABLE_VALUE), "usersid": settings.ENIKSHAY_PRIVATE_API_USERS.get(person_locations.sto, ''), "password": settings.ENIKSHAY_PRIVATE_API_PASSWORD, "Source": ENIKSHAY_ID, }
def _get_episode_case_properties(episode_case_properties): """ :return: Example : {'dateofInitiation': '2016-12-01', 'pregdate': '2016-12-01', 'dotdesignation': u'tbhv_to', 'ptbyr': '2016', 'dotpType': '7', 'dotmob': u'1234567890', 'dotname': u'asdfasdf', 'Ptype': '1', 'poccupation': 1, 'disease_classification': 'P', 'sitedetail: 1} """ episode_properties = {} episode_site_choice = episode_case_properties.get('site_choice', None) if episode_site_choice: site_detail = episode_site.get(episode_site_choice, 'others') episode_properties["sitedetail"] = site_detail episode_case_date = episode_case_properties.get('date_of_diagnosis', None) if episode_case_date: episode_date = datetime.datetime.strptime(episode_case_date, "%Y-%m-%d").date() else: episode_date = datetime.date.today() episode_year = episode_date.year episode_properties.update({ "poccupation": occupation.get(episode_case_properties.get('occupation', 'other'), occupation['other']), "pregdate": str(episode_date), "ptbyr": str(episode_year), "disease_classification": disease_classification.get( episode_case_properties.get('disease_classification', ''), ''), "dcpulmunory": dcpulmonory.get( episode_case_properties.get('disease_classification', ''), "N"), "dcexpulmunory": dcexpulmonory.get( episode_case_properties.get('disease_classification', ''), "N"), "dotname": (' '.join([ episode_case_properties.get('treatment_supporter_first_name', ''), episode_case_properties.get('treatment_supporter_last_name', '') ])), "dotmob": episode_case_properties.get('treatment_supporter_mobile_number', ''), # Can this mandatory field be made N/A if in case we don't collect this as in spec "dotdesignation": episode_case_properties.get('treatment_supporter_designation', ''), "dotpType": treatment_support_designation.get( episode_case_properties.get('treatment_supporter_designation', 'other_community_volunteer'), treatment_support_designation['other_community_volunteer']), "dateofInitiation": episode_case_properties.get('treatment_initiation_date', str(datetime.date.today())), "Ptype": patient_type_choice.get( episode_case_properties.get('patient_type_choice', ''), ''), }) return episode_properties