Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MEPTS - 1617 | TX_RTT Changes for December 2024 Release #1303

Open
wants to merge 4 commits into
base: 2.x_develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ public EvaluatedCohort evaluate(CohortDefinition cohortDefinition, EvaluationCon
q.append(" ON e.encounter_id=o.encounter_id");
q.append(" WHERE p.voided = 0");
q.append(" AND e.voided = 0");
q.append(" AND o.voided = 0");
q.append(" AND o.concept_id = :preArtStateOfStay ");
q.append(" AND o.value_coded = :transfOutConcept ");
q.append(" AND e.encounter_type = :masterCard ");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2647,6 +2647,48 @@
public abstract String getSearchKey();
}

public enum semiQuantitativeCd4CountComparison {
LessThanOrEqualTo200mm3 {

Check warning on line 2651 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java#L2650-L2651

Added lines #L2650 - L2651 were not covered by tests
@Override
public String getProposition() {
return "o.value_coded = ${165513}";

Check warning on line 2654 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java#L2654

Added line #L2654 was not covered by tests
}

@Override
public String getCompositionString() {
return getSearchKey();

Check warning on line 2659 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java#L2659

Added line #L2659 was not covered by tests
}

@Override
public String getSearchKey() {
return "AA";

Check warning on line 2664 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java#L2664

Added line #L2664 was not covered by tests
}
},

GreaterThanOrEqualTo200mm3 {

Check warning on line 2668 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java#L2668

Added line #L2668 was not covered by tests
@Override
public String getProposition() {
return "o.value_coded =${1254}";

Check warning on line 2671 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java#L2671

Added line #L2671 was not covered by tests
}

@Override
public String getCompositionString() {
return getSearchKey();

Check warning on line 2676 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java#L2676

Added line #L2676 was not covered by tests
}

@Override
public String getSearchKey() {
return "BB";

Check warning on line 2681 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/AdvancedDiseaseAndTBCascadeCohortQueries.java#L2681

Added line #L2681 was not covered by tests
}
};

public abstract String getProposition();

public abstract String getCompositionString();

public abstract String getSearchKey();
}

private Map<String, Integer> getMetadata() {
Map<String, Integer> map = new HashMap<>();
map.put("6", hivMetadata.getAdultoSeguimentoEncounterType().getEncounterTypeId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3797,6 +3797,8 @@ public CohortDefinition getPatientsWhoAreTransferredIn(boolean isExclusion) {
hivMetadata
.getTransferredFromOtherHealthFacilityWorkflowState()
.getProgramWorkflowStateId(),
hivMetadata.getTypeOfPatientTransferredFrom().getConceptId(),
hivMetadata.getArtStatus().getConceptId(),
isExclusion));
return cd;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
*/
package org.openmrs.module.eptsreports.reporting.library.cohorts;

import static org.openmrs.module.eptsreports.reporting.utils.EptsReportUtils.map;

import java.util.*;
import org.apache.commons.text.StringSubstitutor;
import org.openmrs.EncounterType;
Expand Down Expand Up @@ -390,6 +388,7 @@

public CohortDefinition getPatientsWithCd4AndAge(
AdvancedDiseaseAndTBCascadeCohortQueries.Cd4CountComparison cd4,
AdvancedDiseaseAndTBCascadeCohortQueries.semiQuantitativeCd4CountComparison semiCd4,
Integer minAge,
Integer maxAge) {
CompositionCohortDefinition cd = new CompositionCohortDefinition();
Expand All @@ -398,7 +397,7 @@
cd.addParameter(new Parameter("startDate", "Start Date", Date.class));
cd.addParameter(new Parameter("endDate", "End Date", Date.class));

CohortDefinition getCd4Result = getCd4Result(cd4);
CohortDefinition getCd4Result = getCd4Result(cd4, semiCd4);

Check warning on line 400 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java#L400

Added line #L400 was not covered by tests
CohortDefinition age = ageCohortQueries.createXtoYAgeCohort("Age", minAge, maxAge);

cd.addSearch(
Expand All @@ -413,33 +412,37 @@
}

/**
* <b>Patients with an absolute CD4 result <200/mm3 registered in the following sources:</b>
* <b>Patients with an absolute CD4 result <200/mm3 or Semi-Quantitative registered in the
* following sources:</b>
*
* <ul>
* <li>CD4 absolute value at ART initiation marked on Ficha Resumo OR
* <li>Last CD4 absolute value marked on Ficha Resumo OR
* <li>CD4 absolute result marked in the Investigações - Resultados Laboratoriais section on
* Ficha Clínica OR
* <li>CD4 absolute result registered on the Lab Form OR
* <li>CD4 absolute result registered on the e-Lab Form
* <li>CD4 absolute value or semi-quantitative at ART initiation marked on Ficha Resumo OR
* <li>Last CD4 absolute value or semi-quantitative marked on Ficha Resumo OR
* <li>CD4 absolute result or semi-quantitative marked in the Investigações - Resultados
* Laboratoriais section on Ficha Clínica OR
* <li>CD4 absolute result or semi-quantitative registered on the Lab Form OR
* <li>CD4 absolute result or semi-quantitative registered on the e-Lab Form
* </ul>
*
* <p>The system will consider the oldest CD4 result date falling between patient ART Start Date -
* 90 days and ART Start Date + 28 days from the different sources listed above for the evaluation
* of the result (< 200).
* <p>The system will consider the oldest CD4 result date between patient ART Start Date - 90 days
* and ART Start Date + 28 days from the different sources listed above for the evaluation of the
* result (< 200).
*
* <p><b>Notes: </b>For the CD4 at ART initiation registered on Ficha Resumo, the “ART Start Date”
* that is registered on the same Ficha Resumo will be considered as the CD4 result date. For
* clients who have CD4 results ≥200/mm3 and <200/mm3 on the same, oldest date, the CD4 result
* <200/mm3 will be prioritized.
*
* @param cd4CountComparison
* @param semiQuantitativeCd4CountComparison
*/
public CohortDefinition getCd4Result(
AdvancedDiseaseAndTBCascadeCohortQueries.Cd4CountComparison cd4CountComparison) {
AdvancedDiseaseAndTBCascadeCohortQueries.Cd4CountComparison cd4CountComparison,
AdvancedDiseaseAndTBCascadeCohortQueries.semiQuantitativeCd4CountComparison
semiQuantitativeCd4CountComparison) {

SqlCohortDefinition cd = new SqlCohortDefinition();
cd.setName("Number of patientes who initiated TARV - Fila and ARV Pickup");
cd.setName("CD4 Results");

Check warning on line 445 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java#L445

Added line #L445 was not covered by tests
cd.addParameter(new Parameter("endDate", "End Date", Date.class));
cd.addParameter(new Parameter("location", "Location", Location.class));

Expand All @@ -456,78 +459,108 @@
map.put("1695", hivMetadata.getCD4AbsoluteOBSConcept().getConceptId());
map.put("23896", hivMetadata.getArtInitiationCd4Concept().getConceptId());
map.put("1190", hivMetadata.getARVStartDateConcept().getConceptId());
map.put("165515", hivMetadata.getCD4SemiQuantitativeConcept().getConceptId());
map.put("165513", hivMetadata.getCD4CountLessThanOrEqualTo200Concept().getConceptId());
map.put("1254", hivMetadata.getCD4CountGreaterThan200Concept().getConceptId());

Check warning on line 464 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java#L462-L464

Added lines #L462 - L464 were not covered by tests

CommonQueries commonQueries = new CommonQueries(new CommonMetadata(), new HivMetadata());

String query =
"SELECT p.patient_id "
+ "FROM patient p "
+ " INNER JOIN encounter e ON e.patient_id = p.patient_id "
+ " INNER JOIN obs o ON o.encounter_id = e.encounter_id "
+ " INNER JOIN obs o2 ON o2.encounter_id = e.encounter_id "
+ " INNER JOIN (SELECT e.patient_id,MIN(DATE(cd4.cd4_date)) cd4_date "
+ " FROM encounter e "
+ " INNER JOIN obs o ON o.encounter_id = e.encounter_id "
+ " INNER JOIN obs o2 ON o2.encounter_id = e.encounter_id "
+ " INNER JOIN ( "
+ "FROM patient p "
+ "INNER JOIN encounter e ON e.patient_id = p.patient_id "
+ "INNER JOIN obs o ON o.encounter_id = e.encounter_id "
+ "INNER JOIN obs o2 ON o2.encounter_id = e.encounter_id "
+ "INNER JOIN ( "
+ "SELECT e.patient_id, MIN(DATE(cd4.cd4_date)) cd4_date "
+ "FROM encounter e "
+ "INNER JOIN obs o ON o.encounter_id = e.encounter_id "
+ "INNER JOIN obs o2 ON o2.encounter_id = e.encounter_id "
+ "INNER JOIN ( "
+ commonQueries.getARTStartDate(true)
+ " ) art "
+ " ON art.patient_id = e.patient_id "
+ " INNER JOIN (SELECT e.patient_id,DATE(e.encounter_datetime) cd4_date "
+ " FROM encounter e "
+ " INNER JOIN obs o ON o.encounter_id = e.encounter_id "
+ " WHERE e.encounter_type IN ( ${6}, ${13}, ${51} ) "
+ " AND e.location_id = :location "
+ " AND DATE(e.encounter_datetime) <= :endDate "
+ " AND o.concept_id = ${1695} "
+ " AND e.voided = 0 "
+ " AND o.voided = 0 "
+ " UNION "
+ " SELECT e.patient_id,DATE(o.obs_datetime) AS cd4_date "
+ " FROM encounter e "
+ " INNER JOIN obs o ON o.encounter_id = e.encounter_id "
+ " WHERE e.encounter_type = ${53} "
+ " AND e.location_id = :location "
+ " AND e.voided = 0 "
+ " AND o.voided = 0 "
+ " AND o.concept_id = ${1695} "
+ " AND o.obs_datetime <= :endDate"
+ " UNION "
+ " SELECT e.patient_id,DATE(o2.value_datetime) AS cd4_date "
+ " FROM encounter e "
+ " INNER JOIN obs o ON o.encounter_id = e.encounter_id "
+ " INNER JOIN obs o2 ON o2.encounter_id = e.encounter_id "
+ " WHERE e.encounter_type = ${53} "
+ " AND e.location_id = :location "
+ " AND e.voided = 0 "
+ " AND o.voided = 0 "
+ " AND o2.voided = 0 "
+ " AND o.concept_id = ${23896} "
+ " AND o2.concept_id = ${1190} "
+ " AND o2.value_datetime <= :endDate"
+ " ) cd4 ON cd4.patient_id = e.patient_id "
+ " WHERE e.voided = 0 "
+ " AND o.voided = 0 "
+ " AND e.location_id = :location "
+ " AND o.value_numeric IS NOT NULL "
+ " AND ( ( DATE(e.encounter_datetime) BETWEEN DATE_SUB(art.first_pickup, INTERVAL 90 day) AND DATE_ADD(art.first_pickup, INTERVAL 28 day) "
+ " AND e.encounter_type IN ( ${6}, ${13}, ${51}) AND o.concept_id = ${1695} ) "
+ " OR ( ( DATE(o.obs_datetime) BETWEEN DATE_SUB(art.first_pickup, INTERVAL 90 day) AND DATE_ADD(art.first_pickup, INTERVAL 28 day) AND e.encounter_type = ${53} AND o.concept_id = ${1695} ) "
+ " OR ( DATE(o2.value_datetime) BETWEEN DATE_SUB(art.first_pickup, INTERVAL 90 day) AND DATE_ADD(art.first_pickup, INTERVAL 28 day) AND e.encounter_type = ${53} AND o.concept_id = ${23896} AND o2.concept_id = ${1190} AND o2.voided = 0) "
+ " ) "
+ " ) art ON art.patient_id = e.patient_id "
+ "INNER JOIN ( "
+ "SELECT e.patient_id, DATE(e.encounter_datetime) cd4_date "
+ "FROM encounter e "
+ "INNER JOIN obs o ON o.encounter_id = e.encounter_id "
+ "WHERE e.encounter_type IN (${6}, ${13}, ${51}) "
+ "AND e.location_id = :location "
+ "AND DATE(e.encounter_datetime) <= :endDate "
+ "AND o.concept_id IN (${1695}, ${165515}) "
+ "AND e.voided = 0 "
+ "AND o.voided = 0 "
+ "UNION "
+ "SELECT e.patient_id, DATE(o.obs_datetime) AS cd4_date "
+ "FROM encounter e "
+ "INNER JOIN obs o ON o.encounter_id = e.encounter_id "
+ "WHERE e.encounter_type = ${53} "
+ "AND e.location_id = :location "
+ "AND e.voided = 0 "
+ "AND o.voided = 0 "
+ "AND o.concept_id IN (${1695}, ${165515}) "
+ "AND o.obs_datetime <= :endDate "
+ "UNION "
+ "SELECT e.patient_id, DATE(o2.value_datetime) AS cd4_date "
+ "FROM encounter e "
+ "INNER JOIN obs o ON o.encounter_id = e.encounter_id "
+ "INNER JOIN obs o2 ON o2.encounter_id = e.encounter_id "
+ "WHERE e.encounter_type = ${53} "
+ "AND e.location_id = :location "
+ "AND e.voided = 0 "
+ "AND o.voided = 0 "
+ "AND o2.voided = 0 "
+ "AND o.concept_id = ${23896} "
+ "AND o2.concept_id = ${1190} "
+ "AND o2.value_datetime <= :endDate "
+ ") cd4 ON cd4.patient_id = e.patient_id "
+ "WHERE e.voided = 0 "
+ "AND o.voided = 0 "
+ "AND e.location_id = :location "
+ "AND o.value_numeric IS NOT NULL "
+ "AND ( "
+ "(DATE(e.encounter_datetime) BETWEEN DATE_SUB(art.first_pickup, INTERVAL 90 day) AND DATE_ADD(art.first_pickup, INTERVAL 28 day) "
+ "AND e.encounter_type IN (${6}, ${13}, ${51}) AND o.concept_id IN (${1695}, ${165515})) "
+ "OR ( "
+ "(DATE(o.obs_datetime) BETWEEN DATE_SUB(art.first_pickup, INTERVAL 90 day) AND DATE_ADD(art.first_pickup, INTERVAL 28 day) "
+ "AND e.encounter_type = ${53} AND o.concept_id IN (${1695}, ${165515})) "
+ "OR ( "
+ "DATE(o2.value_datetime) BETWEEN DATE_SUB(art.first_pickup, INTERVAL 90 day) AND DATE_ADD(art.first_pickup, INTERVAL 28 day) "
+ "AND e.encounter_type = ${53} AND o.concept_id = ${23896} AND o2.concept_id = ${1190} AND o2.voided = 0 "
+ ") "
+ ") "
+ ") "
+ "GROUP BY e.patient_id "
+ ") min_cd4 ON min_cd4.patient_id = p.patient_id "
+ "WHERE p.voided = 0 "
+ "AND e.voided = 0 "
+ "AND o.voided = 0 "
+ "AND e.location_id = :location "
+ "AND ( "
+ "(DATE(e.encounter_datetime) = min_cd4.cd4_date AND e.encounter_type IN (${6}, ${13}, ${51}) AND o.concept_id = ${1695} "
+ "AND "
+ cd4CountComparison.getProposition()

Check warning on line 541 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java#L541

Added line #L541 was not covered by tests
+ ") "
+ "OR ( "
+ "DATE(e.encounter_datetime) = min_cd4.cd4_date AND e.encounter_type IN (${6}, ${13}, ${51}) AND o.concept_id = ${165515} "
+ "AND "
+ semiQuantitativeCd4CountComparison.getProposition()

Check warning on line 546 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java#L546

Added line #L546 was not covered by tests
+ ") "
+ "OR ( "
+ "DATE(o.obs_datetime) = min_cd4.cd4_date AND e.encounter_type = ${53} AND o.concept_id = ${1695} "
+ "AND "
+ cd4CountComparison.getProposition()

Check warning on line 551 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java#L551

Added line #L551 was not covered by tests
+ ") "
+ "OR ( "
+ "DATE(o.obs_datetime) = min_cd4.cd4_date AND e.encounter_type = ${53} AND o.concept_id = ${165515} "
+ "AND "
+ semiQuantitativeCd4CountComparison.getProposition()

Check warning on line 556 in api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/eptsreports/reporting/library/cohorts/TxNewCohortQueries.java#L556

Added line #L556 was not covered by tests
+ ") "
+ "OR ( "
+ "DATE(o2.value_datetime) = min_cd4.cd4_date AND e.encounter_type = ${53} "
+ "AND o.concept_id = ${23896} AND o2.concept_id = ${1190} AND o2.voided = 0 "
+ ") "
+ ") "
+ " GROUP BY e.patient_id) min_cd4 ON min_cd4.patient_id = p.patient_id "
+ " WHERE p.voided = 0 "
+ " AND e.voided = 0 "
+ " AND o.voided = 0 "
+ " AND e.location_id = :location "
+ " AND ".concat(cd4CountComparison.getProposition())
+ " AND ( ( DATE(e.encounter_datetime) = min_cd4.cd4_date AND e.encounter_type IN ( ${6}, ${13}, ${51} ) AND o.concept_id = ${1695} ) "
+ " OR ( ( DATE(o.obs_datetime) = min_cd4.cd4_date AND e.encounter_type = ${53} AND o.concept_id = ${1695} ) "
+ " OR ( DATE(o2.value_datetime) = min_cd4.cd4_date AND e.encounter_type = ${53} AND o.concept_id = ${23896} AND o2.concept_id = ${1190} AND o2.voided = 0 )"
+ " ) "
+ " ) "
+ "GROUP BY p.patient_id";
+ "GROUP BY p.patient_id";

StringSubstitutor sb = new StringSubstitutor(map);
cd.setQuery(sb.replace(query));
Expand Down Expand Up @@ -588,6 +621,8 @@
CohortDefinition cd4Under200 =
getPatientsWithCd4AndAge(
AdvancedDiseaseAndTBCascadeCohortQueries.Cd4CountComparison.LessThanOrEqualTo200mm3,
AdvancedDiseaseAndTBCascadeCohortQueries.semiQuantitativeCd4CountComparison
.LessThanOrEqualTo200mm3,
5,
null);

Expand Down Expand Up @@ -653,12 +688,16 @@
CohortDefinition cd4Above200AndAge =
getPatientsWithCd4AndAge(
AdvancedDiseaseAndTBCascadeCohortQueries.Cd4CountComparison.GreaterThanOrEqualTo200mm3,
AdvancedDiseaseAndTBCascadeCohortQueries.semiQuantitativeCd4CountComparison
.GreaterThanOrEqualTo200mm3,
5,
null);

CohortDefinition cd4Under200AndAge =
getPatientsWithCd4AndAge(
AdvancedDiseaseAndTBCascadeCohortQueries.Cd4CountComparison.LessThanOrEqualTo200mm3,
AdvancedDiseaseAndTBCascadeCohortQueries.semiQuantitativeCd4CountComparison
.LessThanOrEqualTo200mm3,
5,
null);

Expand Down Expand Up @@ -705,12 +744,16 @@
CohortDefinition cd4Under200AndAge =
getPatientsWithCd4AndAge(
AdvancedDiseaseAndTBCascadeCohortQueries.Cd4CountComparison.LessThanOrEqualTo200mm3,
AdvancedDiseaseAndTBCascadeCohortQueries.semiQuantitativeCd4CountComparison
.LessThanOrEqualTo200mm3,
5,
null);

CohortDefinition cd4Above200AndAge =
getPatientsWithCd4AndAge(
AdvancedDiseaseAndTBCascadeCohortQueries.Cd4CountComparison.GreaterThanOrEqualTo200mm3,
AdvancedDiseaseAndTBCascadeCohortQueries.semiQuantitativeCd4CountComparison
.GreaterThanOrEqualTo200mm3,
5,
null);

Expand Down
Loading