-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #226 from njorocs/quality-of-care-assessment
Quality of care assessment
- Loading branch information
Showing
22 changed files
with
1,221 additions
and
1 deletion.
There are no files selected for viewing
182 changes: 182 additions & 0 deletions
182
api/src/main/java/org/openmrs/module/kenyaemrextras/reporting/HIVARTReportBuilder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,182 @@ | ||
/** | ||
* 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. | ||
* <p> | ||
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS | ||
* graphic logo is a trademark of OpenMRS Inc. | ||
*/ | ||
package org.openmrs.module.kenyaemrextras.reporting; | ||
|
||
import org.openmrs.PatientIdentifierType; | ||
import org.openmrs.module.kenyacore.report.HybridReportDescriptor; | ||
import org.openmrs.module.kenyacore.report.ReportDescriptor; | ||
import org.openmrs.module.kenyacore.report.ReportUtils; | ||
import org.openmrs.module.kenyacore.report.builder.AbstractHybridReportBuilder; | ||
import org.openmrs.module.kenyacore.report.builder.Builds; | ||
import org.openmrs.module.kenyacore.report.data.patient.definition.CalculationDataDefinition; | ||
import org.openmrs.module.kenyaemr.calculation.library.hiv.art.DateOfEnrollmentArtCalculation; | ||
import org.openmrs.module.kenyaemr.metadata.HivMetadata; | ||
import org.openmrs.module.kenyaemr.reporting.calculation.converter.DateArtStartDateConverter; | ||
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.art.*; | ||
import org.openmrs.module.kenyaemrextras.reporting.cohort.definition.ARTPedsQualityOfCareCohortDefinition; | ||
import org.openmrs.module.kenyaemrextras.reporting.data.definition.*; | ||
import org.openmrs.module.kenyaemrextras.reporting.data.definition.sims.SimsCTXDispensedDataDefinition; | ||
import org.openmrs.module.metadatadeploy.MetadataUtils; | ||
import org.openmrs.module.reporting.cohort.definition.CohortDefinition; | ||
import org.openmrs.module.reporting.data.DataDefinition; | ||
import org.openmrs.module.reporting.data.converter.BirthdateConverter; | ||
import org.openmrs.module.reporting.data.converter.DataConverter; | ||
import org.openmrs.module.reporting.data.converter.DateConverter; | ||
import org.openmrs.module.reporting.data.converter.ObjectFormatter; | ||
import org.openmrs.module.reporting.data.patient.definition.ConvertedPatientDataDefinition; | ||
import org.openmrs.module.reporting.data.patient.definition.PatientIdentifierDataDefinition; | ||
import org.openmrs.module.reporting.data.person.definition.*; | ||
import org.openmrs.module.reporting.dataset.definition.DataSetDefinition; | ||
import org.openmrs.module.reporting.dataset.definition.PatientDataSetDefinition; | ||
import org.openmrs.module.reporting.evaluation.parameter.Mapped; | ||
import org.openmrs.module.reporting.evaluation.parameter.Parameter; | ||
import org.openmrs.module.reporting.report.definition.ReportDefinition; | ||
import org.springframework.stereotype.Component; | ||
|
||
import java.util.Arrays; | ||
import java.util.Date; | ||
import java.util.List; | ||
|
||
@Component | ||
@Builds({ "kenyaemr.extras.report.HIVARTReport" }) | ||
public class HIVARTReportBuilder extends AbstractHybridReportBuilder { | ||
|
||
public static final String DATE_FORMAT = "dd/MM/yyyy"; | ||
|
||
/** | ||
* @see org.openmrs.module.kenyacore.report.builder.AbstractCohortReportBuilder#addColumns(org.openmrs.module.kenyacore.report.CohortReportDescriptor, | ||
* PatientDataSetDefinition) | ||
*/ | ||
@Override | ||
protected void addColumns(HybridReportDescriptor report, PatientDataSetDefinition dsd) { | ||
|
||
} | ||
|
||
@Override | ||
protected List<Parameter> getParameters(ReportDescriptor reportDescriptor) { | ||
return Arrays.asList(new Parameter("startDate", "Start Date", Date.class), new Parameter("endDate", "End Date", | ||
Date.class), new Parameter("dateBasedReporting", "", String.class)); | ||
} | ||
|
||
@Override | ||
protected Mapped<CohortDefinition> buildCohort(HybridReportDescriptor descriptor, PatientDataSetDefinition dsd) { | ||
return null; | ||
} | ||
|
||
protected Mapped<CohortDefinition> activePedsCohort() { | ||
CohortDefinition cd = new ARTPedsQualityOfCareCohortDefinition(); | ||
cd.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
cd.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
cd.setName("Active Peds"); | ||
return ReportUtils.map(cd, "startDate=${startDate},endDate=${endDate}"); | ||
} | ||
|
||
String paramMapping = "startDate=${startDate},endDate=${endDate}"; | ||
|
||
@Override | ||
protected List<Mapped<DataSetDefinition>> buildDataSets(ReportDescriptor descriptor, ReportDefinition report) { | ||
|
||
PatientDataSetDefinition activePedsDataSetDefinition = activePedsDataSetDefinition("activePeds"); | ||
activePedsDataSetDefinition.addRowFilter(activePedsCohort()); | ||
DataSetDefinition activePedsDSD = activePedsDataSetDefinition; | ||
|
||
return Arrays.asList(ReportUtils.map(activePedsDSD, "startDate=${startDate},endDate=${endDate}")); | ||
|
||
} | ||
|
||
protected PatientDataSetDefinition activePedsDataSetDefinition(String datasetName) { | ||
|
||
PatientDataSetDefinition dsd = new PatientDataSetDefinition(datasetName); | ||
String indParams = "startDate=${startDate},endDate=${endDate}"; | ||
|
||
dsd.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
dsd.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
|
||
PatientIdentifierType upn = MetadataUtils.existing(PatientIdentifierType.class, | ||
HivMetadata._PatientIdentifierType.UNIQUE_PATIENT_NUMBER); | ||
DataConverter identifierFormatter = new ObjectFormatter("{identifier}"); | ||
DataDefinition identifierDef = new ConvertedPatientDataDefinition("identifier", new PatientIdentifierDataDefinition( | ||
upn.getName(), upn), identifierFormatter); | ||
|
||
DataConverter nameFormatter = new ObjectFormatter("{familyName}, {givenName}"); | ||
DataDefinition nameDef = new ConvertedPersonDataDefinition("name", new PreferredNameDataDefinition(), nameFormatter); | ||
dsd.addColumn("id", new PersonIdDataDefinition(), ""); | ||
|
||
dsd.addColumn("CCC No", identifierDef, ""); | ||
dsd.addColumn("Date of Birth", new BirthdateDataDefinition(), "", new BirthdateConverter(DATE_FORMAT)); | ||
dsd.addColumn("Age", new AgeDataDefinition(), ""); | ||
|
||
dsd.addColumn("Sex", new GenderDataDefinition(), "", null); | ||
DQAWeightDataDefinition weightDataDefinition = new DQAWeightDataDefinition(); | ||
weightDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
weightDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
|
||
dsd.addColumn("Weight", weightDataDefinition, indParams, null); | ||
|
||
DQAHeightDataDefinition heightDataDefinition = new DQAHeightDataDefinition(); | ||
heightDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
heightDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
|
||
dsd.addColumn("Height", heightDataDefinition, indParams, null); | ||
|
||
dsd.addColumn("Date Enrolled in HIV Care", new CalculationDataDefinition("Enrollment Date", | ||
new DateOfEnrollmentArtCalculation()), "", new DateArtStartDateConverter()); | ||
|
||
ETLArtStartDateDataDefinition artInitiationDataDefinition = new ETLArtStartDateDataDefinition(); | ||
artInitiationDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
artInitiationDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
|
||
dsd.addColumn("Date Started ART", artInitiationDataDefinition, indParams, new DateConverter(DATE_FORMAT)); | ||
|
||
dsd.addColumn("Start Regimen", new ETLFirstRegimenDataDefinition(), ""); | ||
|
||
DQACurrentRegimenDataDefinition currentRegimenDataDefinition = new DQACurrentRegimenDataDefinition(); | ||
currentRegimenDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
currentRegimenDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
|
||
dsd.addColumn("Current Regimen", currentRegimenDataDefinition, indParams, null); | ||
dsd.addColumn("Baseline CD4 Date", new BaselineCD4DateDataDefinition(), "", null); | ||
dsd.addColumn("Baseline CD4", new DQABaselineCD4DataDefinition(), "", null); | ||
|
||
ETLLastVLDateDataDefinition lastVLDateDataDefinition = new ETLLastVLDateDataDefinition(); | ||
lastVLDateDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
lastVLDateDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
dsd.addColumn("Last VL date", lastVLDateDataDefinition, paramMapping, null); | ||
|
||
ETLLastVLResultDataDefinition lastVLResultDataDefinition = new ETLLastVLResultDataDefinition(); | ||
lastVLResultDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
lastVLResultDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
dsd.addColumn("Last VL result", lastVLResultDataDefinition, paramMapping, null); | ||
|
||
dsd.addColumn("CTX dispensed", new SimsCTXDispensedDataDefinition(), ""); | ||
|
||
DQATBScreeningLastVisitOutcomeDataDefinition tbScreeningOutcomeDataDefinition = new DQATBScreeningLastVisitOutcomeDataDefinition(); | ||
tbScreeningOutcomeDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
tbScreeningOutcomeDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
|
||
dsd.addColumn("TB Screening Outcome", tbScreeningOutcomeDataDefinition, indParams, null); | ||
|
||
ETLLastVisitDateDataDefinition lastVisitDateDataDefinition = new ETLLastVisitDateDataDefinition(); | ||
lastVisitDateDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
lastVisitDateDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
|
||
dsd.addColumn("Last Visit Date", lastVisitDateDataDefinition, "endDate=${endDate}", new DateConverter(DATE_FORMAT)); | ||
|
||
ETLNextAppointmentDateDataDefinition nextAppointmentDateDataDefinition = new ETLNextAppointmentDateDataDefinition(); | ||
nextAppointmentDateDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
nextAppointmentDateDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
|
||
dsd.addColumn("Next Appointment Date", nextAppointmentDateDataDefinition, "endDate=${endDate}", new DateConverter( | ||
DATE_FORMAT)); | ||
|
||
return dsd; | ||
} | ||
|
||
} |
138 changes: 138 additions & 0 deletions
138
api/src/main/java/org/openmrs/module/kenyaemrextras/reporting/HIVHTSReportBuilder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
/** | ||
* 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. | ||
* <p> | ||
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS | ||
* graphic logo is a trademark of OpenMRS Inc. | ||
*/ | ||
package org.openmrs.module.kenyaemrextras.reporting; | ||
|
||
import org.openmrs.PatientIdentifierType; | ||
import org.openmrs.module.kenyacore.report.HybridReportDescriptor; | ||
import org.openmrs.module.kenyacore.report.ReportDescriptor; | ||
import org.openmrs.module.kenyacore.report.ReportUtils; | ||
import org.openmrs.module.kenyacore.report.builder.AbstractHybridReportBuilder; | ||
import org.openmrs.module.kenyacore.report.builder.Builds; | ||
import org.openmrs.module.kenyaemr.metadata.HivMetadata; | ||
import org.openmrs.module.kenyaemr.reporting.data.converter.HTSEntryPointConverter; | ||
import org.openmrs.module.kenyaemr.reporting.data.converter.definition.art.*; | ||
import org.openmrs.module.kenyaemrextras.reporting.cohort.definition.HTSAdolescentsQualityOfCareCohortDefinition; | ||
import org.openmrs.module.kenyaemrextras.reporting.data.definition.*; | ||
import org.openmrs.module.metadatadeploy.MetadataUtils; | ||
import org.openmrs.module.reporting.cohort.definition.CohortDefinition; | ||
import org.openmrs.module.reporting.data.converter.BirthdateConverter; | ||
import org.openmrs.module.reporting.data.converter.DateConverter; | ||
import org.openmrs.module.reporting.data.person.definition.*; | ||
import org.openmrs.module.reporting.dataset.definition.DataSetDefinition; | ||
import org.openmrs.module.reporting.dataset.definition.PatientDataSetDefinition; | ||
import org.openmrs.module.reporting.evaluation.parameter.Mapped; | ||
import org.openmrs.module.reporting.evaluation.parameter.Parameter; | ||
import org.openmrs.module.reporting.report.definition.ReportDefinition; | ||
import org.springframework.stereotype.Component; | ||
|
||
import java.util.Arrays; | ||
import java.util.Date; | ||
import java.util.List; | ||
|
||
@Component | ||
@Builds({ "kenyaemr.extras.report.HIVHTSReport" }) | ||
public class HIVHTSReportBuilder extends AbstractHybridReportBuilder { | ||
|
||
public static final String DATE_FORMAT = "dd/MM/yyyy"; | ||
|
||
/** | ||
* @see org.openmrs.module.kenyacore.report.builder.AbstractCohortReportBuilder#addColumns(org.openmrs.module.kenyacore.report.CohortReportDescriptor, | ||
* PatientDataSetDefinition) | ||
*/ | ||
@Override | ||
protected void addColumns(HybridReportDescriptor report, PatientDataSetDefinition dsd) { | ||
|
||
} | ||
|
||
@Override | ||
protected List<Parameter> getParameters(ReportDescriptor reportDescriptor) { | ||
return Arrays.asList(new Parameter("startDate", "Start Date", Date.class), new Parameter("endDate", "End Date", | ||
Date.class), new Parameter("dateBasedReporting", "", String.class)); | ||
} | ||
|
||
@Override | ||
protected Mapped<CohortDefinition> buildCohort(HybridReportDescriptor descriptor, PatientDataSetDefinition dsd) { | ||
return null; | ||
} | ||
|
||
protected Mapped<CohortDefinition> htsAdolescentsCohort() { | ||
CohortDefinition cd = new HTSAdolescentsQualityOfCareCohortDefinition(); | ||
cd.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
cd.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
cd.setName("HTS Adolescents"); | ||
return ReportUtils.map(cd, "startDate=${startDate},endDate=${endDate}"); | ||
} | ||
|
||
String paramMapping = "startDate=${startDate},endDate=${endDate}"; | ||
|
||
@Override | ||
protected List<Mapped<DataSetDefinition>> buildDataSets(ReportDescriptor descriptor, ReportDefinition report) { | ||
|
||
PatientDataSetDefinition htsAdolescentsDataSetDefinition = htsAdolescentsDefinition("htsAdolescents"); | ||
htsAdolescentsDataSetDefinition.addRowFilter(htsAdolescentsCohort()); | ||
DataSetDefinition htsPedsDSD = htsAdolescentsDataSetDefinition; | ||
|
||
return Arrays.asList(ReportUtils.map(htsPedsDSD, "startDate=${startDate},endDate=${endDate}")); | ||
|
||
} | ||
|
||
protected PatientDataSetDefinition htsAdolescentsDefinition(String datasetName) { | ||
|
||
PatientDataSetDefinition dsd = new PatientDataSetDefinition(datasetName); | ||
String indParams = "startDate=${startDate},endDate=${endDate}"; | ||
|
||
dsd.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
dsd.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
|
||
PatientIdentifierType upn = MetadataUtils.existing(PatientIdentifierType.class, | ||
HivMetadata._PatientIdentifierType.UNIQUE_PATIENT_NUMBER); | ||
|
||
dsd.addColumn("id", new PersonIdDataDefinition(), ""); | ||
|
||
dsd.addColumn("Date of Birth", new BirthdateDataDefinition(), "", new BirthdateConverter(DATE_FORMAT)); | ||
dsd.addColumn("Age", new AgeDataDefinition(), ""); | ||
dsd.addColumn("Sex", new GenderDataDefinition(), "", null); | ||
|
||
HTSEntryPointDataDefinition entryPointDataDefinition = new HTSEntryPointDataDefinition(); | ||
entryPointDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
entryPointDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
dsd.addColumn("Entry Point", entryPointDataDefinition, indParams, new HTSEntryPointConverter()); | ||
|
||
HTSDateDataDefinition htsDateDataDefinition = new HTSDateDataDefinition(); | ||
htsDateDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
htsDateDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
dsd.addColumn("Date tested", htsDateDataDefinition, indParams, new DateConverter(DATE_FORMAT)); | ||
|
||
FinalHTSResultDataDefinition finalHTSResultDataDefinition = new FinalHTSResultDataDefinition(); | ||
finalHTSResultDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
finalHTSResultDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
dsd.addColumn("Final result", finalHTSResultDataDefinition, indParams, null); | ||
|
||
FinalHTSResultGivenDataDefinition finalHTSResultGivenDataDefinition = new FinalHTSResultGivenDataDefinition(); | ||
finalHTSResultGivenDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
finalHTSResultGivenDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
dsd.addColumn("Results Received", finalHTSResultGivenDataDefinition, indParams, null); | ||
|
||
RetestedBeforeARTInititionDataDefinition confirmatoryTestBeforeEnrollmentDataDefinition = new RetestedBeforeARTInititionDataDefinition(); | ||
confirmatoryTestBeforeEnrollmentDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
confirmatoryTestBeforeEnrollmentDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
|
||
dsd.addColumn("Confirmatory Tests Done Before Enrollment", confirmatoryTestBeforeEnrollmentDataDefinition, | ||
indParams, null); | ||
|
||
ReferredForServicesDataDefinition referredForServicesDataDefinition = new ReferredForServicesDataDefinition(); | ||
referredForServicesDataDefinition.addParameter(new Parameter("startDate", "Start Date", Date.class)); | ||
referredForServicesDataDefinition.addParameter(new Parameter("endDate", "End Date", Date.class)); | ||
|
||
dsd.addColumn("Referred for Services", referredForServicesDataDefinition, indParams, null); | ||
|
||
return dsd; | ||
} | ||
} |
52 changes: 52 additions & 0 deletions
52
...dule/kenyaemrextras/reporting/cohort/definition/ARTPedsQualityOfCareCohortDefinition.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
/** | ||
* 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.kenyaemrextras.reporting.cohort.definition; | ||
|
||
import org.openmrs.module.reporting.cohort.definition.BaseCohortDefinition; | ||
import org.openmrs.module.reporting.common.Localized; | ||
import org.openmrs.module.reporting.definition.configuration.ConfigurationProperty; | ||
import org.openmrs.module.reporting.definition.configuration.ConfigurationPropertyCachingStrategy; | ||
import org.openmrs.module.reporting.evaluation.caching.Caching; | ||
|
||
import java.util.Date; | ||
|
||
/** | ||
* Active on ART Peds definition | ||
*/ | ||
@Caching(strategy = ConfigurationPropertyCachingStrategy.class) | ||
@Localized("reporting.ARTPedsQualityOfCareCohortDefinition") | ||
public class ARTPedsQualityOfCareCohortDefinition extends BaseCohortDefinition { | ||
|
||
@ConfigurationProperty | ||
private Date startDate; | ||
|
||
@ConfigurationProperty | ||
private Date endDate; | ||
|
||
public ARTPedsQualityOfCareCohortDefinition() { | ||
} | ||
|
||
public Date getStartDate() { | ||
return startDate; | ||
} | ||
|
||
public void setStartDate(Date startDate) { | ||
this.startDate = startDate; | ||
} | ||
|
||
public Date getEndDate() { | ||
return endDate; | ||
} | ||
|
||
public void setEndDate(Date endDate) { | ||
this.endDate = endDate; | ||
} | ||
|
||
} |
Oops, something went wrong.