Skip to content

Commit ac2ab13

Browse files
swatigogia2020N0-man
authored andcommitted
BAH-2258: Modifying obs query to fetch units as well
1 parent de7d936 commit ac2ab13

5 files changed

Lines changed: 92 additions & 1 deletion

File tree

api/src/main/java/org/bahmni/module/hip/api/dao/EncounterDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.bahmni.module.hip.api.dao;
22

3+
import org.bahmni.module.hip.model.PatientObs;
34
import org.openmrs.Encounter;
45
import org.openmrs.Obs;
56
import org.openmrs.Order;
@@ -14,6 +15,7 @@ public interface EncounterDao {
1415
List<Order> GetOrdersForVisit(Visit visit);
1516
List<Encounter> GetEncountersForVisit(Visit visit, String encounterType);
1617
List<Obs> GetAllObsForVisit(Visit visit, String encounterType, String conceptName);
18+
List<PatientObs> GetAllObservationsForVisit(Visit visit, String encounterType, String conceptName);
1719
List<Integer> GetEncounterIdsForProgramForPrescriptions(String patientUUID, String program, String programEnrollmentID, Date fromDate, Date toDate) ;
1820
List<Integer> GetEncounterIdsForProgramForDiagnosticReport(String patientUUID, String program, String programEnrollmentID, Date fromDate, Date toDate);
1921
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.bahmni.module.hip.api.dao;
2+
3+
import org.openmrs.Obs;
4+
5+
import java.util.List;
6+
7+
public interface ObsDao {
8+
List<String> getObsUnits(Obs obs);
9+
10+
}

api/src/main/java/org/bahmni/module/hip/api/dao/impl/EncounterDaoImpl.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import org.bahmni.module.hip.Config;
44
import org.bahmni.module.hip.api.dao.EncounterDao;
5+
import org.bahmni.module.hip.api.dao.ObsDao;
6+
import org.bahmni.module.hip.model.PatientObs;
57
import org.hibernate.Query;
68
import org.hibernate.SessionFactory;
79
import org.openmrs.Encounter;
@@ -23,10 +25,12 @@
2325
public class EncounterDaoImpl implements EncounterDao {
2426

2527
private SessionFactory sessionFactory;
28+
private final ObsDao obsDao;
2629

2730
@Autowired
28-
public EncounterDaoImpl(SessionFactory sessionFactory) {
31+
public EncounterDaoImpl(SessionFactory sessionFactory, ObsDao obsDao) {
2932
this.sessionFactory = sessionFactory;
33+
this.obsDao = obsDao;
3034
}
3135

3236
private String sqlGetEpisodeEncounterIds = "select\n" +
@@ -161,6 +165,26 @@ public List<Obs> GetAllObsForVisit(Visit visit, String encounterType, String con
161165
return observations;
162166
}
163167

168+
@Override
169+
public List<PatientObs> GetAllObservationsForVisit(Visit visit, String encounterType, String conceptName) {
170+
List<Obs> observations = new ArrayList<>();
171+
List<Encounter> encounters = GetEncountersForVisit(visit,encounterType);
172+
for (Encounter encounter : encounters) {
173+
if(conceptName == null)
174+
observations.addAll(encounter.getAllObs());
175+
observations.addAll(encounter.getAllObs().stream()
176+
.filter(o -> Objects.equals(o.getConcept().getName().getName(), conceptName))
177+
.collect(Collectors.toList()));
178+
}
179+
180+
List<PatientObs> patientObs = new ArrayList<>();
181+
for(Obs obs: observations){
182+
PatientObs patientObs1 = new PatientObs(obsDao.getObsUnits(obs).toString(), obs);
183+
patientObs.add(patientObs1);
184+
}
185+
return patientObs;
186+
}
187+
164188
@Override
165189
public List<Order> GetOrdersForVisit(Visit visit) {
166190
List<Integer> episodeEncounters = GetEpisodeEncounterIds();
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.bahmni.module.hip.api.dao.impl;
2+
3+
import org.bahmni.module.hip.api.dao.ObsDao;
4+
import org.hibernate.Query;
5+
import org.hibernate.SessionFactory;
6+
import org.openmrs.Obs;
7+
import org.springframework.stereotype.Repository;
8+
9+
import java.util.List;
10+
@Repository
11+
public class ObsDaoImpl implements ObsDao {
12+
13+
private SessionFactory sessionFactory;
14+
15+
private String sqlGetObsUnits= "select units from concept_numeric as cn join obs on cn.concept_id=obs.concept_id where obs_id = :obsId ; ";
16+
17+
@Override
18+
public List<String> getObsUnits(Obs obs){
19+
Query query = this.sessionFactory.getCurrentSession().createSQLQuery(sqlGetObsUnits);
20+
query.setParameter("obsId", obs.getObsId());
21+
22+
return query.list();
23+
}
24+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.bahmni.module.hip.model;
2+
3+
import org.openmrs.Obs;
4+
5+
public class PatientObs {
6+
protected String units;
7+
protected Obs obs;
8+
9+
public PatientObs(String units, Obs obs){
10+
this.units = units;
11+
this.obs = obs;
12+
}
13+
14+
public void setUnits(String units){
15+
this.units = units;
16+
}
17+
18+
public String getUnits(){
19+
return this.units;
20+
}
21+
22+
public void setObs(Obs obs){
23+
this.obs = obs;
24+
}
25+
26+
public Obs getObs() {
27+
return obs;
28+
}
29+
30+
31+
}

0 commit comments

Comments
 (0)