• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

OpenSRP / opensrp-client-immunization / #898

pending completion
#898

push

github-actions

web-flow
Merge pull request #195 from opensrp/check-vaccine-duplicates

Add Duplicate Vaccines & Recurring Service Record Checks

5076 of 6673 relevant lines covered (76.07%)

0.76 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.86
opensrp-immunization/src/main/java/org/smartregister/immunization/util/IMDatabaseUtils.java
1
package org.smartregister.immunization.util;
2

3
import android.content.Context;
4

5
import net.sqlcipher.database.SQLiteDatabase;
6

7
import org.apache.commons.lang3.StringUtils;
8
import org.json.JSONArray;
9
import org.json.JSONException;
10
import org.json.JSONObject;
11
import org.smartregister.immunization.ImmunizationLibrary;
12
import org.smartregister.immunization.domain.ServiceSchedule;
13
import org.smartregister.immunization.domain.ServiceTrigger;
14
import org.smartregister.immunization.domain.ServiceType;
15
import org.smartregister.immunization.domain.VaccineType;
16
import org.smartregister.immunization.repository.RecurringServiceTypeRepository;
17
import org.smartregister.immunization.repository.VaccineTypeRepository;
18
import org.smartregister.util.Utils;
19

20
import java.util.ArrayList;
21
import java.util.Arrays;
22
import java.util.List;
23

24
import timber.log.Timber;
25

26
/**
27
 * Created by keyman on 17/05/2017.
28
 */
29
public class IMDatabaseUtils {
1✔
30

31
    public static void populateRecurringServices(Context context, SQLiteDatabase database,
32
                                                 RecurringServiceTypeRepository recurringServiceTypeRepository) {
33
        try {
34
            String supportedRecurringServices = VaccinatorUtils.getSupportedRecurringServices(context);
1✔
35
            if (StringUtils.isNotBlank(supportedRecurringServices)) {
1✔
36
                JSONArray jsonArray = new JSONArray(supportedRecurringServices);
1✔
37
                if (jsonArray == null) {
1✔
38
                    return;
×
39
                }
40

41
                for (int i = 0; i < jsonArray.length(); i++) {
1✔
42
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
1✔
43
                    String type = JsonFormUtils.getString(jsonObject, "type");
1✔
44
                    String serviceLogic = JsonFormUtils.getString(jsonObject, "service_logic");
1✔
45
                    String units = JsonFormUtils.getString(jsonObject, "units");
1✔
46
                    String service_group = JsonFormUtils.getString(jsonObject, "service_group");
1✔
47
                    String serviceNameEntity = null;
1✔
48
                    String serviceNameEntityId = null;
1✔
49

50
                    JSONObject serviceName = JsonFormUtils.getJSONObject(jsonObject, "openmrs_service_name");
1✔
51
                    if (serviceName != null) {
1✔
52
                        serviceNameEntity = JsonFormUtils.getString(serviceName, "entity");
1✔
53
                        serviceNameEntityId = JsonFormUtils.getString(serviceName, "entity_id");
1✔
54
                    }
55

56
                    String dateEntity = null;
1✔
57
                    String dateEntityId = null;
1✔
58

59
                    JSONObject date = JsonFormUtils.getJSONObject(jsonObject, "openmrs_date");
1✔
60
                    if (serviceName != null) {
1✔
61
                        dateEntity = JsonFormUtils.getString(date, "entity");
1✔
62
                        dateEntityId = JsonFormUtils.getString(date, "entity_id");
1✔
63
                    }
64

65
                    JSONArray services = JsonFormUtils.getJSONArray(jsonObject, "services");
1✔
66

67
                    List<String> mileStones = new ArrayList<>();
1✔
68
                    if (services != null) {
1✔
69
                        for (int j = 0; j < services.length(); j++) {
1✔
70
                            JSONObject service = services.getJSONObject(j);
1✔
71
                            Long id = JsonFormUtils.getLong(service, "id");
1✔
72
                            String name = JsonFormUtils.getString(service, "name");
1✔
73
                            String dose = JsonFormUtils.getString(service, "dose");
1✔
74

75
                            JSONObject schedule = JsonFormUtils.getJSONObject(service, "schedule");
1✔
76

77
                            String prerequisite = null;
1✔
78
                            String preOffset = null;
1✔
79
                            String expiryOffSet = null;
1✔
80
                            String milestoneOffset = null;
1✔
81
                            try {
82
                                ServiceSchedule serviceSchedule = ServiceSchedule.getServiceSchedule(schedule);
1✔
83
                                ServiceTrigger dueTrigger = serviceSchedule.getDueTrigger();
1✔
84
                                ServiceTrigger expiryTrigger = serviceSchedule.getExpiryTrigger();
1✔
85

86
                                if (dueTrigger != null && expiryTrigger != null) {
1✔
87
                                    switch (dueTrigger.getReference()) {
1✔
88
                                        case DOB:
89
                                            prerequisite = dueTrigger.getReference().name().toLowerCase();
1✔
90
                                            break;
1✔
91
                                        case PREREQUISITE:
92
                                            prerequisite = dueTrigger.getReference().name().toLowerCase() + "|" + dueTrigger
1✔
93
                                                    .getPrerequisite();
1✔
94
                                            break;
1✔
95
                                        case MULTIPLE:
96
                                            ServiceTrigger.Multiple multiple = dueTrigger.getMultiple();
1✔
97
                                            String condition = multiple.getCondition();
1✔
98
                                            List<String> prerequisites = multiple.getPrerequisites();
1✔
99
                                            String[] preArray = prerequisites.toArray(new String[prerequisites.size()]);
1✔
100

101
                                            prerequisite = dueTrigger.getReference().name()
1✔
102
                                                    .toLowerCase() + "|" + condition + "|" + Arrays.toString(preArray);
1✔
103
                                            break;
1✔
104
                                        default:
105
                                            break;
106

107
                                    }
108

109
                                    preOffset = dueTrigger.getOffset();
1✔
110
                                    mileStones.add(preOffset);
1✔
111

112
                                    expiryOffSet = expiryTrigger.getOffset();
1✔
113

114
                                    String[] milestoneArray = mileStones.toArray(new String[mileStones.size()]);
1✔
115
                                    milestoneOffset = Arrays.toString(milestoneArray);
1✔
116

117
                                }
118
                            } catch (Exception e) {
×
119
                                Timber.e(e);
×
120
                            }
1✔
121

122

123
                            ServiceType serviceType = new ServiceType();
1✔
124
                            serviceType.setId(id);
1✔
125
                            serviceType.setType(type);
1✔
126
                            serviceType.setName(name);
1✔
127
                            serviceType.setServiceGroup(service_group);
1✔
128
                            serviceType.setServiceNameEntity(serviceNameEntity);
1✔
129
                            serviceType.setServiceNameEntityId(serviceNameEntityId);
1✔
130
                            serviceType.setDateEntity(dateEntity);
1✔
131
                            serviceType.setDateEntityId(dateEntityId);
1✔
132
                            if (dose != null && units != null) {
1✔
133
                                serviceType.setUnits(dose + "  " + units);
1✔
134
                            }
135

136
                            serviceType.setServiceLogic(serviceLogic);
1✔
137
                            serviceType.setPrerequisite(prerequisite);
1✔
138
                            serviceType.setPreOffset(preOffset);
1✔
139
                            serviceType.setExpiryOffset(expiryOffSet);
1✔
140
                            serviceType.setMilestoneOffset(milestoneOffset);
1✔
141
                            recurringServiceTypeRepository.add(serviceType, database);
1✔
142

143
                        }
144
                    }
145

146
                }
147
            }
148
        } catch (JSONException e) {
×
149
            Timber.e(e);
×
150
        }
1✔
151
    }
1✔
152

153
    public static void accessAssetsAndFillDataBaseForVaccineTypes(Context context, SQLiteDatabase db) {
154
        VaccineTypeRepository vaccineTypeRepository = ImmunizationLibrary.getInstance().vaccineTypeRepository();
1✔
155
        if (vaccineTypeRepository.getAllVaccineTypes(db).size() < 1) {
1✔
156
            String vaccinetype = Utils.readAssetContents(context, "vaccine_type.json");
1✔
157
            try {
158
                JSONArray vaccinetypeArray = new JSONArray(vaccinetype);
1✔
159
                for (int i = 0; i < vaccinetypeArray.length(); i++) {
1✔
160
                    JSONObject vaccinrtypeObject = vaccinetypeArray.getJSONObject(i);
1✔
161
                    VaccineType vtObject = new VaccineType(null, vaccinrtypeObject.getInt("doses"),
1✔
162
                            vaccinrtypeObject.getString("name"), vaccinrtypeObject.getString("openmrs_parent_entity_id"),
1✔
163
                            vaccinrtypeObject.getString("openmrs_date_concept_id"),
1✔
164
                            vaccinrtypeObject.getString("openmrs_dose_concept_id"));
1✔
165
                    vaccineTypeRepository.add(vtObject, db);
1✔
166
                }
167
            } catch (JSONException e) {
×
168
                Timber.e(e);
×
169
            }
1✔
170
        }
171
    }
1✔
172
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc