Skip to content

Commit 6c47e47

Browse files
BAH-2976 | Config for other observation in Op-consult HiType (#128)
* BAH-2976 | Add. introduced a config for other observation in op-consult hi-type * BAH-2976 | refactor. physical examination config to have concepts list
1 parent 4433c10 commit 6c47e47

File tree

5 files changed

+150
-64
lines changed

5 files changed

+150
-64
lines changed

omod/src/main/java/org/bahmni/module/hip/web/model/FhirOPConsult.java

+19-4
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import org.openmrs.EncounterProvider;
2121
import org.hl7.fhir.r4.model.CanonicalType;
2222
import org.hl7.fhir.r4.model.Meta;
23-
import org.openmrs.Obs;
24-
2523

2624
import java.util.*;
2725
import java.util.stream.Collectors;
@@ -41,6 +39,7 @@ public class FhirOPConsult {
4139
private final List<Procedure> procedure;
4240
private final List<DocumentReference> patientDocuments;
4341
private final List<ServiceRequest> serviceRequest;
42+
private final List<Observation> otherObsverations;
4443

4544
public FhirOPConsult(List<Condition> chiefComplaints,
4645
List<Condition> medicalHistory, Date visitTimeStamp,
@@ -54,7 +53,8 @@ public FhirOPConsult(List<Condition> chiefComplaints,
5453
List<Medication> medications,
5554
List<Procedure> procedure,
5655
List<DocumentReference> patientDocuments,
57-
List<ServiceRequest> serviceRequest) {
56+
List<ServiceRequest> serviceRequest,
57+
List<Observation> otherObservations) {
5858
this.chiefComplaints = chiefComplaints;
5959
this.medicalHistory = medicalHistory;
6060
this.visitTimeStamp = visitTimeStamp;
@@ -69,6 +69,7 @@ public FhirOPConsult(List<Condition> chiefComplaints,
6969
this.procedure = procedure;
7070
this.patientDocuments = patientDocuments;
7171
this.serviceRequest = serviceRequest;
72+
this.otherObsverations = otherObservations;
7273
}
7374

7475
public Bundle bundleOPConsult(OrganizationContext orgContext) {
@@ -85,6 +86,7 @@ public Bundle bundleOPConsult(OrganizationContext orgContext) {
8586
FHIRUtils.addToBundleEntry(bundle, medicationRequests, false);
8687
FHIRUtils.addToBundleEntry(bundle, medications, false);
8788
FHIRUtils.addToBundleEntry(bundle, serviceRequest, false);
89+
FHIRUtils.addToBundleEntry(bundle, otherObsverations, false);
8890
if (procedure != null) FHIRUtils.addToBundleEntry(bundle, procedure, false);
8991
if(patientDocuments != null) FHIRUtils.addToBundleEntry(bundle, patientDocuments, false);
9092

@@ -122,9 +124,11 @@ public static FhirOPConsult fromOpenMrsOPConsult(OpenMrsOPConsult openMrsOPConsu
122124
.filter(Objects::nonNull).collect(Collectors.toList());
123125
List<ServiceRequest> serviceRequest = openMrsOPConsult.getOrders().stream().
124126
map(fhirResourceMapper::mapToOrder).collect(Collectors.toList());
127+
List<Observation> otherObs = openMrsOPConsult.getOtherObs().stream().
128+
map(fhirResourceMapper::mapToObs).collect(Collectors.toList());
125129

126130
return new FhirOPConsult(fhirChiefComplaintConditionList, fhirMedicalHistoryList, visitDatetime, encounterId, encounter, practitioners,
127-
patient, patientReference, fhirObservationList, medicationRequestsList, medications, fhirProcedureList, patientDocuments, serviceRequest);
131+
patient, patientReference, fhirObservationList, medicationRequestsList, medications, fhirProcedureList, patientDocuments, serviceRequest, otherObs);
128132
}
129133

130134
private Composition compositionFrom(OrganizationContext orgContext) {
@@ -216,6 +220,17 @@ private Composition compositionFrom(OrganizationContext orgContext) {
216220
.forEach(physicalExaminationsCompositionSection::addEntry);
217221
}
218222

223+
if(otherObsverations.size() > 0) {
224+
Composition.SectionComponent otherObservationCompositionSection = composition.addSection();
225+
otherObservationCompositionSection
226+
.setTitle("Other Observations")
227+
.setCode(FHIRUtils.getOtherObservationType());
228+
otherObsverations
229+
.stream()
230+
.map(FHIRUtils::getReferenceToResource)
231+
.forEach(otherObservationCompositionSection::addEntry);
232+
}
233+
219234
return composition;
220235
}
221236

omod/src/main/java/org/bahmni/module/hip/web/model/OpenMrsOPConsult.java

+64-7
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class OpenMrsOPConsult {
2424
private final List<DrugOrder> drugOrders;
2525
private final List<Obs> procedure;
2626
private final List<Obs> patientDocuments;
27+
private final List<Obs> otherObs;
2728
private final List<Order> orders;
2829

2930
public OpenMrsOPConsult(Encounter encounter,
@@ -35,6 +36,7 @@ public OpenMrsOPConsult(Encounter encounter,
3536
List<DrugOrder> drugOrders,
3637
List<Obs> procedure,
3738
List<Obs> patientDocuments,
39+
List<Obs> otherObs,
3840
List<Order> orders) {
3941
this.encounter = encounter;
4042
this.chiefComplaintConditions = chiefComplaintConditions;
@@ -45,6 +47,7 @@ public OpenMrsOPConsult(Encounter encounter,
4547
this.drugOrders = drugOrders;
4648
this.procedure = procedure;
4749
this.patientDocuments = patientDocuments;
50+
this.otherObs = otherObs;
4851
this.orders = orders;
4952
}
5053

@@ -55,6 +58,7 @@ public static List<OpenMrsOPConsult> getOpenMrsOPConsultList(Map<Encounter, List
5558
Map<Encounter, List<Obs>> encounterProcedureMap,
5659
Map<Encounter, List<Obs>> encounterPatientDocumentsMap,
5760
Map<Encounter, List<Order>> encounterOrdersMap,
61+
Map<Encounter, List<Obs>> encounteOtherObsMap,
5862
Patient patient) {
5963
List<OpenMrsOPConsult> openMrsOPConsultList = new ArrayList<>();
6064

@@ -75,7 +79,13 @@ public static List<OpenMrsOPConsult> getOpenMrsOPConsultList(Map<Encounter, List
7579

7680
List<Obs> procedure = getEncounterObsProcedure(encounterProcedureMap, entry.getKey());
7781

78-
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), chiefComplaintList, medicalHistoryList, physicalExaminationList, patient, entry.getKey().getEncounterProviders(), drugOrdersList, procedure, patientDocumentsList, new ArrayList<>()));
82+
List<Obs> otherObsList = getEncounterObs(encounteOtherObsMap, entry.getKey());
83+
otherObsList = otherObsList == null ? new ArrayList<>() : otherObsList;
84+
85+
List<Order> orderList = getEncounterOrder(encounterOrdersMap, entry.getKey());
86+
orderList = orderList == null ? new ArrayList<>() : orderList;
87+
88+
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), chiefComplaintList, medicalHistoryList, physicalExaminationList, patient, entry.getKey().getEncounterProviders(), drugOrdersList, procedure, patientDocumentsList, otherObsList, orderList));
7989
}
8090

8191
for (Map.Entry<Encounter, List<OpenMrsCondition>> entry : encounterChiefComplaintsMap.entrySet()) {
@@ -92,7 +102,13 @@ public static List<OpenMrsOPConsult> getOpenMrsOPConsultList(Map<Encounter, List
92102

93103
List<Obs> procedure = getEncounterObsProcedure(encounterProcedureMap, entry.getKey());
94104

95-
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), chiefComplaintList, medicalHistoryList, physicalExaminationList, patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), procedure, patientDocumentsList, new ArrayList<>()));
105+
List<Obs> otherObsList = getEncounterObs(encounteOtherObsMap, entry.getKey());
106+
otherObsList = otherObsList == null ? new ArrayList<>() : otherObsList;
107+
108+
List<Order> orderList = getEncounterOrder(encounterOrdersMap, entry.getKey());
109+
orderList = orderList == null ? new ArrayList<>() : orderList;
110+
111+
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), chiefComplaintList, medicalHistoryList, physicalExaminationList, patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), procedure, patientDocumentsList, otherObsList, orderList));
96112
}
97113

98114
for (Map.Entry<Encounter, List<OpenMrsCondition>> entry : encounterMedicalHistoryMap.entrySet()) {
@@ -105,7 +121,14 @@ public static List<OpenMrsOPConsult> getOpenMrsOPConsultList(Map<Encounter, List
105121
physicalExaminationList = physicalExaminationList == null ? new ArrayList<>() : physicalExaminationList;
106122

107123
List<Obs> procedure = getEncounterObsProcedure(encounterProcedureMap, entry.getKey());
108-
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), new ArrayList<>(), medicalHistoryList, physicalExaminationList, patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), procedure, patientDocumentsList, new ArrayList<>()));
124+
125+
List<Obs> otherObsList = getEncounterObs(encounteOtherObsMap, entry.getKey());
126+
otherObsList = otherObsList == null ? new ArrayList<>() : otherObsList;
127+
128+
List<Order> orderList = getEncounterOrder(encounterOrdersMap, entry.getKey());
129+
orderList = orderList == null ? new ArrayList<>() : orderList;
130+
131+
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), new ArrayList<>(), medicalHistoryList, physicalExaminationList, patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), procedure, patientDocumentsList, otherObsList, orderList));
109132
}
110133

111134
for (Map.Entry<Encounter, List<Obs>> entry : encounterPhysicalExaminationMap.entrySet()) {
@@ -116,22 +139,47 @@ public static List<OpenMrsOPConsult> getOpenMrsOPConsultList(Map<Encounter, List
116139

117140
List<Obs> procedure = getEncounterObsProcedure(encounterProcedureMap, entry.getKey());
118141

119-
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), new ArrayList<>(), new ArrayList<>(), physicalExaminationList, patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), procedure, patientDocumentsList, new ArrayList<>()));
142+
List<Obs> otherObsList = getEncounterObs(encounteOtherObsMap, entry.getKey());
143+
otherObsList = otherObsList == null ? new ArrayList<>() : otherObsList;
144+
145+
List<Order> orderList = getEncounterOrder(encounterOrdersMap, entry.getKey());
146+
orderList = orderList == null ? new ArrayList<>() : orderList;
147+
148+
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), new ArrayList<>(), new ArrayList<>(), physicalExaminationList, patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), procedure, patientDocumentsList, otherObsList, orderList));
120149
}
121150

122151
for (Map.Entry<Encounter, List<Obs>> entry : encounterProcedureMap.entrySet()) {
123152
List<Obs> patientDocumentsList = getEncounterObs(encounterPatientDocumentsMap, entry.getKey());
124153
patientDocumentsList = patientDocumentsList == null ? new ArrayList<>() : patientDocumentsList;
125154

126-
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), entry.getValue(), patientDocumentsList, new ArrayList<>()));
155+
List<Obs> otherObsList = getEncounterObs(encounteOtherObsMap, entry.getKey());
156+
otherObsList = otherObsList == null ? new ArrayList<>() : otherObsList;
157+
158+
List<Order> orderList = getEncounterOrder(encounterOrdersMap, entry.getKey());
159+
orderList = orderList == null ? new ArrayList<>() : orderList;
160+
161+
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), entry.getValue(), patientDocumentsList, otherObsList, orderList));
127162
}
128163

129164
for (Map.Entry<Encounter, List<Obs>> entry : encounterPatientDocumentsMap.entrySet()) {
130-
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), new ArrayList<>(), encounterPatientDocumentsMap.get(entry.getKey()), new ArrayList<>()));
165+
List<Obs> otherObsList = getEncounterObs(encounteOtherObsMap, entry.getKey());
166+
otherObsList = otherObsList == null ? new ArrayList<>() : otherObsList;
167+
168+
List<Order> orderList = getEncounterOrder(encounterOrdersMap, entry.getKey());
169+
orderList = orderList == null ? new ArrayList<>() : orderList;
170+
171+
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), new ArrayList<>(), encounterPatientDocumentsMap.get(entry.getKey()), otherObsList, orderList));
172+
}
173+
174+
for (Map.Entry<Encounter, List<Obs>> entry : encounteOtherObsMap.entrySet()) {
175+
List<Order> orderList = getEncounterOrder(encounterOrdersMap, entry.getKey());
176+
orderList = orderList == null ? new ArrayList<>() : orderList;
177+
178+
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), encounteOtherObsMap.get(entry.getKey()) , orderList));
131179
}
132180

133181
for(Map.Entry<Encounter, List<Order>> entry : encounterOrdersMap.entrySet()){
134-
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), encounterOrdersMap.get(entry.getKey())));
182+
openMrsOPConsultList.add(new OpenMrsOPConsult(entry.getKey(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), patient, entry.getKey().getEncounterProviders(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(),new ArrayList<>(), encounterOrdersMap.get(entry.getKey())));
135183
}
136184

137185
return openMrsOPConsultList;
@@ -146,6 +194,15 @@ public static List<Obs> getEncounterObs(Map<Encounter, List<Obs>> map, Encounter
146194
return null;
147195
}
148196

197+
public static List<Order> getEncounterOrder(Map<Encounter, List<Order>> map, Encounter encounter) {
198+
if (map.containsKey(encounter)) {
199+
List<Order> obsList = map.get(encounter);
200+
map.remove(encounter);
201+
return obsList;
202+
}
203+
return null;
204+
}
205+
149206
public static List<OpenMrsCondition> getEncounterConditions(Map<Encounter, List<OpenMrsCondition>> map, Encounter encounter) {
150207
if (map.containsKey(encounter)) {
151208
List<OpenMrsCondition> conditionList = map.get(encounter);

omod/src/main/java/org/bahmni/module/hip/web/service/AbdmConfig.java

+23-29
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,6 @@ public AbdmConfig(@Qualifier("adminService") AdministrationService adminService,
7272
allConfigurationKeys.add(templateAttribute.getMapping());
7373
});
7474

75-
Arrays.stream(PhysicalExamination.values()).forEach(templateAttribute -> {
76-
allConfigurationKeys.add(templateAttribute.getMapping());
77-
});
78-
7975
Arrays.stream(HistoryAndExamination.values()).forEach(templateAttribute -> {
8076
allConfigurationKeys.add(templateAttribute.getMapping());
8177
});
@@ -87,6 +83,11 @@ public AbdmConfig(@Qualifier("adminService") AdministrationService adminService,
8783
Arrays.stream(ProcedureAttribute.values()).forEach(templateAttribute -> {
8884
allConfigurationKeys.add(templateAttribute.getMapping());
8985
});
86+
87+
Arrays.stream(OpConsultAttribute.values()).forEach(templateAttribute -> {
88+
allConfigurationKeys.add(templateAttribute.getMapping());
89+
});
90+
9091
allConfigurationKeys.add(CONCEPT_MAP_RESOLUTION_KEY);
9192
}
9293

@@ -171,24 +172,6 @@ public String getMapping() {
171172
return mapping;
172173
}
173174
}
174-
public enum PhysicalExamination {
175-
HEIGHT("abdm.conceptMap.physicalExamination.height"),
176-
WEIGHT("abdm.conceptMap.physicalExamination.weight"),
177-
TEMPERATURE("abdm.conceptMap.physicalExamination.temperature"),
178-
SYSTOLICBP("abdm.conceptMap.physicalExamination.systolicBP"),
179-
DIASTOLICBP("abdm.conceptMap.physicalExamination.diastolicBP"),
180-
PULSE("abdm.conceptMap.physicalExamination.pulse");
181-
182-
private final String mapping;
183-
184-
PhysicalExamination(String mapping) {
185-
this.mapping = mapping;
186-
}
187-
188-
public String getMapping() {
189-
return mapping;
190-
}
191-
}
192175

193176
public enum HistoryAndExamination {
194177
CHIFF_COMPLAINT_TEMPLATE("abdm.conceptMap.historyExamination.chiefComplaintTemplate"),
@@ -231,6 +214,20 @@ public String getMapping() {
231214
}
232215
}
233216

217+
public enum OpConsultAttribute {
218+
PHYSICAl_EXAMINATION("abdm.conceptMap.opConsult.physicalExamination"),
219+
OTHER_OBSERVATIONS("abdm.conceptMap.opConsult.otherObservations");
220+
221+
private final String mapping;
222+
223+
OpConsultAttribute(String mapping) {
224+
this.mapping = mapping;
225+
}
226+
public String getMapping() {
227+
return mapping;
228+
}
229+
}
230+
234231
public Concept getProcedureObsRootConcept() {
235232
return lookupConcept(ProcedureAttribute.PROCEDURE_TEMPLATE.getMapping());
236233
}
@@ -254,13 +251,6 @@ public List<Concept> getHistoryExaminationConcepts(){
254251
return conceptList.stream().filter(Objects::nonNull).collect(Collectors.toList());
255252
}
256253

257-
public List<Concept> getPhysicalExaminationConcepts(){
258-
List<Concept> conceptList = new ArrayList<>();
259-
Arrays.stream(PhysicalExamination.values()).forEach(attribute ->
260-
conceptList.add(lookupConcept(attribute.getMapping())));
261-
return conceptList.stream().filter(Objects::nonNull).collect(Collectors.toList());
262-
}
263-
264254
public Map<ImmunizationAttribute, String> getImmunizationAttributeConfigs() {
265255
return immunizationAttributesMap;
266256
}
@@ -329,6 +319,10 @@ public List<Concept> getHiTypeDocumentTypes(HiTypeDocumentKind type) {
329319
return lookupConcepts(type.getMapping());
330320
}
331321

322+
public List<Concept> getOPConsultAttributeConcept(OpConsultAttribute type) {
323+
return lookupConcepts(type.getMapping());
324+
}
325+
332326
public List<String> getAllConfigurationKeys() {
333327
return allConfigurationKeys;
334328
}

0 commit comments

Comments
 (0)