Ejemplo n.º 1
0
    def test_post_healthsystem_view(self):
        scenario = Scenario(self.model_scenario.xml)

        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.name, "Kenya ACT")
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.firstLine, "ACT")
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.secondLine, "QN")
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareSevere, 0.48)
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareUncomplicated1, 0.04)
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareUncomplicated2, 0.04)
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.pSelfTreatUncomplicated, 0.0212)

        perc_total = 20
        perc_formal = 40
        expected_prob_total = get_prob_from_percentage(perc_total)
        expected_prob_formal = get_prob_from_percentage(100-perc_formal)
        post_data = {
            "perc_total_treated": str(perc_total),
            "perc_formal_care": str(perc_formal),
            "first_line_drug": "SP",
        }
        response = self.client.post(reverse("ts_om.healthsystem", kwargs={"scenario_id": self.model_scenario.id}),
                                    post_data)
        self.assertEqual(response.status_code, 302)

        model_scenario = ScenarioModel.objects.get(id=self.model_scenario.id)
        scenario = Scenario(model_scenario.xml)

        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.name, "Kenya ACT")
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.firstLine, "SP")
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.secondLine, "QN")
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareSevere, 0.48)
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareUncomplicated1, expected_prob_total)
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareUncomplicated2, expected_prob_total)
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.pSelfTreatUncomplicated, expected_prob_formal)
    def test_probabilities(self):
        # get_prob_from_percentage
        self.assertRaises(AssertionError, get_prob_from_percentage, -1)
        self.assertRaises(AssertionError, get_prob_from_percentage, 101)
        self.assertRaises(AssertionError, get_prob_from_percentage,
                          "not a number")

        self.assertEqual(get_prob_from_percentage(50), 0.2411937)
        self.assertEqual(get_prob_from_percentage(0), 0.0)
        self.assertEqual(get_prob_from_percentage(100), 0.9984184)

        for i in range(0, 101):
            self.assertEqual(
                get_percentage_from_prob(get_prob_from_percentage(i)), i)

        # get_percentage_from_prob
        self.assertEqual(get_percentage_from_prob(0.5), 77)
        self.assertEqual(get_percentage_from_prob(0.0), 0)
        self.assertEqual(get_percentage_from_prob(0.003655051), 0)
        self.assertEqual(get_percentage_from_prob(0.003655053), 1)
        self.assertEqual(get_percentage_from_prob(0.01), 2)
        self.assertEqual(get_percentage_from_prob(0.5), 77)
        self.assertEqual(get_percentage_from_prob(0.9984183), 99)
        self.assertEqual(get_percentage_from_prob(0.9984185), 100)
        self.assertEqual(get_percentage_from_prob(1.00), 100)
Ejemplo n.º 3
0
    def form_valid(self, form, **kwargs):
        prob_total = get_prob_from_percentage(
            int(form.cleaned_data["perc_total_treated"]))
        perc_formal = int(form.cleaned_data["perc_formal_care"])
        prob_formal = get_prob_from_percentage(100 - perc_formal)

        # total % (uncomplicated) fevers treated converted to probability.
        self.scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareUncomplicated1 = prob_total
        self.scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareUncomplicated2 = prob_total

        # % treated in a health clinic (formal care).
        self.scenario.healthSystem.ImmediateOutcomes.pSelfTreatUncomplicated = prob_formal

        first_line_drug = form.cleaned_data["first_line_drug"]

        self.scenario.healthSystem.ImmediateOutcomes.firstLine = first_line_drug
        self.scenario.healthSystem.ImmediateOutcomes.drugs.add(
            first_line_drug, unicode(INITIAL_DRUG_VALUE),
            ["initialACR", "compliance", "nonCompliersEffective"])

        drug = self.scenario.healthSystem.ImmediateOutcomes.drugs[
            first_line_drug]
        drug.treatmentAction = DRUG_NAME
        drug.treatmentAction.stage = TREATMENT_ACTION_STAGE
        drug.treatmentAction.timesteps = TREATMENT_ACTION_TIMESTEPS

        return super(ScenarioHealthSystemView,
                     self).form_valid(form, kwargs={'xml': self.scenario.xml})
Ejemplo n.º 4
0
    def test_post_healthsystem_view(self):
        scenario = Scenario(self.model_scenario.xml)

        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.name,
                         "Kenya ACT")
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.firstLine,
                         "ACT")
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.secondLine,
                         "QN")
        self.assertEqual(
            scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareSevere,
            0.48)
        self.assertEqual(
            scenario.healthSystem.ImmediateOutcomes.
            pSeekOfficialCareUncomplicated1, 0.04)
        self.assertEqual(
            scenario.healthSystem.ImmediateOutcomes.
            pSeekOfficialCareUncomplicated2, 0.04)
        self.assertEqual(
            scenario.healthSystem.ImmediateOutcomes.pSelfTreatUncomplicated,
            0.0212)

        perc_total = 20
        perc_formal = 40
        expected_prob_total = get_prob_from_percentage(perc_total)
        expected_prob_formal = get_prob_from_percentage(100 - perc_formal)
        post_data = {
            "perc_total_treated": str(perc_total),
            "perc_formal_care": str(perc_formal),
            "first_line_drug": "SP",
        }
        response = self.client.post(self.url, post_data)
        self.assertEqual(response.status_code, 302)

        model_scenario = ScenarioModel.objects.get(id=self.model_scenario.id)
        scenario = Scenario(model_scenario.xml)

        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.name,
                         "Kenya ACT")
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.firstLine,
                         "SP")
        self.assertEqual(scenario.healthSystem.ImmediateOutcomes.secondLine,
                         "QN")
        self.assertEqual(
            scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareSevere,
            0.48)
        self.assertEqual(
            scenario.healthSystem.ImmediateOutcomes.
            pSeekOfficialCareUncomplicated1, expected_prob_total)
        self.assertEqual(
            scenario.healthSystem.ImmediateOutcomes.
            pSeekOfficialCareUncomplicated2, expected_prob_total)
        self.assertEqual(
            scenario.healthSystem.ImmediateOutcomes.pSelfTreatUncomplicated,
            expected_prob_formal)
Ejemplo n.º 5
0
    def form_valid(self, form, **kwargs):
        prob_total = get_prob_from_percentage(int(form.cleaned_data["perc_total_treated"]))
        perc_formal = int(form.cleaned_data["perc_formal_care"])
        prob_formal = get_prob_from_percentage(100-perc_formal)

        # total % (uncomplicated) fevers treated converted to probability.
        self.scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareUncomplicated1 = prob_total
        self.scenario.healthSystem.ImmediateOutcomes.pSeekOfficialCareUncomplicated2 = prob_total

        # % treated in a health clinic (formal care).
        self.scenario.healthSystem.ImmediateOutcomes.pSelfTreatUncomplicated = prob_formal

        first_line_drug = form.cleaned_data["first_line_drug"]

        self.scenario.healthSystem.ImmediateOutcomes.firstLine = first_line_drug
        self.scenario.healthSystem.ImmediateOutcomes.drugs.add(first_line_drug, unicode(INITIAL_DRUG_VALUE),
                                                               ["initialACR", "compliance", "nonCompliersEffective"])

        drug = self.scenario.healthSystem.ImmediateOutcomes.drugs[first_line_drug]
        drug.treatmentAction = DRUG_NAME
        drug.treatmentAction.stage = TREATMENT_ACTION_STAGE
        drug.treatmentAction.timesteps = TREATMENT_ACTION_TIMESTEPS

        return super(ScenarioHealthSystemView, self).form_valid(form, kwargs={'xml': self.scenario.xml})