Skip to content

Commit

Permalink
Add documentation on how to overcome hardcoded vaccine schedules
Browse files Browse the repository at this point in the history
- Add sample code updating the prerequisite offset days for MR 2 vaccine schedule in the sample app
  • Loading branch information
ekigamba committed Sep 3, 2019
1 parent b96e0f5 commit 9da94c5
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 1 deletion.
13 changes: 12 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
* [Pre-requisites](#pre-requisites)
* [Installation Devices](#installation-devices)
* [How to install](#how-to-install)
* [Gotcha's when using the library](#gotchas-when-using-the-library)
* Vaccine schedule not changing after changing the vaccines.json file

# Introduction

Expand Down Expand Up @@ -188,4 +190,13 @@ This can be done via the setting below in your implementation's _app.properties_

```
vaccine.relaxation.days=2
```
```

## Gotcha's when using the library

1. Vaccine schedule not changing after changing the `vaccines.json` file!

Some of the vaccine configurations are not dependent on change done to the `vaccines.json`, in this case you should check the current configuration [here](https://github.com/OpenSRP/opensrp-client-immunization/blob/67a15611b53c55e111a0b7bff4f32a02c27b2920/opensrp-immunization/src/main/java/org/smartregister/immunization/db/VaccineRepo.java#L37)
and come-up with the correct configuration. Next step is to add the custom configuration to library. You should loop through the configurations array from `VaccineRepo.Vaccine[] ImmunizationLibrary.getInstance().getVaccines()` and add
modify the properties of the vaccine enum to whatever you need. You should then use `ImmunizationLibrary.getInstance().setVaccines(VaccineRepo.Vaccine[])`
to re-set all the vaccine configs using the configurations array you retrieved.
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,18 @@
import org.smartregister.Context;
import org.smartregister.CoreLibrary;
import org.smartregister.immunization.ImmunizationLibrary;
import org.smartregister.immunization.db.VaccineRepo;
import org.smartregister.immunization.domain.VaccineSchedule;
import org.smartregister.immunization.domain.jsonmapping.Vaccine;
import org.smartregister.immunization.domain.jsonmapping.VaccineGroup;
import org.smartregister.immunization.sample.BuildConfig;
import org.smartregister.immunization.sample.repository.SampleRepository;
import org.smartregister.immunization.sample.util.VaccineDuplicate;
import org.smartregister.immunization.util.VaccinatorUtils;
import org.smartregister.repository.Repository;
import org.smartregister.view.activity.DrishtiApplication;

import java.util.HashMap;
import java.util.List;

import static org.smartregister.util.Log.logError;
Expand All @@ -38,8 +41,31 @@ public void onCreate() {
CoreLibrary.init(context);
ImmunizationLibrary.init(context, getRepository(), null, BuildConfig.VERSION_CODE, BuildConfig.DATABASE_VERSION);

// This method updates some of the hardcoded vaccine definitions in VaccineRepo.Vaccine enum
updateHardcodedVaccineDefinition();

initOfflineSchedules();
}

private void updateHardcodedVaccineDefinition() {
VaccineRepo.Vaccine[] vaccines = ImmunizationLibrary.getInstance().getVaccines();

HashMap<String, VaccineDuplicate> replacementVaccines = new HashMap<>();
replacementVaccines.put("MR 2", new VaccineDuplicate("MR 2", VaccineRepo.Vaccine.mr1, -1, 548, 183, "child"));

for (VaccineRepo.Vaccine vaccine: vaccines) {
if (replacementVaccines.containsKey(vaccine.display())) {
VaccineDuplicate vaccineDuplicate = replacementVaccines.get(vaccine.display());

vaccine.setCategory(vaccineDuplicate.category());
vaccine.setExpiryDays(vaccineDuplicate.expiryDays());
vaccine.setMilestoneGapDays(vaccineDuplicate.milestoneGapDays());
vaccine.setPrerequisite(vaccineDuplicate.prerequisite());
vaccine.setPrerequisiteGapDays(vaccineDuplicate.prerequisiteGapDays());
}
}

ImmunizationLibrary.getInstance().setVaccines(vaccines);
}

public static synchronized SampleApplication getInstance() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package org.smartregister.immunization.sample.util;

import org.smartregister.immunization.db.VaccineRepo;

/**
* Created by Ephraim Kigamba - ekigamba@ona.io on 2019-08-29
*/

public class VaccineDuplicate {

private String display;
private VaccineRepo.Vaccine prerequisite;
private int expiryDays;
private int milestoneGapDays;
private int prerequisiteGapDays;
private String category;

public VaccineDuplicate(String display, VaccineRepo.Vaccine prerequisite, int expiryDays,
int milestoneGapDays, int prerequisiteGapDays, String category) {
this.display = display;
this.prerequisite = prerequisite;
this.expiryDays = expiryDays;
this.milestoneGapDays = milestoneGapDays;
this.prerequisiteGapDays = prerequisiteGapDays;
this.category = category;
}

public String display() {
return display;
}

public VaccineRepo.Vaccine prerequisite() {
return prerequisite;
}

public int expiryDays() {
return expiryDays;
}

public int milestoneGapDays() {
return milestoneGapDays;
}

public int prerequisiteGapDays() {
return prerequisiteGapDays;
}

public String category() {
return category;
}

}

0 comments on commit 9da94c5

Please sign in to comment.