Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Analysis of expanding HCW by cadre #1415

Open
wants to merge 163 commits into
base: master
Choose a base branch
from
Open

Analysis of expanding HCW by cadre #1415

wants to merge 163 commits into from

Conversation

BinglingICL
Copy link
Collaborator

@BinglingICL BinglingICL commented Jul 6, 2024

In this branch, we analyse the marginal and combined impact (in terms of DALYs, Deaths, Services by appointment types/treatment types) of expanding current HCW capabilities for five cadres - Clinical (C), DCSA (D), Nursing and Midwifery (N), Pharmacy (P), Other (O) - given an annual extra budget that is 4.2% of total cost of these cadres of the previous year. These main cadres are among the priorities cadres (HSSP III HRH Annex) and tlo model has fairly simulated their time usage (not sure about DCSA). The 4.2% growth rate is referred to the annual GDP growth rate in Malawi (Margherita 2024), which is 4.2%, and the assumption that proportion of GDP allocated for HRH costing is fixed.

Done:
(1) First-round 33 scenarios of extra budget allocation to the cadres are designed
(see https://github.com/UCL/TLOmodel/pull/1415/files#diff-af8994d6c7a9c0a52b2f5fb5aa35aeb92fe4f3966e50bbfcc927a21e9e75045d)
(2) First-round run settings (expansion years, mode change year, consumables availability, etc.) are set
(see src/scripts/healthsystem/impact_of_hcw_capabilities_expansion/scenario_of_expanding_current_hcw_by_officer_type_with_extra_budget.py)
(3) First-round run is finished and draf plots of results are made (see results at the bottom and more is in PyCharm project folder)

Todo:
(1) Analyse first-round results and see if any results need to be emphasised and further examined (such as representative scenarios/appt types/treatment types/cadres/causes, marginal and combined impacts of expanding cadres, relationship between DALYs averted/services or treatments provided/time capabilities of cadres)

(1.1) Label the scenarios something slightly 'friendlier' (e.g. Only Clinicians/ Only Nurses / Clinician + Nurses / Clinician + Nurses + DCSA / 'Current Allocation' etc.) -> Done: To avoid very long labels on the xticks, have used abbreviations; for example, Clinical (C), Nursing_and_Midwifery (N&M), C + N, etc. For the final presentation in the paper, would make it some readable.

(1.2) Make 3-D plots where Clinical, Pharmacy and Nurses increase rates are three coordinates and the quantity of interests (like DALYs averted, or DALYs averted percentage) are represented by the size of the "marker" -> In Progress and Depends on the Scenario Results to see whether the 3-D plots are clear and helpful. It might indicate "C = P" are the best extra budget allocation strategies; more scenarios around this should be tested. TBC

(1.3) Find out why some scenarios have less services by treatments and appointments but more DALYs averted compared to others -> Only tell by the difference of HCW expansion scenarios, but not yet clear how it exactly links to services delivered and DALYs averted. May need analyses of individual appts and treatments and causes of DALYs. (The reason should be multifactorial and possible trade-off between cadres, appointment types and treatments types, which might not directly indicate the benefits on DALYs averted. Possible factors: Clinical cadre, Pharmacy cadre, Pharm Dispensing appointment, etc.).

(1.4) Plot HCW time usage per cadre/treatment/appointment if necessary, the time usage per cadre might give indicates us the bottlenecks and the best extra allocation strategy of HRH; but note in mode 2, the capabilities are rescaled, so need to log the rescaled capabilities and calculate the time usage ratio as (appts * appt time / rescaled capabilities) / Check logger_summary: Capacity, Capacity_By_OfficerType_And_FacilityLevel (with values < 1, showing that rescaled capabilities are not used up, which may not indicate the shortage, which is reasonable in Mode 2), also, could create similar logger of Capacity by Officer.

(1.5) Plot service delivery ratio = HSI ran / (HSI ran + never_ran) to see the performance of scenarios, using logger_summary: HSI_Event_non_blank_appt_footprint, Never_ran_HSI_Event, hsi_event_counts, never_ran_hsi_event_counts. Could also calculate HCW time needed to deliver appt ran+appt never ran / HCW time available (rescaled or not rescaled?) to estimated the shortages of cadres in mode 2 to indicate the best extra budget allocation strategy -> In progress: never ran services info (appts, hcw time needed, hcw cost gap) plotted; service delivery ratio may be not a good measure, as both nominator and denominator would change across scenarios; instead, we focus on those never ran; would analysis of total demand = ran + never ran would helpful?

(2) Start from the best scenario in first round, considering second-round scenarios and run design for finding better extra budget allocation scenarios if possible and sensitivity analysis

(2.1) Find better/possibly optimum expansion strategy beyond CNP_equal and CP_equal, which are currently the best
The extra budget allocation proportions could reflect the demand level of C, N, P cadres (clues: previous analysis of HRH shortages in 2015-2019 in She et al 2024 paper or HSSP III, and squeeze factors from the current results - has to be in mode 1 results, and shortages estimated from examining HSI_never_ran in mode 2 results)

(2.2) Update scenario run design so that
2010-2019 mode 1,
2020-2024 mode 1 with { 'yearly_HR_scaling_mode': 'historical_scaling'} from Tim and Dominic's work,
2025-2029 mode 2 with rescaling in 2025 and HRExpansionByOfficerType (assuming limited extra budget every year) and consumable availability "all", etc...

TBD:
Might try run only two scenarios - CNP_equal/CP_equal and no_expansion - and compare with current results to see the difference?
The years of 2019-2024 is a period with some concerns, where the high-impact pandemic has to be ignored and not so sure whether to run it in mode 1 or 2 considering the rescaling of capabilities with scaling down the minute salary (hopefully 2020-2024 HRH capabilities reflect the actual case and as soon as we move to mode 2 we rescale the capabilities and implement the HR expansion strategies)?
Will the results be similar with the current, such as CNP_equal is still the best (but will never know if no try)?

(2.3) Sensitivity analysis design
Choose the 1st scenario such as the CNP_equal (currently the best) with current run settings as the baseline scenario,
Create 2nd scenario which applies CNP_equal expansion strategy, but "default" consumable availability (curious to see the constraints of consumable availability),
Create a 3rd scenario which applied the CNP_equal expansion strategy, but with HRH being used most effectively: i.e.. priority policy = EHPIII, full healthcare seeking, max healthcare system function, (and full availability of consumables, which is already set in the 1st scenario)

(2.4) A further longer term run (2030-2034) and dynamic/updating HR expansion strategy experiment, where the updated HR expansion strategy is based on the results of 2025-2029?

(3.0) Once the analysis on national level is completed, consider district-level analysis and collaborate with relevant colleagues from the team and Malawi

@BinglingICL BinglingICL self-assigned this Jul 6, 2024
@BinglingICL BinglingICL marked this pull request as draft July 6, 2024 15:39
@BinglingICL
Copy link
Collaborator Author

BinglingICL commented Jul 10, 2024

  1. Confirm the scenarios before summit to Azure (C + P or C+NM+P, scale up ratios, time of change)

to do for scenario design:
(1) Use the GDP expenditure on HR and HR cost (salary) data to figure out given a % increase of HR expenditure, how to increase the staff of cadres Clinical, Nursing and Midwifery, Pharmacy and DCSA, both independently or in a combined way. The ways to increase staff will be the scenarios to be examined.
(2) Use meshgrid and function to implement multiple scenarios, instead of explicitly write them one by one.

…and_hcw

# Conflicts:
#	src/tlo/methods/healthsystem.py
@@ -2976,11 +3157,75 @@ def apply(self, population):
matches = re.match(pattern, officer)
# Extract ID and officer type from
facility_id = int(matches.group(1))
district = self.module._facility_by_facility_id[facility_id].district
district = self.module._facility_by_facility_id[facility_id].district # todo: check if district callable
Copy link
Collaborator Author

@BinglingICL BinglingICL Oct 25, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Margheria @marghe-molaro, just raise a small todo task here: to check if _facility_by_facility_id[facility_id] has the attribute district and this line can run successfully.

If not, then a small fix might be: district = self.module._facility_by_facility_id[facility_id].name.split('_')[-1], as the facility name info has district indicated.

I would be happy to do this later, as I might need to work on district-based HR expansion analysis.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants