diff --git a/resources/healthsystem/consumables/ResourceFile_Consumables_availability_small.csv b/resources/healthsystem/consumables/ResourceFile_Consumables_availability_small.csv index 25249531b2..19ab070507 100644 --- a/resources/healthsystem/consumables/ResourceFile_Consumables_availability_small.csv +++ b/resources/healthsystem/consumables/ResourceFile_Consumables_availability_small.csv @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c358a643e4def0e574b75f89f83d77f9c3366f668422e005150f4d69ebe8d7a7 -size 6169152 +oid sha256:8bf105eb266c173feaef4068d100af4ea51f2542c3cac9505a704abade360820 +size 6202574 diff --git a/resources/healthsystem/consumables/ResourceFile_consumables_matched.csv b/resources/healthsystem/consumables/ResourceFile_consumables_matched.csv index 7ab675ecba..703faf4549 100644 --- a/resources/healthsystem/consumables/ResourceFile_consumables_matched.csv +++ b/resources/healthsystem/consumables/ResourceFile_consumables_matched.csv @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5b0f417681cbdd2489e2f9c6634b2825c32beb9637dc045b56e308c910a102c -size 90569 +oid sha256:793e3b2a94949fdf025bb5297de40a0092c41ad61f6fa0a4de4898de5cfdf2f3 +size 90677 diff --git a/src/scripts/malaria/analysis_malaria.py b/src/scripts/malaria/analysis_malaria.py index b2b4217dc6..f74cab548f 100644 --- a/src/scripts/malaria/analysis_malaria.py +++ b/src/scripts/malaria/analysis_malaria.py @@ -35,7 +35,7 @@ start_date = Date(2010, 1, 1) end_date = Date(2014, 1, 1) -popsize = 100 +popsize = 1000 # set up the log config diff --git a/src/tlo/methods/malaria.py b/src/tlo/methods/malaria.py index 0eee59980b..ea1f35ad02 100644 --- a/src/tlo/methods/malaria.py +++ b/src/tlo/methods/malaria.py @@ -628,7 +628,7 @@ def initialise_simulation(self, sim): self.item_codes_for_consumables_required['paracetamol'] = get_item_code('Paracetamol 500mg_1000_CMST') # malaria treatment complicated - same consumables for adults and children - self.item_codes_for_consumables_required['malaria_complicated'] = get_item_code('Injectable artesunate') + self.item_codes_for_consumables_required['malaria_complicated_artesunate'] = get_item_code('Injectable artesunate') self.item_codes_for_consumables_required['malaria_complicated_optional_items'] = [ get_item_code('Malaria test kit (RDT)'), @@ -640,7 +640,7 @@ def initialise_simulation(self, sim): # malaria IPTp for pregnant women self.item_codes_for_consumables_required['malaria_iptp'] = get_item_code( - 'Sulfamethoxazole + trimethropin, tablet 400 mg + 80 mg' + 'Fansidar (sulphadoxine / pyrimethamine tab)' ) def update_parameters_for_program_scaleup(self): @@ -869,6 +869,7 @@ def do_at_generic_first_appt_emergency( event, priority=0, topen=self.sim.date ) + class MalariaPollingEventDistrict(RegularEvent, PopulationScopeEventMixin): """ this calls functions to assign new malaria infections @@ -1231,26 +1232,32 @@ def get_drugs(self, age_of_person): # non-complicated malaria if age_of_person < 5: # Formulation for young children + # 5–14kg: 1 tablet(120mg Lumefantrine / 20mg Artemether) every 12 hours for 3 days + # paracetamol syrup in 1ml doses, 10ml 4x per day, 3 days drugs_available = self.get_consumables( - item_codes=self.module.item_codes_for_consumables_required['malaria_uncomplicated_young_children'], - optional_item_codes=[self.module.item_codes_for_consumables_required['paracetamol_syrup'], - self.module.item_codes_for_consumables_required['malaria_rdt']] + item_codes={self.module.item_codes_for_consumables_required['malaria_uncomplicated_young_children']: 6}, + optional_item_codes={self.module.item_codes_for_consumables_required['paracetamol_syrup']: 120, + self.module.item_codes_for_consumables_required['malaria_rdt']: 1} ) elif 5 <= age_of_person <= 15: # Formulation for older children + # 35–44 kg: 4 tablets every 12 hours for 3 days + # paracetamol syrup in 1ml doses, 15ml 4x per day, 3 days drugs_available = self.get_consumables( - item_codes=self.module.item_codes_for_consumables_required['malaria_uncomplicated_older_children'], - optional_item_codes=[self.module.item_codes_for_consumables_required['paracetamol_syrup'], - self.module.item_codes_for_consumables_required['malaria_rdt']] + item_codes={self.module.item_codes_for_consumables_required['malaria_uncomplicated_older_children']: 24}, + optional_item_codes={self.module.item_codes_for_consumables_required['paracetamol_syrup']: 180, + self.module.item_codes_for_consumables_required['malaria_rdt']: 1} ) else: # Formulation for adults + # 4 tablets every 12 hours for 3 day + # paracetamol in 1 mg doses, 4g per day for 3 days drugs_available = self.get_consumables( - item_codes=self.module.item_codes_for_consumables_required['malaria_uncomplicated_adult'], - optional_item_codes=[self.module.item_codes_for_consumables_required['paracetamol'], - self.module.item_codes_for_consumables_required['malaria_rdt']] + item_codes={self.module.item_codes_for_consumables_required['malaria_uncomplicated_adult']: 24}, + optional_item_codes={self.module.item_codes_for_consumables_required['paracetamol']: 12_000, + self.module.item_codes_for_consumables_required['malaria_rdt']: 1} ) return drugs_available @@ -1287,8 +1294,11 @@ def apply(self, person_id, squeeze_factor): data=f'HSI_Malaria_Treatment_Complicated: requesting complicated malaria treatment for ' f' {person_id}') + # dosage in 60mg artesunate ampoules + # First dose: 2.4 mg/kg × 25 kg = 60 mg (administered IV or IM). + # Repeat 60 mg after 12 hours and then again at 24 hours. if self.get_consumables( - item_codes=self.module.item_codes_for_consumables_required['malaria_complicated'], + item_codes={self.module.item_codes_for_consumables_required['malaria_complicated_artesunate']: 3}, optional_item_codes=self.module.item_codes_for_consumables_required[ 'malaria_complicated_optional_items'] ): @@ -1317,6 +1327,12 @@ def apply(self, person_id, squeeze_factor): ) logger.info(key='rdt_log', data=person_details_for_test) + # schedule ACT to follow inpatient care, this is delivered through outpatient facility + continue_to_treat = HSI_Malaria_Treatment(self.module, person_id=person_id) + self.sim.modules['HealthSystem'].schedule_hsi_event( + continue_to_treat, priority=1, topen=self.sim.date, tclose=None + ) + def did_not_run(self): logger.debug(key='message', data='HSI_Malaria_Treatment_Complicated: did not run') @@ -1351,6 +1367,7 @@ def apply(self, person_id, squeeze_factor): data=f'HSI_MalariaIPTp: requesting IPTp for person {person_id}') # request the treatment + # dosage is one tablet if self.get_consumables(self.module.item_codes_for_consumables_required['malaria_iptp']): logger.debug(key='message', data=f'HSI_MalariaIPTp: giving IPTp for person {person_id}')