Skip to content

Commit 3291916

Browse files
Merge pull request #83 from BahmniIndiaDistro/BAH-2371
BAH-2371 | To get consultation image and video upload as attachment
2 parents 9dcc2a5 + 3d0963b commit 3291916

8 files changed

Lines changed: 44 additions & 12 deletions

File tree

api/src/main/java/org/bahmni/module/hip/Config.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,12 @@ public enum Config {
2929
LAB_REPORT( "LAB_REPORT"),
3030
RADIOLOGY_ORDER( "Radiology Order"),
3131
LAB_ORDER( "Lab Order"),
32+
IMAGE("Image"),
33+
PATIENT_VIDEO("Patient Video"),
3234

3335
//Physical_Examination_Ignoring_Form_List
3436
Forms_To_Ignore_In_Physical_Examination("Discharge Summary, Death Note, Delivery Note, Opioid Substitution Therapy - Intake, Opportunistic Infection, " +
35-
"Safe Abortion, ECG Notes, Operative Notes, USG Notes, Procedure Notes,Triage Reference, History and Examination, Visit Diagnoses"),
37+
"Safe Abortion, ECG Notes, Operative Notes, USG Notes, Procedure Notes,Triage Reference, History and Examination, Visit Diagnoses, Patient Video"),
3638

3739

3840
PROP_HFR_ID("bahmniHip.healthFacilityRegistryId"),

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ public interface OPConsultDao {
1717
List<Obs> getProceduresForProgram(String programName, Date fromDate, Date toDate, Patient patient);
1818
Map<Encounter, List<Condition>> getMedicalHistoryConditionsForProgram(String programName, Date fromDate, Date toDate, Patient patient);
1919
List<Obs> getMedicalHistoryDiagnosisForProgram(String programName, Date fromDate, Date toDate, Patient patient);
20+
Map<Encounter, List<Obs>> getPatientDocumentsForVisit(Visit visit);
2021
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ public List<Obs> getAllObs(String programName, Date fromDate, Date toDate, Patie
9191
public List<Obs> getPhysicalExamination(Visit visit) {
9292
final String[] formNames = Config.Forms_To_Ignore_In_Physical_Examination.getValue().split("\\s*,\\s*");
9393
List<Obs> physicalExaminationObsMap = encounterDao.GetAllObsForVisit(visit,Config.CONSULTATION.getValue(),null)
94-
.stream().filter(o -> o.getValueCoded() == null && o.getObsGroup() == null
94+
.stream().filter(o -> o.getValueCoded() == null
95+
&& o.getObsGroup() == null
9596
&& !Arrays.asList(formNames).contains(o.getConcept().getName().getName()) )
9697
.collect(Collectors.toList());
9798
return physicalExaminationObsMap;

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,20 @@ public List<Obs> getMedicalHistoryDiagnosisForProgram(String programName, Date f
212212
return obsSet;
213213
}
214214

215+
public Map<Encounter, List<Obs>> getPatientDocumentsForVisit(Visit visit){
216+
List<Obs> patientObs = encounterDao.GetAllObsForVisit(visit, Config.PATIENT_DOCUMENT.getValue(), Config.DOCUMENT_TYPE.getValue());
217+
patientObs.addAll(encounterDao.GetAllObsForVisit(visit, Config.CONSULTATION.getValue(), Config.IMAGE.getValue()));
218+
patientObs.addAll(encounterDao.GetAllObsForVisit(visit, Config.CONSULTATION.getValue(), Config.PATIENT_VIDEO.getValue()));
219+
HashMap<Encounter, List<Obs>> encounterListMap = new HashMap<>();
220+
for (Obs obs: patientObs) {
221+
Encounter encounter = obs.getEncounter();
222+
if(!encounterListMap.containsKey(encounter))
223+
encounterListMap.put(encounter, new ArrayList<Obs>(){{ add(obs); }});
224+
else
225+
encounterListMap.get(encounter).add(obs);
226+
}
227+
return encounterListMap;
228+
}
215229

216230
private org.openmrs.module.emrapi.conditionslist.Condition convertCoreConditionToEmrapiCondition(org.openmrs.Condition coreCondition) {
217231
org.openmrs.module.emrapi.conditionslist.Condition cListCondition = new org.openmrs.module.emrapi.conditionslist.Condition();

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,9 @@ public class Constants {
1212
static final String GIF = "gif";
1313
static final String PDF = "pdf";
1414
static final String MIMETYPE_PDF = "application/pdf";
15+
static final String MIMETYPE_VIDEO_MPEG = "video/mpeg";
16+
static final String MIMETYPE_VIDEO_MP4 = "video/mp4";
17+
static final String MP4 = "mp4";
18+
static final String MPEG = "mpeg";
19+
1520
}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class ConsultationService {
3030
private final OPConsultDao opConsultDao;
3131
private final DiagnosticReportService diagnosticReportService;
3232

33-
public static Set<String> conceptNames = new HashSet<>(Arrays.asList("Tuberculosis, Treatment Plan","Tuberculosis, Next Followup Visit","Tuberculosis, Plan for next visit","Tuberculosis, Patient Category","Current Followup Visit After",
33+
public static Set<String> conceptNames = new HashSet<>(Arrays.asList("Image","Tuberculosis, Treatment Plan","Tuberculosis, Next Followup Visit","Tuberculosis, Plan for next visit","Tuberculosis, Patient Category","Current Followup Visit After",
3434
"Tuberculosis, Plan for next visit","Malaria, Parents Name","Malaria, Death Date", "Childhood Illness, Vitamin A Capsules Provided","Childhood Illness, Albendazole Given","Childhood Illness, Referred out",
3535
"Childhood Illness, Vitamin A Capsules Provided","Childhood Illness, Albendazole Given","Nutrition, Bal Vita Provided by FCHV","Bal Vita Provided by FCHV","ART, Condoms given","HIVTC, Marital Status","Malaria, Contact number",
3636
"HIVTC, Transferred out", "HIVTC, Regimen when transferred out", "HIVTC, Date of transferred out", "HIVTC, Transferred out to", "HIVTC, Chief Complaint"));
@@ -75,9 +75,7 @@ public Map<Encounter, List<OpenMrsCondition>> getEncounterMedicalHistoryConditio
7575
}
7676

7777
public Map<Encounter, List<Obs>> getEncounterPatientDocumentsMap(Visit visit) {
78-
final int patientDocumentEncounterType = 9;
79-
Map<Encounter, List<Obs>> encounterDiagnosticReportsMap = diagnosticReportService.getAllObservationsForVisits(visit);
80-
return getEncounterListMapForPatientDocument(patientDocumentEncounterType, encounterDiagnosticReportsMap);
78+
return opConsultDao.getPatientDocumentsForVisit(visit);
8179
}
8280

8381
public Map<Encounter, List<Obs>> getEncounterPatientDocumentsMapForProgram(String programName, Date fromDate, Date toDate, Patient patient,String programEnrollmentId) {

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

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,14 +184,15 @@ public DocumentReference mapToDocumentDocumentReference(Obs obs) {
184184
private List<Attachment> getAttachments(Obs obs) throws IOException {
185185
List<Attachment> attachments = new ArrayList<>();
186186
Attachment attachment = new Attachment();
187-
Set<Obs> obsList = obs.getGroupMembers();
188187
StringBuilder valueText = new StringBuilder();
189188
StringBuilder contentType = new StringBuilder();
190-
for(Obs obs1 : obsList){
191-
if(obs1.getConcept().getName().getName().equals(Config.DOCUMENT_TYPE.getValue())){
192-
valueText.append(obs1.getValueText());
193-
contentType.append(FHIRUtils.getTypeOfTheObsDocument(obs1.getValueText()));
194-
}
189+
if(obs.getConcept().getName().getName().equals(Config.DOCUMENT_TYPE.getValue())){
190+
valueText.append(obs.getValueText());
191+
contentType.append(FHIRUtils.getTypeOfTheObsDocument(obs.getValueText()));
192+
}
193+
if(obs.getConcept().getName().getName().equals(Config.IMAGE.getValue()) || obs.getConcept().getName().getName().equals(Config.PATIENT_VIDEO.getValue())){
194+
valueText.append(obs.getValueComplex());
195+
contentType.append(FHIRUtils.getTypeOfTheObsDocument(obs.getValueComplex()));
195196
}
196197
attachment.setContentType(contentType.toString());
197198
byte[] fileContent = Files.readAllBytes(new File(Config.PATIENT_DOCUMENTS_PATH.getValue() + valueText).toPath());
@@ -202,6 +203,8 @@ private List<Attachment> getAttachments(Obs obs) throws IOException {
202203
title.append(Config.PATIENT_DOCUMENT.getValue());
203204
else if(encounterId.equals(Config.RADIOLOGY_TYPE.getValue()))
204205
title.append(Config.RADIOLOGY_REPORT.getValue());
206+
else if(encounterId.equals(Config.CONSULTATION.getValue()))
207+
title.append("Consultation");
205208
title.append(": ").append(obs.getConcept().getName().getName());
206209
attachment.setTitle(title.toString());
207210
attachments.add(attachment);

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
import static org.bahmni.module.hip.web.service.Constants.JPG;
2323
import static org.bahmni.module.hip.web.service.Constants.MIMETYPE_IMAGE_JPEG;
2424
import static org.bahmni.module.hip.web.service.Constants.MIMETYPE_PDF;
25+
import static org.bahmni.module.hip.web.service.Constants.MIMETYPE_VIDEO_MP4;
26+
import static org.bahmni.module.hip.web.service.Constants.MIMETYPE_VIDEO_MPEG;
27+
import static org.bahmni.module.hip.web.service.Constants.MP4;
28+
import static org.bahmni.module.hip.web.service.Constants.MPEG;
2529
import static org.bahmni.module.hip.web.service.Constants.PDF;
2630
import static org.bahmni.module.hip.web.service.Constants.PNG;
2731

@@ -200,6 +204,10 @@ public static String getTypeOfTheObsDocument(String valueText) {
200204
return IMAGE + extension;
201205
} else if (extension.compareTo(PDF) == 0) {
202206
return MIMETYPE_PDF;
207+
} else if (extension.compareTo(MP4) == 0) {
208+
return MIMETYPE_VIDEO_MP4;
209+
} else if (extension.compareTo(MPEG) == 0) {
210+
return MIMETYPE_VIDEO_MPEG;
203211
} else {
204212
return "";
205213
}

0 commit comments

Comments
 (0)