Skip to content

Commit

Permalink
Tara malaria cons fix dec2024 (#1544)
Browse files Browse the repository at this point in the history
* change iptp item code to Fansidar, dosage is correct

* add dosage for antimalarials and paracetamol

* add ACT follow-up after injectable artesunate for severe cases

* rollback changes

* Add Fansidar (item code 1124) to consumable availability RFs

---------

Co-authored-by: sakshimohan <sakshi.mohan@york.ac.uk>
Co-authored-by: Tim Hallett <39991060+tbhallett@users.noreply.github.com>
  • Loading branch information
3 people authored Dec 13, 2024
1 parent a928bff commit a42b6f8
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 17 deletions.
Git LFS file not shown
Git LFS file not shown
2 changes: 1 addition & 1 deletion src/scripts/malaria/analysis_malaria.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
41 changes: 29 additions & 12 deletions src/tlo/methods/malaria.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)'),
Expand All @@ -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):
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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']
):
Expand Down Expand Up @@ -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')
Expand Down Expand Up @@ -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}')
Expand Down

0 comments on commit a42b6f8

Please sign in to comment.