Skip to content

Commit

Permalink
Merge pull request #2059 from njorocs/dmi-case-report
Browse files Browse the repository at this point in the history
Dmi case report
  • Loading branch information
makombe authored Nov 19, 2024
2 parents 1256096 + c1c376d commit 33d8dcd
Show file tree
Hide file tree
Showing 14 changed files with 700 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.openmrs.module.kenyaemr.metadata.CommonMetadata;
import org.openmrs.module.kenyaemr.reporting.cohort.definition.dmi.casereport.CaseComplaintsCohortDefinition;
import org.openmrs.module.kenyaemr.reporting.cohort.definition.dmi.casereport.CaseDiagnosisCohortDefinition;
import org.openmrs.module.kenyaemr.reporting.cohort.definition.dmi.casereport.CaseLabsCohortDefinition;
import org.openmrs.module.kenyaemr.reporting.cohort.definition.dmi.casereport.CaseVitalsCohortDefinition;
import org.openmrs.module.kenyaemr.reporting.cohort.definition.dmi.casereport.IllCasesCohortDefinition;
import org.openmrs.module.kenyaemr.reporting.data.converter.CalculationResultConverter;
Expand All @@ -42,6 +43,11 @@
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport.FinalPatientManagementOutcomeDataDefinition;
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport.FinalPatientManagementOutcomeDateDataDefinition;
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport.InterviewDateDataDefinition;
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport.LabOrderDateDataDefinition;
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport.LabOrderIdDataDefinition;
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport.LabOrderCaseUniqueIdDataDefinition;
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport.LabOrderTestNameDataDefinition;
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport.LabOrderTestResultDataDefinition;
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport.OutpatientDateDataDefinition;
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport.VitalSignsDateDataDefinition;
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport.VitalsCaseUniqueIdDataDefinition;
Expand Down Expand Up @@ -89,8 +95,8 @@ protected List<Mapped<DataSetDefinition>> buildDataSets(ReportDescriptor descrip
ReportUtils.map(illnessCasesDataSetDefinitionColumns(), "startDate=${startDate},endDate=${endDate}"),
ReportUtils.map(complaintDataSetDefinitionColumns(), "startDate=${startDate},endDate=${endDate}"),
ReportUtils.map(diagnosisDataSetDefinitionColumns(), "startDate=${startDate},endDate=${endDate}"),
ReportUtils.map(vitalSignsDataSetDefinitionColumns(), "startDate=${startDate},endDate=${endDate}")/*,
ReportUtils.map(labsDataSetDefinitionColumns(),"startDate=${startDate},endDate=${endDate}")*/
ReportUtils.map(vitalSignsDataSetDefinitionColumns(), "startDate=${startDate},endDate=${endDate}"),
ReportUtils.map(LabsDataSetDefinitionColumns(),"startDate=${startDate},endDate=${endDate}")
);
}

Expand Down Expand Up @@ -305,7 +311,6 @@ protected DataSetDefinition vitalSignsDataSetDefinitionColumns() {
dsd.addColumn("Respiratory Rate", vitalsRespiratoryRateDataDefinition, paramMapping);
dsd.addColumn("Oxygen Saturation", vitalsOxygenSaturationDataDefinition, paramMapping);
dsd.addColumn("Oxygen Saturation Mode", vitalsOxygenSaturationModeDataDefinition, paramMapping);
// dsd.addColumn("Oxygen Signs Id", vitalsSignsIdDataDefinition, paramMapping);
dsd.addColumn("Vital Signs Date", vitalSignsDateDataDefinition, paramMapping);

CaseVitalsCohortDefinition cd = new CaseVitalsCohortDefinition();
Expand All @@ -315,4 +320,57 @@ protected DataSetDefinition vitalSignsDataSetDefinitionColumns() {
return dsd;
}

protected DataSetDefinition LabsDataSetDefinitionColumns() {
VisitDataSetDefinition dsd = new VisitDataSetDefinition();
dsd.setName("labs");
dsd.setDescription("Cases Labs information");
dsd.addParameter(new Parameter("startDate", "Start Date", Date.class));
dsd.addParameter(new Parameter("endDate", "End Date", Date.class));
String paramMapping = "startDate=${startDate},endDate=${endDate}";

LabOrderCaseUniqueIdDataDefinition labOrdersCaseUniqueIdDataDefinition = new LabOrderCaseUniqueIdDataDefinition();
labOrdersCaseUniqueIdDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class));
labOrdersCaseUniqueIdDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class));

LabOrderIdDataDefinition labOrderIdDataDefinition = new LabOrderIdDataDefinition();
labOrderIdDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class));
labOrderIdDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class));

LabOrderTestResultDataDefinition labOrderTestResultDataDefinition = new LabOrderTestResultDataDefinition();
labOrderTestResultDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class));
labOrderTestResultDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class));

LabOrderDateDataDefinition labOrderDateDataDefinition = new LabOrderDateDataDefinition();
labOrderDateDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class));
labOrderDateDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class));

LabOrderTestNameDataDefinition labOrderTestNameDataDefinition = new LabOrderTestNameDataDefinition();
labOrderTestNameDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class));
labOrderTestNameDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class));

VitalsOxygenSaturationModeDataDefinition vitalsOxygenSaturationModeDataDefinition = new VitalsOxygenSaturationModeDataDefinition();
vitalsOxygenSaturationModeDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class));
vitalsOxygenSaturationModeDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class));

VitalsSignsIdDataDefinition vitalsSignsIdDataDefinition = new VitalsSignsIdDataDefinition();
vitalsSignsIdDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class));
vitalsSignsIdDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class));

VitalSignsDateDataDefinition vitalSignsDateDataDefinition = new VitalSignsDateDataDefinition();
vitalSignsDateDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class));
vitalSignsDateDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class));

dsd.addColumn("Lab Case Unique Id", labOrdersCaseUniqueIdDataDefinition, paramMapping);
dsd.addColumn("Lab Order Id", labOrderIdDataDefinition, paramMapping);
dsd.addColumn("Lab Test Date", labOrderDateDataDefinition, paramMapping);
dsd.addColumn("Lab Test Name", labOrderTestNameDataDefinition, paramMapping);
dsd.addColumn("Lab Test Result", labOrderTestResultDataDefinition, paramMapping);

CaseLabsCohortDefinition cd = new CaseLabsCohortDefinition();
cd.addParameter(new Parameter("startDate", "Start Date", Date.class));
cd.addParameter(new Parameter("endDate", "End Date", Date.class));
dsd.addRowFilter(cd, paramMapping);
return dsd;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,15 @@ public VisitQueryResult evaluate(VisitQuery visitQuery, EvaluationContext contex
context = ObjectUtil.nvl(context, new EvaluationContext());
VisitQueryResult queryResult = new VisitQueryResult(visitQuery, context);

String qry = "";
String qry = "WITH FilteredOrders AS (SELECT patient_id,\n" +
" encounter_id\n" +
" FROM orders\n" +
" WHERE order_type_id = 3 group by patient_id, encounter_id)\n" +
"select v.visit_id\n" +
"from visit v\n" +
" inner join encounter e on v.visit_id = e.visit_id\n" +
" inner join FilteredOrders o on o.encounter_id = e.encounter_id\n" +
"where date(v.date_started) between date(:startDate) and date(:endDate);";

SqlQueryBuilder builder = new SqlQueryBuilder();
builder.append(qry);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport;

import org.openmrs.module.reporting.data.BaseDataDefinition;
import org.openmrs.module.reporting.data.visit.definition.VisitDataDefinition;
import org.openmrs.module.reporting.definition.configuration.ConfigurationPropertyCachingStrategy;
import org.openmrs.module.reporting.evaluation.caching.Caching;

/**
*Visit Date Column
*/
@Caching(strategy = ConfigurationPropertyCachingStrategy.class)
public class LabOrderCaseUniqueIdDataDefinition extends BaseDataDefinition implements VisitDataDefinition {

public static final long serialVersionUID = 1L;

/**
* Default Constructor
*/
public LabOrderCaseUniqueIdDataDefinition() {
super();
}

/**
* Constructor to populate name only
*/
public LabOrderCaseUniqueIdDataDefinition(String name) {
super(name);
}

//***** INSTANCE METHODS *****

/**
* @see org.openmrs.module.reporting.data.DataDefinition#getDataType()
*/
public Class<?> getDataType() {
return Double.class;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport;

import org.openmrs.module.reporting.data.BaseDataDefinition;
import org.openmrs.module.reporting.data.visit.definition.VisitDataDefinition;
import org.openmrs.module.reporting.definition.configuration.ConfigurationPropertyCachingStrategy;
import org.openmrs.module.reporting.evaluation.caching.Caching;

/**
*Visit Date Column
*/
@Caching(strategy = ConfigurationPropertyCachingStrategy.class)
public class LabOrderDateDataDefinition extends BaseDataDefinition implements VisitDataDefinition {

public static final long serialVersionUID = 1L;

/**
* Default Constructor
*/
public LabOrderDateDataDefinition() {
super();
}

/**
* Constructor to populate name only
*/
public LabOrderDateDataDefinition(String name) {
super(name);
}

//***** INSTANCE METHODS *****

/**
* @see org.openmrs.module.reporting.data.DataDefinition#getDataType()
*/
public Class<?> getDataType() {
return Double.class;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport;

import org.openmrs.module.reporting.data.BaseDataDefinition;
import org.openmrs.module.reporting.data.visit.definition.VisitDataDefinition;
import org.openmrs.module.reporting.definition.configuration.ConfigurationPropertyCachingStrategy;
import org.openmrs.module.reporting.evaluation.caching.Caching;

/**
*Visit Date Column
*/
@Caching(strategy = ConfigurationPropertyCachingStrategy.class)
public class LabOrderIdDataDefinition extends BaseDataDefinition implements VisitDataDefinition {

public static final long serialVersionUID = 1L;

/**
* Default Constructor
*/
public LabOrderIdDataDefinition() {
super();
}

/**
* Constructor to populate name only
*/
public LabOrderIdDataDefinition(String name) {
super(name);
}

//***** INSTANCE METHODS *****

/**
* @see org.openmrs.module.reporting.data.DataDefinition#getDataType()
*/
public Class<?> getDataType() {
return Double.class;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport;

import org.openmrs.module.reporting.data.BaseDataDefinition;
import org.openmrs.module.reporting.data.visit.definition.VisitDataDefinition;
import org.openmrs.module.reporting.definition.configuration.ConfigurationPropertyCachingStrategy;
import org.openmrs.module.reporting.evaluation.caching.Caching;

/**
*Visit Date Column
*/
@Caching(strategy = ConfigurationPropertyCachingStrategy.class)
public class LabOrderTestNameDataDefinition extends BaseDataDefinition implements VisitDataDefinition {

public static final long serialVersionUID = 1L;

/**
* Default Constructor
*/
public LabOrderTestNameDataDefinition() {
super();
}

/**
* Constructor to populate name only
*/
public LabOrderTestNameDataDefinition(String name) {
super(name);
}

//***** INSTANCE METHODS *****

/**
* @see org.openmrs.module.reporting.data.DataDefinition#getDataType()
*/
public Class<?> getDataType() {
return Double.class;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs.module.kenyaemr.reporting.data.converter.definition.dmi.casereport;

import org.openmrs.module.reporting.data.BaseDataDefinition;
import org.openmrs.module.reporting.data.visit.definition.VisitDataDefinition;
import org.openmrs.module.reporting.definition.configuration.ConfigurationPropertyCachingStrategy;
import org.openmrs.module.reporting.evaluation.caching.Caching;

/**
*Visit Date Column
*/
@Caching(strategy = ConfigurationPropertyCachingStrategy.class)
public class LabOrderTestResultDataDefinition extends BaseDataDefinition implements VisitDataDefinition {

public static final long serialVersionUID = 1L;

/**
* Default Constructor
*/
public LabOrderTestResultDataDefinition() {
super();
}

/**
* Constructor to populate name only
*/
public LabOrderTestResultDataDefinition(String name) {
super(name);
}

//***** INSTANCE METHODS *****

/**
* @see org.openmrs.module.reporting.data.DataDefinition#getDataType()
*/
public Class<?> getDataType() {
return Double.class;
}
}
Loading

0 comments on commit 33d8dcd

Please sign in to comment.