diff --git a/js/components/cohortbuilder/CriteriaGroup.js b/js/components/cohortbuilder/CriteriaGroup.js index 78280d603..f5787f87c 100644 --- a/js/components/cohortbuilder/CriteriaGroup.js +++ b/js/components/cohortbuilder/CriteriaGroup.js @@ -25,7 +25,7 @@ define(function (require, exports, module) { if (data.DemographicCriteriaList && data.DemographicCriteriaList.length > 0) { data.DemographicCriteriaList.forEach(function (d) { - self.DemographicCriteriaList.push(new DemographicCriteria(d)); + self.DemographicCriteriaList.push(new DemographicCriteria(d, conceptSets)); }); } diff --git a/js/components/cohortbuilder/CriteriaTypes/ConditionEra.js b/js/components/cohortbuilder/CriteriaTypes/ConditionEra.js index 52eb9a7a3..c628944a3 100644 --- a/js/components/cohortbuilder/CriteriaTypes/ConditionEra.js +++ b/js/components/cohortbuilder/CriteriaTypes/ConditionEra.js @@ -1,4 +1,4 @@ -define(['knockout', './Criteria', '../InputTypes/Range', 'conceptpicker/InputTypes/Concept'], function (ko, Criteria, Range, Concept) { +define(['knockout', './Criteria', '../InputTypes/Range', 'conceptpicker/InputTypes/Concept', '../InputTypes/ConceptSetSelection'], function (ko, Criteria, Range, Concept, ConceptSetSelection) { function ConditionEra(data, conceptSets) { var self = this; @@ -20,7 +20,6 @@ define(['knockout', './Criteria', '../InputTypes/Range', 'conceptpicker/InputTyp // Verbatim fields self.CodesetId = ko.observable(data.CodesetId); - self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); self.EraStartDate = ko.observable(data.EraStartDate && new Range(data.EraStartDate)); self.EraEndDate = ko.observable(data.EraEndDate && new Range(data.EraEndDate)); @@ -36,6 +35,8 @@ define(['knockout', './Criteria', '../InputTypes/Range', 'conceptpicker/InputTyp self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); + } ConditionEra.prototype = new Criteria(); diff --git a/js/components/cohortbuilder/CriteriaTypes/ConditionOccurrence.js b/js/components/cohortbuilder/CriteriaTypes/ConditionOccurrence.js index c62c8904c..38bccca4c 100644 --- a/js/components/cohortbuilder/CriteriaTypes/ConditionOccurrence.js +++ b/js/components/cohortbuilder/CriteriaTypes/ConditionOccurrence.js @@ -1,4 +1,5 @@ -define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text'], function (ko, Criteria, Range, Concept, Text) { +define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text', '../InputTypes/ConceptSetSelection' +], function (ko, Criteria, Range, Concept, Text,ConceptSetSelection) { function ConditionOccurrence(data, conceptSets) { var self = this; @@ -29,11 +30,14 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType return new Concept(d); }))); self.ConditionTypeExclude = ko.observable(data.ConditionTypeExclude || null); + self.ConditionTypeCS = ko.observable(data.ConditionTypeCS && new ConceptSetSelection(data.ConditionTypeCS, conceptSets)); + self.StopReason = ko.observable(data.StopReason && new Text(data.StopReason)); self.ConditionSourceConcept = ko.observable(data.ConditionSourceConcept != null ? ko.observable(data.ConditionSourceConcept) : null); self.ConditionStatus = ko.observable(data.ConditionStatus && ko.observableArray(data.ConditionStatus.map(function (d) { return new Concept(d); }))); + self.ConditionStatusCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.ConditionStatusCS, conceptSets)); // Derived Fields self.First = ko.observable(data.First || null); @@ -43,14 +47,17 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); self.ProviderSpecialty = ko.observable(data.ProviderSpecialty && ko.observableArray(data.ProviderSpecialty.map(function (d) { return new Concept(d); }))); + self.ProviderSpecialtyCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.ProviderSpecialtyCS, conceptSets)); self.VisitType = ko.observable(data.VisitType && ko.observableArray(data.VisitType.map(function (d) { return new Concept(d); }))); + self.VisitTypeCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.VisitTypeCS, conceptSets)); } diff --git a/js/components/cohortbuilder/CriteriaTypes/Death.js b/js/components/cohortbuilder/CriteriaTypes/Death.js index 071742356..d42b1873a 100644 --- a/js/components/cohortbuilder/CriteriaTypes/Death.js +++ b/js/components/cohortbuilder/CriteriaTypes/Death.js @@ -1,4 +1,5 @@ -define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text'], function (ko, Criteria, Range, Concept, Text) { +define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/ConceptSetSelection'], + function (ko, Criteria, Range, Concept, ConceptSetSelection) { function Death(data, conceptSets) { var self = this; @@ -28,6 +29,8 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType return new Concept(d); }))); self.DeathTypeExclude = ko.observable(data.DeathTypeExclude || null); + self.DeathTypeCS = ko.observable(data.DeathTypeCS && new ConceptSetSelection(data.DeathTypeCS, conceptSets)); + self.DeathSourceConcept = ko.observable(data.DeathSourceConcept != null ? ko.observable(data.DeathSourceConcept) : null); // Derived Fields self.Age = ko.observable(data.Age && new Range(data.Age)); @@ -36,11 +39,8 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); - /* Do we still need prior enroll days inside the individual criteria? - self.PriorEnrollDays = ko.observable((typeof data.PriorEnrollDays == "number") ? data.PriorEnrollDays : null); - self.AfterEnrollDays = ko.observable((typeof data.AfterEnrollDays == "number") ? data.AfterEnrollDays : null); - */ } Death.prototype = new Criteria(); diff --git a/js/components/cohortbuilder/CriteriaTypes/DemographicCriteria.js b/js/components/cohortbuilder/CriteriaTypes/DemographicCriteria.js index 8772c53a2..c7e87ddbd 100644 --- a/js/components/cohortbuilder/CriteriaTypes/DemographicCriteria.js +++ b/js/components/cohortbuilder/CriteriaTypes/DemographicCriteria.js @@ -1,4 +1,4 @@ -define(['knockout', '../InputTypes/Range', 'conceptpicker/InputTypes/Concept'], function (ko, Range, Concept) { +define(['knockout', '../InputTypes/Range', 'conceptpicker/InputTypes/Concept', '../InputTypes/ConceptSetSelection'], function (ko, Range, Concept, ConceptSetSelection) { function DemographicCriteria(data, conceptSets) { var self = this; @@ -9,14 +9,17 @@ define(['knockout', '../InputTypes/Range', 'conceptpicker/InputTypes/Concept'], self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); self.Race = ko.observable(data.Race && ko.observableArray(data.Race.map(function (d) { return new Concept(d); }))); + self.RaceCS = ko.observable(data.RaceCS && new ConceptSetSelection(data.RaceCS, conceptSets)); self.Ethnicity = ko.observable(data.Ethnicity && ko.observableArray(data.Ethnicity.map(function (d) { return new Concept(d); }))); + self.EthnicityCS = ko.observable(data.EthnicityCS && new ConceptSetSelection(data.EthnicityCS, conceptSets)); self.OccurrenceStartDate = ko.observable(data.OccurrenceStartDate && new Range(data.OccurrenceStartDate)); diff --git a/js/components/cohortbuilder/CriteriaTypes/DeviceExposure.js b/js/components/cohortbuilder/CriteriaTypes/DeviceExposure.js index cc3cafd51..0283b3775 100644 --- a/js/components/cohortbuilder/CriteriaTypes/DeviceExposure.js +++ b/js/components/cohortbuilder/CriteriaTypes/DeviceExposure.js @@ -1,4 +1,4 @@ -define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text'], function (ko, Criteria, Range, Concept, Text) { +define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text', '../InputTypes/ConceptSetSelection'], function (ko, Criteria, Range, Concept, Text, ConceptSetSelection) { function DeviceOccurence(data, conceptSets) { var self = this; @@ -29,6 +29,8 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType return new Concept(d); }))); self.DeviceTypeExclude = ko.observable(data.DeviceTypeExclude || null); + self.DeviceTypeCS = ko.observable(data.DeviceTypeCS && new ConceptSetSelection(data.DeviceTypeCS, conceptSets)); + self.UniqueDeviceId = ko.observable(data.UniqueDeviceId && new Text(data.StopReason)); self.Quantity = ko.observable(data.Quantity && new Range(data.Quantity)); self.DeviceSourceConcept = ko.observable(data.DeviceSourceConcept != null ? ko.observable(data.DeviceSourceConcept) : null); @@ -41,18 +43,17 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); - /* Do we still need prior enroll days inside the individual criteria? - self.PriorEnrollDays = ko.observable((typeof data.PriorEnrollDays == "number") ? data.PriorEnrollDays : null); - self.AfterEnrollDays = ko.observable((typeof data.AfterEnrollDays == "number") ? data.AfterEnrollDays : null); - */ - self.ProviderSpecialty = ko.observable(data.ProviderSpecialty && ko.observableArray(data.ProviderSpecialty.map(function (d) { return new Concept(d); }))); + self.ProviderSpecialtyCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); + self.VisitType = ko.observable(data.VisitType && ko.observableArray(data.VisitType.map(function (d) { return new Concept(d); }))); + self.VisitTypeCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.VisitTypeCS, conceptSets)); } diff --git a/js/components/cohortbuilder/CriteriaTypes/DoseEra.js b/js/components/cohortbuilder/CriteriaTypes/DoseEra.js index 1e7678d20..2dbf50d29 100644 --- a/js/components/cohortbuilder/CriteriaTypes/DoseEra.js +++ b/js/components/cohortbuilder/CriteriaTypes/DoseEra.js @@ -1,4 +1,4 @@ -define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept'], function (ko, Criteria, Range, Concept) { +define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/ConceptSetSelection'], function (ko, Criteria, Range, Concept, ConceptSetSelection) { function DoseEra(data, conceptSets) { var self = this; @@ -26,6 +26,8 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Unit = ko.observable(data.Unit && ko.observableArray(data.Unit.map(function (d) { return new Concept(d); }))); + self.UnitCS = ko.observable(data.UnitCS && new ConceptSetSelection(data.UnitCS, conceptSets)); + self.DoseValue = ko.observable(data.DoseValue && new Range(data.DoseValue)); self.EraLength = ko.observable(data.EraLength && new Range(data.EraLength)); @@ -38,6 +40,8 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); + } DoseEra.prototype = new Criteria(); diff --git a/js/components/cohortbuilder/CriteriaTypes/DrugEra.js b/js/components/cohortbuilder/CriteriaTypes/DrugEra.js index 3eefeabca..031e421b1 100644 --- a/js/components/cohortbuilder/CriteriaTypes/DrugEra.js +++ b/js/components/cohortbuilder/CriteriaTypes/DrugEra.js @@ -1,4 +1,4 @@ -define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept'], function (ko, Criteria, Range, Concept) { +define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/ConceptSetSelection'], function (ko, Criteria, Range, Concept, ConceptSetSelection) { function DrugEra(data, conceptSets) { var self = this; @@ -36,6 +36,7 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); } DrugEra.prototype = new Criteria(); diff --git a/js/components/cohortbuilder/CriteriaTypes/DrugExposure.js b/js/components/cohortbuilder/CriteriaTypes/DrugExposure.js index ae26fd020..ff1f8e2db 100644 --- a/js/components/cohortbuilder/CriteriaTypes/DrugExposure.js +++ b/js/components/cohortbuilder/CriteriaTypes/DrugExposure.js @@ -1,4 +1,5 @@ -define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text'], function (ko, Criteria, Range, Concept, Text) { +define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text','../InputTypes/ConceptSetSelection' +], function (ko, Criteria, Range, Concept, Text, ConceptSetSelection) { function DrugExposure(data, conceptSets) { var self = this; @@ -29,6 +30,7 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType return new Concept(d); }))); self.DrugTypeExclude = ko.observable(data.DrugTypeExclude || null); + self.DrugTypeCS = ko.observable(data.DrugTypeCS && new ConceptSetSelection(data.DrugTypeCS, conceptSets)); self.StopReason = ko.observable(data.StopReason && new Text(data.StopReason)); self.Refills = ko.observable(data.Refills && new Range(data.Refills)); self.Quantity = ko.observable(data.Quantity && new Range(data.Quantity)); @@ -36,10 +38,12 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.RouteConcept = ko.observable(data.RouteConcept && ko.observableArray(data.RouteConcept.map(function (d) { return new Concept(d); }))); + self.RouteConceptCS = ko.observable(data.RouteConceptCS && new ConceptSetSelection(data.RouteConceptCS, conceptSets)); self.EffectiveDrugDose = ko.observable(data.EffectiveDrugDose && new Range(data.EffectiveDrugDose)); self.DoseUnit = ko.observable(data.DoseUnit && ko.observableArray(data.DoseUnit.map(function (d) { return new Concept(d); }))); + self.DoseUnitCS = ko.observable(data.DoseUnitCS && new ConceptSetSelection(data.DoseUnitCS, conceptSets)); self.LotNumber = ko.observable(data.LotNumber && new Text(data.LotNumber)); self.DrugSourceConcept = ko.observable(data.DrugSourceConcept != null ? ko.observable(data.DrugSourceConcept) : null); @@ -51,18 +55,17 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); - /* Do we still need prior enroll days inside the individual criteria? - self.PriorEnrollDays = ko.observable((typeof data.PriorEnrollDays == "number") ? data.PriorEnrollDays : null); - self.AfterEnrollDays = ko.observable((typeof data.AfterEnrollDays == "number") ? data.AfterEnrollDays : null); - */ - self.ProviderSpecialty = ko.observable(data.ProviderSpecialty && ko.observableArray(data.ProviderSpecialty.map(function (d) { return new Concept(d); }))); + self.ProviderSpecialtyCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.ProviderSpecialtyCS, conceptSets)); + self.VisitType = ko.observable(data.VisitType && ko.observableArray(data.VisitType.map(function (d) { return new Concept(d); }))); + self.VisitTypeCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.VisitTypeCS, conceptSets)); } diff --git a/js/components/cohortbuilder/CriteriaTypes/Measurement.js b/js/components/cohortbuilder/CriteriaTypes/Measurement.js index 27077cfb8..fb3504174 100644 --- a/js/components/cohortbuilder/CriteriaTypes/Measurement.js +++ b/js/components/cohortbuilder/CriteriaTypes/Measurement.js @@ -1,4 +1,5 @@ -define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text'], function (ko, Criteria, Range, Concept, Text) { +define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/ConceptSetSelection' +], function (ko, Criteria, Range, Concept, ConceptSetSelection) { function Measurement(data, conceptSets) { var self = this; @@ -28,16 +29,20 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType return new Concept(d); }))); self.MeasurementTypeExclude = ko.observable(data.MeasurementTypeExclude || null); + self.MeasurementTypeCS = ko.observable(data.MeasurementTypeCS && new ConceptSetSelection(data.MeasurementTypeCS, conceptSets)); self.Operator = ko.observable(data.Operator && ko.observableArray(data.Operator.map(function (d) { return new Concept(d); }))); + self.OperatorCS = ko.observable(data.OperatorCS && new ConceptSetSelection(data.OperatorCS, conceptSets)); self.ValueAsNumber = ko.observable(data.ValueAsNumber && new Range(data.ValueAsNumber)); self.ValueAsConcept = ko.observable(data.ValueAsConcept && ko.observableArray(data.ValueAsConcept.map(function (d) { return new Concept(d); }))); + self.ValueAsConceptCS = ko.observable(data.ValueAsConceptCS && new ConceptSetSelection(data.ValueAsConceptCS, conceptSets)); self.Unit = ko.observable(data.Unit && ko.observableArray(data.Unit.map(function (d) { return new Concept(d); }))); + self.UnitCS = ko.observable(data.UnitCS && new ConceptSetSelection(data.UnitCS, conceptSets)); self.RangeLow = ko.observable(data.RangeLow && new Range(data.RangeLow)); self.RangeHigh = ko.observable(data.RangeHigh && new Range(data.RangeHigh)); self.MeasurementSourceConcept = ko.observable(data.MeasurementSourceConcept != null ? ko.observable(data.MeasurementSourceConcept) : null); @@ -52,18 +57,17 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); - /* Do we still need prior enroll days inside the individual criteria? - self.PriorEnrollDays = ko.observable((typeof data.PriorEnrollDays == "number") ? data.PriorEnrollDays : null); - self.AfterEnrollDays = ko.observable((typeof data.AfterEnrollDays == "number") ? data.AfterEnrollDays : null); - */ - self.ProviderSpecialty = ko.observable(data.ProviderSpecialty && ko.observableArray(data.ProviderSpecialty.map(function (d) { return new Concept(d); }))); + self.ProviderSpecialtyCS = ko.observable(data.ProviderSpecialtyCS && new ConceptSetSelection(data.ProviderSpecialtyCS, conceptSets)); + self.VisitType = ko.observable(data.VisitType && ko.observableArray(data.VisitType.map(function (d) { return new Concept(d); }))); + self.VisitTypeCS = ko.observable(data.VisitTypeCS && new ConceptSetSelection(data.VisitTypeCS, conceptSets)); } diff --git a/js/components/cohortbuilder/CriteriaTypes/Observation.js b/js/components/cohortbuilder/CriteriaTypes/Observation.js index e84a91480..94e956b6e 100644 --- a/js/components/cohortbuilder/CriteriaTypes/Observation.js +++ b/js/components/cohortbuilder/CriteriaTypes/Observation.js @@ -1,4 +1,5 @@ -define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text'], function (ko, Criteria, Range, Concept, Text) { +define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text', '../InputTypes/ConceptSetSelection' +], function (ko, Criteria, Range, Concept, Text, ConceptSetSelection) { function Observation(data, conceptSets) { var self = this; @@ -28,17 +29,21 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType return new Concept(d); }))); self.ObservationTypeExclude = ko.observable(data.ObservationTypeExclude || null); + self.ObservationTypeCS = ko.observable(data.ObservationTypeCS && new ConceptSetSelection(data.ObservationTypeCS, conceptSets)); self.ValueAsNumber = ko.observable(data.ValueAsNumber && new Range(data.ValueAsNumber)); self.ValueAsString = ko.observable(data.ValueAsString && new Text(data.ValueAsString)); self.ValueAsConcept = ko.observable(data.ValueAsConcept && ko.observableArray(data.ValueAsConcept.map(function (d) { return new Concept(d); }))); + self.ValueAsConceptCS = ko.observable(data.ValueAsConceptCS && new ConceptSetSelection(data.ValueAsConceptCS, conceptSets)); self.Qualifier = ko.observable(data.Qualifier && ko.observableArray(data.Qualifier.map(function (d) { return new Concept(d); }))); + self.QualifierCS = ko.observable(data.QualifierCS && new ConceptSetSelection(data.QualifierCS, conceptSets)); self.Unit = ko.observable(data.Unit && ko.observableArray(data.Unit.map(function (d) { return new Concept(d); }))); + self.UnitCS = ko.observable(data.UnitCS && new ConceptSetSelection(data.UnitCS, conceptSets)); self.ObservationSourceConcept = ko.observable(data.ObservationSourceConcept != null ? ko.observable(data.ObservationSourceConcept) : null); // Derived Fields @@ -49,18 +54,17 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); - - /* Do we still need prior enroll days inside the individual criteria? - self.PriorEnrollDays = ko.observable((typeof data.PriorEnrollDays == "number") ? data.PriorEnrollDays : null); - self.AfterEnrollDays = ko.observable((typeof data.AfterEnrollDays == "number") ? data.AfterEnrollDays : null); - */ + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); self.ProviderSpecialty = ko.observable(data.ProviderSpecialty && ko.observableArray(data.ProviderSpecialty.map(function (d) { return new Concept(d); }))); + self.ProviderSpecialtyCS = ko.observable(data.ProviderSpecialtyCS && new ConceptSetSelection(data.ProviderSpecialtyCS, conceptSets)); + self.VisitType = ko.observable(data.VisitType && ko.observableArray(data.VisitType.map(function (d) { return new Concept(d); }))); + self.VisitTypeCS = ko.observable(data.VisitTypeCS && new ConceptSetSelection(data.VisitTypeCS, conceptSets)); } diff --git a/js/components/cohortbuilder/CriteriaTypes/ObservationPeriod.js b/js/components/cohortbuilder/CriteriaTypes/ObservationPeriod.js index 428dfd36d..8e65f55b9 100644 --- a/js/components/cohortbuilder/CriteriaTypes/ObservationPeriod.js +++ b/js/components/cohortbuilder/CriteriaTypes/ObservationPeriod.js @@ -1,4 +1,5 @@ -define(['knockout', './Criteria', '../InputTypes/Range', '../InputTypes/Period', 'conceptpicker/InputTypes/Concept'], function (ko, Criteria, Range, Period, Concept) { +define(['knockout', './Criteria', '../InputTypes/Range', '../InputTypes/Period', 'conceptpicker/InputTypes/Concept', '../InputTypes/ConceptSetSelection' +], function (ko, Criteria, Range, Period, Concept, ConceptSetSelection) { function ObservationPeriod(data, conceptSets) { var self = this; data = data || {}; @@ -11,6 +12,8 @@ define(['knockout', './Criteria', '../InputTypes/Range', '../InputTypes/Period', self.PeriodType = ko.observable(data.PeriodType && ko.observableArray(data.PeriodType.map(function (d) { return new Concept(d); }))); + self.PeriodTypeCS = ko.observable(data.PeriodTypeCS && new ConceptSetSelection(data.PeriodTypeCS, conceptSets)); + self.UserDefinedPeriod = ko.observable(data.UserDefinedPeriod && new Period(data.UserDefinedPeriod)); // Derived Fields diff --git a/js/components/cohortbuilder/CriteriaTypes/PayerPlanPeriod.js b/js/components/cohortbuilder/CriteriaTypes/PayerPlanPeriod.js index ac81f4b01..a32503af9 100644 --- a/js/components/cohortbuilder/CriteriaTypes/PayerPlanPeriod.js +++ b/js/components/cohortbuilder/CriteriaTypes/PayerPlanPeriod.js @@ -1,4 +1,5 @@ -define(['knockout', './Criteria', '../InputTypes/Range', '../InputTypes/Period', 'conceptpicker/InputTypes/Concept'], function (ko, Criteria, Range, Period, Concept) { +define(['knockout', './Criteria', '../InputTypes/Range', '../InputTypes/Period', 'conceptpicker/InputTypes/Concept', '../InputTypes/ConceptSetSelection' +], function (ko, Criteria, Range, Period, Concept, ConceptSetSelection) { function PayerPlanPeriod(data, conceptSets) { var self = this; data = data || {}; @@ -39,6 +40,7 @@ define(['knockout', './Criteria', '../InputTypes/Range', '../InputTypes/Period', self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); self.PayerConcept = ko.observable(data.PayerConcept != null ? ko.observable(data.PayerConcept) : null); self.PlanConcept = ko.observable(data.PlanConcept != null ? ko.observable(data.PlanConcept) : null); self.SponsorConcept = ko.observable(data.SponsorConcept != null ? ko.observable(data.SponsorConcept) : null); diff --git a/js/components/cohortbuilder/CriteriaTypes/ProcedureOccurrence.js b/js/components/cohortbuilder/CriteriaTypes/ProcedureOccurrence.js index c3853a4c8..87fc37f0c 100644 --- a/js/components/cohortbuilder/CriteriaTypes/ProcedureOccurrence.js +++ b/js/components/cohortbuilder/CriteriaTypes/ProcedureOccurrence.js @@ -1,4 +1,5 @@ -define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept'], function (ko, Criteria, Range, Concept) { +define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/ConceptSetSelection' +], function (ko, Criteria, Range, Concept, ConceptSetSelection) { function ProcedureOccurrence(data, conceptSets) { var self = this; @@ -28,10 +29,12 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType return new Concept(d); }))); self.ProcedureTypeExclude = ko.observable(data.ProcedureTypeExclude || null); - + self.ProcedureTypeCS = ko.observable(data.ProcedureTypeCS && new ConceptSetSelection(data.ProcedureTypeCS, conceptSets)); + self.Modifier = ko.observable(data.Modifier && ko.observableArray(data.Modifier.map(function (d) { return new Concept(d); }))); + self.ModifierCS = ko.observable(data.ModifierCS && new ConceptSetSelection(data.ModifierCS, conceptSets)); self.Quantity = ko.observable(data.Quantity && new Range(data.Quantity)); @@ -45,18 +48,17 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); - /* Do we still need prior enroll days inside the individual criteria? - self.PriorEnrollDays = ko.observable((typeof data.PriorEnrollDays == "number") ? data.PriorEnrollDays : null); - self.AfterEnrollDays = ko.observable((typeof data.AfterEnrollDays == "number") ? data.AfterEnrollDays : null); - */ - self.ProviderSpecialty = ko.observable(data.ProviderSpecialty && ko.observableArray(data.ProviderSpecialty.map(function (d) { return new Concept(d); }))); + self.ProviderSpecialtyCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.ProviderSpecialtyCS, conceptSets)); + self.VisitType = ko.observable(data.VisitType && ko.observableArray(data.VisitType.map(function (d) { return new Concept(d); }))); + self.VisitTypeCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.VisitTypeCS, conceptSets)); } diff --git a/js/components/cohortbuilder/CriteriaTypes/Specimen.js b/js/components/cohortbuilder/CriteriaTypes/Specimen.js index 5fe50987c..ec54f35db 100644 --- a/js/components/cohortbuilder/CriteriaTypes/Specimen.js +++ b/js/components/cohortbuilder/CriteriaTypes/Specimen.js @@ -1,4 +1,5 @@ -define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text'], function (ko, Criteria, Range, Concept, Text) { +define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text', '../InputTypes/ConceptSetSelection' +], function (ko, Criteria, Range, Concept, Text, ConceptSetSelection) { function Specimen(data, conceptSets) { var self = this; @@ -26,17 +27,21 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.SpecimenType = ko.observable(data.SpecimenType && ko.observableArray(data.SpecimenType.map(function (d) { return new Concept(d); }))); + self.SpecimenTypeCS = ko.observable(data.SpecimenTypeCS && new ConceptSetSelection(data.SpecimenTypeCS, conceptSets)); self.SpecimenTypeExclude = ko.observable(data.SpecimenTypeExclude || null); self.Quantity = ko.observable(data.Quantity && new Range(data.Quantity)); self.Unit = ko.observable(data.Unit && ko.observableArray(data.Unit.map(function (d) { return new Concept(d); }))); + self.UnitCS = ko.observable(data.UnitCS && new ConceptSetSelection(data.UnitCS, conceptSets)); self.AnatomicSite = ko.observable(data.AnatomicSite && ko.observableArray(data.AnatomicSite.map(function (d) { return new Concept(d); }))); + self.AnatomicSiteCS = ko.observable(data.AnatomicSiteCS && new ConceptSetSelection(data.AnatomicSiteCS, conceptSets)); self.DiseaseStatus = ko.observable(data.DiseaseStatus && ko.observableArray(data.DiseaseStatus.map(function (d) { return new Concept(d); }))); + self.DiseaseStatusCS = ko.observable(data.DiseaseStatusCS && new ConceptSetSelection(data.DiseaseStatusCS, conceptSets)); self.SourceId = ko.observable(data.SourceId && new Text(data.SourceId)); // Derived Fields @@ -47,6 +52,7 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); } Specimen.prototype = new Criteria(); diff --git a/js/components/cohortbuilder/CriteriaTypes/VisitDetail.js b/js/components/cohortbuilder/CriteriaTypes/VisitDetail.js index 565a250d6..509d55dc1 100644 --- a/js/components/cohortbuilder/CriteriaTypes/VisitDetail.js +++ b/js/components/cohortbuilder/CriteriaTypes/VisitDetail.js @@ -27,7 +27,6 @@ define(['knockout', './Criteria', '../InputTypes/Range', '../InputTypes/ConceptS self.VisitDetailStartDate = ko.observable(data.VisitDetailStartDate && new Range(data.VisitDetailStartDate)); self.VisitDetailEndDate = ko.observable(data.VisitDetailEndDate && new Range(data.VisitDetailEndDate)); self.VisitDetailTypeCS = ko.observable(data.VisitDetailTypeCS && new ConceptSetSelection(data.VisitDetailTypeCS, conceptSets)); - self.VisitDetailTypeExclude = ko.observable(data.VisitDetailTypeExclude || null); self.VisitDetailSourceConcept = ko.observable(data.VisitDetailSourceConcept != null ? ko.observable(data.VisitDetailSourceConcept) : null); self.VisitDetailLength = ko.observable(data.VisitDetailLength && new Range(data.VisitDetailLength)); diff --git a/js/components/cohortbuilder/CriteriaTypes/VisitOccurrence.js b/js/components/cohortbuilder/CriteriaTypes/VisitOccurrence.js index 041c9c16a..a5eff1c7d 100644 --- a/js/components/cohortbuilder/CriteriaTypes/VisitOccurrence.js +++ b/js/components/cohortbuilder/CriteriaTypes/VisitOccurrence.js @@ -1,4 +1,5 @@ -define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/Text'], function (ko, Criteria, Range, Concept, Text) { +define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputTypes/Concept', '../InputTypes/ConceptSetSelection', +], function (ko, Criteria, Range, Concept, ConceptSetSelection) { function VisitOccurence(data, conceptSets) { var self = this; @@ -29,6 +30,7 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType return new Concept(d); }))); self.VisitTypeExclude = ko.observable(data.VisitTypeExclude || null); + self.VisitTypeCS = ko.observable(data.VisitTypeCS && new ConceptSetSelection(data.VisitTypeCS, conceptSets)); self.VisitSourceConcept = ko.observable(data.VisitSourceConcept != null ? ko.observable(data.VisitSourceConcept) : null); self.VisitLength = ko.observable(data.VisitLength && new Range(data.VisitLength)); @@ -40,22 +42,19 @@ define(['knockout', './Criteria', '../InputTypes/Range','conceptpicker/InputType self.Gender = ko.observable(data.Gender && ko.observableArray(data.Gender.map(function (d) { return new Concept(d); }))); + self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets)); - /* Do we still need prior enroll days inside the individual criteria? - self.PriorEnrollDays = ko.observable((typeof data.PriorEnrollDays == "number") ? data.PriorEnrollDays : null); - self.AfterEnrollDays = ko.observable((typeof data.AfterEnrollDays == "number") ? data.AfterEnrollDays : null); - */ - self.ProviderSpecialty = ko.observable(data.ProviderSpecialty && ko.observableArray(data.ProviderSpecialty.map(function (d) { return new Concept(d); }))); + self.ProviderSpecialtyCS = ko.observable(data.ProviderSpecialtyCS && new ConceptSetSelection(data.ProviderSpecialtyCS, conceptSets)); self.PlaceOfService = ko.observable(data.PlaceOfService && ko.observableArray(data.PlaceOfService.map(function (d) { return new Concept(d); }))); + self.PlaceOfServiceCS = ko.observable(data.PlaceOfServiceCS && new ConceptSetSelection(data.PlaceOfServiceCS, conceptSets)); self.PlaceOfServiceLocation = ko.observable(data.PlaceOfServiceLocation != null ? ko.observable(data.PlaceOfServiceLocation) : null); - self.PlaceOfServiceDistance = ko.observable(data.PlaceOfServiceDistance && new Range(data.PlaceOfServiceDistance)); } VisitOccurence.prototype = new Criteria(); diff --git a/js/components/cohortbuilder/components/ConditionEra.js b/js/components/cohortbuilder/components/ConditionEra.js index 5bc184440..2946e4752 100644 --- a/js/components/cohortbuilder/components/ConditionEra.js +++ b/js/components/cohortbuilder/components/ConditionEra.js @@ -4,10 +4,11 @@ define([ "../utils", "../InputTypes/Range", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../CriteriaGroup", "text!./ConditionEraTemplate.html", "../const", -], function (ko, options, utils, Range, DateAdjustment, CriteriaGroup, template, constants) { +], function (ko, options, utils, Range, DateAdjustment, ConceptSetSelection, CriteriaGroup, template, constants) { function ConditionEraViewModel(params) { var self = this; self.expression = ko.utils.unwrapObservable(params.expression); @@ -57,6 +58,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.eraAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.eraAttributes.addStartDate, selected: false, diff --git a/js/components/cohortbuilder/components/ConditionEraTemplate.html b/js/components/cohortbuilder/components/ConditionEraTemplate.html index 1a537a9bd..d9819ebbc 100644 --- a/js/components/cohortbuilder/components/ConditionEraTemplate.html +++ b/js/components/cohortbuilder/components/ConditionEraTemplate.html @@ -104,6 +104,18 @@ + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/ConditionOccurrence.js b/js/components/cohortbuilder/components/ConditionOccurrence.js index 46b53fe7d..161adb007 100644 --- a/js/components/cohortbuilder/components/ConditionOccurrence.js +++ b/js/components/cohortbuilder/components/ConditionOccurrence.js @@ -5,6 +5,7 @@ define([ "../InputTypes/Range", "../InputTypes/Text", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../CriteriaGroup", "text!./ConditionOccurrenceTemplate.html", "../const", @@ -16,6 +17,7 @@ define([ Range, Text, DateAdjustment, + ConceptSetSelection, CriteriaGroup, template, constants @@ -60,6 +62,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.occurrenceAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.occurrenceAttributes.addConditionStatus, selected: false, @@ -68,6 +78,14 @@ define([ self.Criteria.ConditionStatus(ko.observableArray()); } }, + { + ...constants.occurrenceAttributes.addConditionStatusCS, + selected: false, + action: function () { + if (self.Criteria.ConditionStatusCS() == null) + self.Criteria.ConditionStatusCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + } + }, { ...constants.occurrenceAttributes.addStartDate, selected: false, @@ -107,6 +125,14 @@ define([ self.Criteria.ConditionType(ko.observableArray()); }, }, + { + ...constants.occurrenceAttributes.addTypeCS, + selected: false, + action: function () { + if (self.Criteria.ConditionTypeCS() == null) + self.Criteria.ConditionTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.occurrenceAttributes.addVisit, selected: false, @@ -115,6 +141,14 @@ define([ self.Criteria.VisitType(ko.observableArray()); }, }, + { + ...constants.occurrenceAttributes.addVisitCS, + selected: false, + action: function () { + if (self.Criteria.VisitTypeCS() == null) + self.Criteria.VisitTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.occurrenceAttributes.addStopReason, selected: false, @@ -143,6 +177,14 @@ define([ self.Criteria.ProviderSpecialty(ko.observableArray()); }, }, + { + ...constants.occurrenceAttributes.addProviderSpecialtyCS, + selected: false, + action: function () { + if (self.Criteria.ProviderSpecialtyCS() == null) + self.Criteria.ProviderSpecialtyCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.occurrenceAttributes.addNested, selected: false, diff --git a/js/components/cohortbuilder/components/ConditionOccurrenceTemplate.html b/js/components/cohortbuilder/components/ConditionOccurrenceTemplate.html index 06d15cb76..aa49a0343 100644 --- a/js/components/cohortbuilder/components/ConditionOccurrenceTemplate.html +++ b/js/components/cohortbuilder/components/ConditionOccurrenceTemplate.html @@ -76,6 +76,19 @@ + + + + +
+ + + + +
+ + @@ -88,6 +101,18 @@ + + + +
+ + + + +
+ + @@ -129,24 +154,18 @@ - @@ -159,6 +178,18 @@ + + + +
+ + + + +
+ + @@ -169,6 +200,18 @@ + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/CriteriaGroupTemplate.html b/js/components/cohortbuilder/components/CriteriaGroupTemplate.html index c3205f73d..ecb8d9f5e 100644 --- a/js/components/cohortbuilder/components/CriteriaGroupTemplate.html +++ b/js/components/cohortbuilder/components/CriteriaGroupTemplate.html @@ -51,8 +51,6 @@ - @@ -81,7 +79,7 @@ data-bind="text: ko.i18n('components.criteriaGroup.withFollowingCriteria', 'with the following event criteria:')">
- +
diff --git a/js/components/cohortbuilder/components/Death.js b/js/components/cohortbuilder/components/Death.js index 0ab798585..9ed29eaf1 100644 --- a/js/components/cohortbuilder/components/Death.js +++ b/js/components/cohortbuilder/components/Death.js @@ -4,6 +4,7 @@ define([ "../utils", "../InputTypes/Range", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../CriteriaGroup", "text!./DeathTemplate.html", "../const", @@ -13,6 +14,7 @@ define([ utils, Range, DateAdjustment, + ConceptSetSelection, CriteriaGroup, template, constants @@ -36,6 +38,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.occurrenceAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.deathAttributes.addDate, selected: false, @@ -63,6 +73,14 @@ define([ self.Criteria.DeathType(ko.observableArray()); }, }, + { + ...constants.deathAttributes.addTypeCS, + selected: false, + action: function () { + if (self.Criteria.DeathTypeCS() == null) + self.Criteria.DeathTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.deathAttributes.addSourceConcept, selected: false, diff --git a/js/components/cohortbuilder/components/DeathTemplate.html b/js/components/cohortbuilder/components/DeathTemplate.html index 9642f79d3..36ec5dc12 100644 --- a/js/components/cohortbuilder/components/DeathTemplate.html +++ b/js/components/cohortbuilder/components/DeathTemplate.html @@ -62,6 +62,18 @@ + + + +
+ + + + +
+ + @@ -95,6 +107,18 @@ + + + +
+ + + + +
+ + @@ -103,20 +127,6 @@ - \ No newline at end of file diff --git a/js/components/cohortbuilder/components/DemographicCriteria.js b/js/components/cohortbuilder/components/DemographicCriteria.js index 10343255e..7148a4f73 100644 --- a/js/components/cohortbuilder/components/DemographicCriteria.js +++ b/js/components/cohortbuilder/components/DemographicCriteria.js @@ -3,12 +3,14 @@ define([ "../options", "../InputTypes/Range", "../utils", + '../InputTypes/ConceptSetSelection', "text!./DemographicCriteriaTemplate.html", "../const", "./ConceptSetSelector", -], function (ko, options, Range, utils, template, constants) { +], function (ko, options, Range, utils, ConceptSetSelection, template, constants, ) { function DemographicCriteriaViewModel(params) { var self = this; + self.expression = ko.utils.unwrapObservable(params.expression); self.Criteria = ko.utils.unwrapObservable(params.criteria); self.options = options; self.formatOption = utils.formatDropDownOption; @@ -28,6 +30,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.demographicAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.demographicAttributes.addStartDate, selected: false, @@ -60,6 +70,14 @@ define([ self.Criteria.Race(ko.observableArray()); }, }, + { + ...constants.demographicAttributes.addRaceCS, + selected: false, + action: function () { + if (self.Criteria.RaceCS() == null) + self.Criteria.RaceCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.demographicAttributes.addEthnicity, selected: false, @@ -68,6 +86,14 @@ define([ self.Criteria.Ethnicity(ko.observableArray()); }, }, + { + ...constants.demographicAttributes.addEthnicityCS, + selected: false, + action: function () { + if (self.Criteria.EthnicityCS() == null) + self.Criteria.EthnicityCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, ]; self.removeCriterion = function (propertyName) { diff --git a/js/components/cohortbuilder/components/DemographicCriteriaTemplate.html b/js/components/cohortbuilder/components/DemographicCriteriaTemplate.html index 140cf19bb..e28741d76 100644 --- a/js/components/cohortbuilder/components/DemographicCriteriaTemplate.html +++ b/js/components/cohortbuilder/components/DemographicCriteriaTemplate.html @@ -34,6 +34,18 @@ + + + +
+ + + + +
+ + @@ -43,6 +55,18 @@ + + + +
+ + + + +
+ + @@ -52,6 +76,18 @@ + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/DeviceExposure.js b/js/components/cohortbuilder/components/DeviceExposure.js index 35a9938ae..e650af157 100644 --- a/js/components/cohortbuilder/components/DeviceExposure.js +++ b/js/components/cohortbuilder/components/DeviceExposure.js @@ -5,6 +5,7 @@ define([ "../InputTypes/Range", "../InputTypes/Text", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../CriteriaGroup", "text!./DeviceExposureTemplate.html", "../const", @@ -15,6 +16,7 @@ define([ Range, Text, DateAdjustment, + ConceptSetSelection, CriteriaGroup, template, constants @@ -56,6 +58,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.deviceAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.deviceAttributes.addStartDate, selected: false, @@ -95,6 +105,14 @@ define([ self.Criteria.DeviceType(ko.observableArray()); }, }, + { + ...constants.deviceAttributes.addTypeCS, + selected: false, + action: function () { + if (self.Criteria.DeviceTypeCS() == null) + self.Criteria.DeviceTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.deviceAttributes.addVisit, selected: false, @@ -103,6 +121,14 @@ define([ self.Criteria.VisitType(ko.observableArray()); }, }, + { + ...constants.deviceAttributes.addVisitCS, + selected: false, + action: function () { + if (self.Criteria.VisitTypeCS() == null) + self.Criteria.VisitTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.deviceAttributes.addUniqueId, selected: false, @@ -143,6 +169,14 @@ define([ self.Criteria.ProviderSpecialty(ko.observableArray()); }, }, + { + ...constants.deviceAttributes.addProviderSpecialtyCS, + selected: false, + action: function () { + if (self.Criteria.ProviderSpecialtyCS() == null) + self.Criteria.ProviderSpecialtyCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.deviceAttributes.addNested, selected: false, diff --git a/js/components/cohortbuilder/components/DeviceExposureTemplate.html b/js/components/cohortbuilder/components/DeviceExposureTemplate.html index 4b2e71060..de0bfa4f7 100644 --- a/js/components/cohortbuilder/components/DeviceExposureTemplate.html +++ b/js/components/cohortbuilder/components/DeviceExposureTemplate.html @@ -78,6 +78,18 @@ + + + +
+ + + + +
+ + @@ -124,6 +136,18 @@ + + + +
+ + + + +
+ + @@ -137,6 +161,18 @@ + + + +
+ + + + +
+ + @@ -146,6 +182,18 @@ + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/DoseEra.js b/js/components/cohortbuilder/components/DoseEra.js index 9fede622c..ded07ef9b 100644 --- a/js/components/cohortbuilder/components/DoseEra.js +++ b/js/components/cohortbuilder/components/DoseEra.js @@ -4,10 +4,11 @@ define([ "../utils", "../InputTypes/Range", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../CriteriaGroup", "text!./DoseEraTemplate.html", "../const", -], function (ko, options, utils, Range, DateAdjustment, CriteriaGroup, template, constants) { +], function (ko, options, utils, Range, DateAdjustment, ConceptSetSelection, CriteriaGroup, template, constants) { function DoseEraViewModel(params) { var self = this; self.expression = ko.utils.unwrapObservable(params.expression); @@ -45,6 +46,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.doseAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.doseAttributes.addStartDate, selected: false, @@ -84,6 +93,14 @@ define([ self.Criteria.Unit(ko.observableArray()); }, }, + { + ...constants.doseAttributes.addUnitCS, + selected: false, + action: function () { + if (self.Criteria.UnitCS() == null) + self.Criteria.UnitCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.doseAttributes.addLength, selected: false, diff --git a/js/components/cohortbuilder/components/DoseEraTemplate.html b/js/components/cohortbuilder/components/DoseEraTemplate.html index bdf8ae576..6dd8e4018 100644 --- a/js/components/cohortbuilder/components/DoseEraTemplate.html +++ b/js/components/cohortbuilder/components/DoseEraTemplate.html @@ -74,6 +74,18 @@ + + + +
+ + + + +
+ + @@ -120,7 +132,20 @@ - + + + + +
+ + + + +
+ + + + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/DrugExposure.js b/js/components/cohortbuilder/components/DrugExposure.js index e1674c2c1..02962de48 100644 --- a/js/components/cohortbuilder/components/DrugExposure.js +++ b/js/components/cohortbuilder/components/DrugExposure.js @@ -4,6 +4,7 @@ define([ "../utils", "../InputTypes/Range", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../InputTypes/Text", "../CriteriaGroup", "text!./DrugExposureTemplate.html", @@ -14,6 +15,7 @@ define([ utils, Range, DateAdjustment, + ConceptSetSelection, Text, CriteriaGroup, template, @@ -55,6 +57,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.drugexposureAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.drugexposureAttributes.addStartDate, selected: false, @@ -94,6 +104,14 @@ define([ self.Criteria.DrugType(ko.observableArray()); }, }, + { + ...constants.drugexposureAttributes.addTypeCS, + selected: false, + action: function () { + if (self.Criteria.DrugTypeCS() == null) + self.Criteria.DrugTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.drugexposureAttributes.addVisit, selected: false, @@ -102,6 +120,14 @@ define([ self.Criteria.VisitType(ko.observableArray()); }, }, + { + ...constants.drugexposureAttributes.addVisitCS, + selected: false, + action: function () { + if (self.Criteria.VisitTypeCS() == null) + self.Criteria.VisitTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.drugexposureAttributes.addStopReason, selected: false, @@ -158,6 +184,14 @@ define([ self.Criteria.RouteConcept(ko.observableArray()); }, }, + { + ...constants.drugexposureAttributes.addRouteCS, + selected: false, + action: function () { + if (self.Criteria.RouteConceptCS() == null) + self.Criteria.RouteConceptCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.drugexposureAttributes.addEffective, selected: false, @@ -178,6 +212,14 @@ define([ self.Criteria.DoseUnit(ko.observableArray()); }, }, + { + ...constants.drugexposureAttributes.addUnitCS, + selected: false, + action: function () { + if (self.Criteria.DoseUnitCS() == null) + self.Criteria.DoseUnitCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.drugexposureAttributes.addLotNumber, selected: false, @@ -206,6 +248,14 @@ define([ self.Criteria.ProviderSpecialty(ko.observableArray()); }, }, + { + ...constants.drugexposureAttributes.addProviderSpecialtyCS, + selected: false, + action: function () { + if (self.Criteria.ProviderSpecialtyCS() == null) + self.Criteria.ProviderSpecialtyCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.drugexposureAttributes.addNested, selected: false, diff --git a/js/components/cohortbuilder/components/DrugExposureTemplate.html b/js/components/cohortbuilder/components/DrugExposureTemplate.html index d7a4b7878..c1211a8cb 100644 --- a/js/components/cohortbuilder/components/DrugExposureTemplate.html +++ b/js/components/cohortbuilder/components/DrugExposureTemplate.html @@ -81,6 +81,18 @@ + + + +
+ + + + +
+ + @@ -127,6 +139,18 @@ + + + +
+ + + + +
+ + @@ -146,6 +170,18 @@ + + + +
+ + + + +
+ + @@ -189,20 +225,18 @@ - @@ -216,6 +250,18 @@ + + + +
+ + + + +
+ + @@ -226,6 +272,18 @@ + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/Measurement.js b/js/components/cohortbuilder/components/Measurement.js index d98991d00..741d04170 100644 --- a/js/components/cohortbuilder/components/Measurement.js +++ b/js/components/cohortbuilder/components/Measurement.js @@ -4,10 +4,11 @@ define([ "../utils", "../InputTypes/Range", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../CriteriaGroup", "text!./MeasurementTemplate.html", "../const" -], function (ko, options, utils, Range, DateAdjustment, CriteriaGroup, template, constants) { +], function (ko, options, utils, Range, DateAdjustment, ConceptSetSelection, CriteriaGroup, template, constants) { function MeasurementViewModel(params) { var self = this; @@ -38,6 +39,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.measurementAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.measurementAttributes.addDate, selected: false, @@ -65,6 +74,14 @@ define([ self.Criteria.MeasurementType(ko.observableArray()); }, }, + { + ...constants.measurementAttributes.addTypeCS, + selected: false, + action: function () { + if (self.Criteria.MeasurementTypeCS() == null) + self.Criteria.MeasurementTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.measurementAttributes.addVisit, selected: false, @@ -73,6 +90,14 @@ define([ self.Criteria.VisitType(ko.observableArray()); }, }, + { + ...constants.measurementAttributes.addVisitCS, + selected: false, + action: function () { + if (self.Criteria.VisitTypeCS() == null) + self.Criteria.VisitTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.measurementAttributes.addOperator, selected: false, @@ -81,6 +106,14 @@ define([ self.Criteria.Operator(ko.observableArray()); }, }, + { + ...constants.measurementAttributes.addOperatorCS, + selected: false, + action: function () { + if (self.Criteria.OperatorCS() == null) + self.Criteria.OperatorCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.measurementAttributes.addValue, selected: false, @@ -97,6 +130,14 @@ define([ self.Criteria.ValueAsConcept(ko.observableArray()); }, }, + { + ...constants.measurementAttributes.addValueAsConceptCS, + selected: false, + action: function () { + if (self.Criteria.ValueAsConceptCS() == null) + self.Criteria.ValueAsConceptCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.measurementAttributes.addUnit, selected: false, @@ -105,6 +146,14 @@ define([ self.Criteria.Unit(ko.observableArray()); }, }, + { + ...constants.measurementAttributes.addUnitCS, + selected: false, + action: function () { + if (self.Criteria.UnitCS() == null) + self.Criteria.UnitCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.measurementAttributes.addAbnormal, selected: false, @@ -152,6 +201,14 @@ define([ self.Criteria.ProviderSpecialty(ko.observableArray()); }, }, + { + ...constants.measurementAttributes.addProviderSpecialtyCS, + selected: false, + action: function () { + if (self.Criteria.ProviderSpecialtyCS() == null) + self.Criteria.ProviderSpecialtyCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.measurementAttributes.addSourceConcept, selected: false, diff --git a/js/components/cohortbuilder/components/MeasurementTemplate.html b/js/components/cohortbuilder/components/MeasurementTemplate.html index 85c349a2e..b1edd4dec 100644 --- a/js/components/cohortbuilder/components/MeasurementTemplate.html +++ b/js/components/cohortbuilder/components/MeasurementTemplate.html @@ -57,6 +57,18 @@ + + + +
+ + + + +
+ + @@ -65,6 +77,18 @@ + + + +
+ + + + +
+ + @@ -80,6 +104,18 @@ + + + +
+ + + + +
+ + @@ -88,6 +124,18 @@ + + + +
+ + + + +
+ + @@ -156,20 +204,18 @@ - @@ -180,6 +226,18 @@ + + + +
+ + + + +
+ + @@ -188,6 +246,18 @@ + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/Observation.js b/js/components/cohortbuilder/components/Observation.js index 975b50637..b697cad22 100644 --- a/js/components/cohortbuilder/components/Observation.js +++ b/js/components/cohortbuilder/components/Observation.js @@ -4,11 +4,12 @@ define([ "../utils", "../InputTypes/Range", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../InputTypes/Text", "../CriteriaGroup", "text!./ObservationTemplate.html", "../const" -], function (ko, options, utils, Range, DateAdjustment, Text, CriteriaGroup, template, constants) { +], function (ko, options, utils, Range, DateAdjustment, ConceptSetSelection, Text, CriteriaGroup, template, constants) { function ObservationViewModel(params) { var self = this; self.addActions = [ @@ -34,6 +35,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.observationAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.observationAttributes.addDate, selected: false, @@ -61,6 +70,14 @@ define([ self.Criteria.ObservationType(ko.observableArray()); }, }, + { + ...constants.observationAttributes.addTypeCS, + selected: false, + action: function () { + if (self.Criteria.ObservationTypeCS() == null) + self.Criteria.ObservationTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.observationAttributes.addVisit, selected: false, @@ -69,6 +86,14 @@ define([ self.Criteria.VisitType(ko.observableArray()); }, }, + { + ...constants.observationAttributes.addVisitCS, + selected: false, + action: function () { + if (self.Criteria.VisitTypeCS() == null) + self.Criteria.VisitTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.observationAttributes.addValue, selected: false, @@ -101,6 +126,14 @@ define([ self.Criteria.ValueAsConcept(ko.observableArray()); }, }, + { + ...constants.observationAttributes.addValueAsConceptCS, + selected: false, + action: function () { + if (self.Criteria.ValueAsConceptCS() == null) + self.Criteria.ValueAsConceptCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.observationAttributes.addQualifier, selected: false, @@ -109,6 +142,14 @@ define([ self.Criteria.Qualifier(ko.observableArray()); }, }, + { + ...constants.observationAttributes.addQualifierCS, + selected: false, + action: function () { + if (self.Criteria.QualifierCS() == null) + self.Criteria.QualifierCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.observationAttributes.addUnit, selected: false, @@ -117,6 +158,14 @@ define([ self.Criteria.Unit(ko.observableArray()); }, }, + { + ...constants.observationAttributes.addUnitCS, + selected: false, + action: function () { + if (self.Criteria.UnitCS() == null) + self.Criteria.UnitCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.observationAttributes.addSourceConcept, selected: false, @@ -133,6 +182,14 @@ define([ self.Criteria.ProviderSpecialty(ko.observableArray()); }, }, + { + ...constants.observationAttributes.addProviderSpecialtyCS, + selected: false, + action: function () { + if (self.Criteria.ProviderSpecialtyCS() == null) + self.Criteria.ProviderSpecialtyCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.observationAttributes.addNested, selected: false, diff --git a/js/components/cohortbuilder/components/ObservationPeriod.js b/js/components/cohortbuilder/components/ObservationPeriod.js index a1d4229af..5722a3a56 100644 --- a/js/components/cohortbuilder/components/ObservationPeriod.js +++ b/js/components/cohortbuilder/components/ObservationPeriod.js @@ -3,11 +3,12 @@ define([ "../options", "../InputTypes/Range", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../InputTypes/Period", "../CriteriaGroup", "text!./ObservationPeriodTemplate.html", "../const" -], function (ko, options, Range, DateAdjustment, Period, CriteriaGroup, template, constants) { +], function (ko, options, Range, DateAdjustment, ConceptSetSelection, Period, CriteriaGroup, template, constants) { function ObservationPeriodViewModel(params) { var self = this; @@ -86,6 +87,14 @@ define([ self.Criteria.PeriodType(ko.observableArray()); }, }, + { + ...constants.observationPeriodAttributes.addTypeCS, + selected: false, + action: function () { + if (self.Criteria.PeriodTypeCS() == null) + self.Criteria.PeriodTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.observationPeriodAttributes.addLength, selected: false, diff --git a/js/components/cohortbuilder/components/ObservationPeriodTemplate.html b/js/components/cohortbuilder/components/ObservationPeriodTemplate.html index 29161da04..40566f3d7 100644 --- a/js/components/cohortbuilder/components/ObservationPeriodTemplate.html +++ b/js/components/cohortbuilder/components/ObservationPeriodTemplate.html @@ -77,6 +77,18 @@ + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/ObservationTemplate.html b/js/components/cohortbuilder/components/ObservationTemplate.html index ff9a3d042..6d04700d2 100644 --- a/js/components/cohortbuilder/components/ObservationTemplate.html +++ b/js/components/cohortbuilder/components/ObservationTemplate.html @@ -52,7 +52,6 @@ - @@ -62,6 +61,18 @@ + + + +
+ + + + +
+ + @@ -88,6 +99,18 @@ + + + +
+ + + + +
+ + @@ -98,6 +121,18 @@ + + + +
+ + + + +
+ + @@ -108,6 +143,18 @@ + + + +
+ + + + +
+ + @@ -137,20 +184,18 @@ - @@ -161,6 +206,18 @@ + + + +
+ + + + +
+ + @@ -169,6 +226,18 @@ + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/PayerPlanPeriod.js b/js/components/cohortbuilder/components/PayerPlanPeriod.js index 3709dfb4c..e80a3f71b 100644 --- a/js/components/cohortbuilder/components/PayerPlanPeriod.js +++ b/js/components/cohortbuilder/components/PayerPlanPeriod.js @@ -3,11 +3,12 @@ define([ "../options", "../InputTypes/Range", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../InputTypes/Period", "../CriteriaGroup", "text!./PayerPlanPeriodTemplate.html", "../const" -], function (ko, options, Range, DateAdjustment, Period, CriteriaGroup, template, constants) { +], function (ko, options, Range, DateAdjustment, ConceptSetSelection, Period, CriteriaGroup, template, constants) { function PayerPlanPeriodViewModel(params) { var self = this; @@ -94,6 +95,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.payerPlanAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.payerPlanAttributes.addPayerConcept, selected: false, diff --git a/js/components/cohortbuilder/components/PayerPlanPeriodTemplate.html b/js/components/cohortbuilder/components/PayerPlanPeriodTemplate.html index 75d75a3eb..e7a3410b3 100644 --- a/js/components/cohortbuilder/components/PayerPlanPeriodTemplate.html +++ b/js/components/cohortbuilder/components/PayerPlanPeriodTemplate.html @@ -79,6 +79,18 @@ + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/ProcedureOccurrence.js b/js/components/cohortbuilder/components/ProcedureOccurrence.js index 8b317bc89..9e5647584 100644 --- a/js/components/cohortbuilder/components/ProcedureOccurrence.js +++ b/js/components/cohortbuilder/components/ProcedureOccurrence.js @@ -4,6 +4,7 @@ define([ "../utils", "../InputTypes/Range", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../CriteriaGroup", "text!./ProcedureOccurrenceTemplate.html", "../const", @@ -13,6 +14,7 @@ define([ utils, Range, DateAdjustment, + ConceptSetSelection, CriteriaGroup, template, constants @@ -42,6 +44,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.occurrenceAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.procedureOccurrenceAttributes.addDate, selected: false, @@ -69,6 +79,14 @@ define([ self.Criteria.ProcedureType(ko.observableArray()); }, }, + { + ...constants.procedureOccurrenceAttributes.addTypeCS, + selected: false, + action: function () { + if (self.Criteria.ProcedureTypeCS() == null) + self.Criteria.ProcedureTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.procedureOccurrenceAttributes.addVisit, selected: false, @@ -77,6 +95,14 @@ define([ self.Criteria.VisitType(ko.observableArray()); }, }, + { + ...constants.procedureOccurrenceAttributes.addVisitCS, + selected: false, + action: function () { + if (self.Criteria.VisitTypeCS() == null) + self.Criteria.VisitTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.procedureOccurrenceAttributes.addModifier, selected: false, @@ -85,6 +111,14 @@ define([ self.Criteria.Modifier(ko.observableArray()); }, }, + { + ...constants.procedureOccurrenceAttributes.addModifierCS, + selected: false, + action: function () { + if (self.Criteria.ModifierCS() == null) + self.Criteria.ModifierCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.procedureOccurrenceAttributes.addQuantity, selected: false, @@ -113,6 +147,14 @@ define([ self.Criteria.ProviderSpecialty(ko.observableArray()); }, }, + { + ...constants.procedureOccurrenceAttributes.addProviderSpecialtyCS, + selected: false, + action: function () { + if (self.Criteria.ProviderSpecialtyCS() == null) + self.Criteria.ProviderSpecialtyCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.procedureOccurrenceAttributes.addNested, selected: false, diff --git a/js/components/cohortbuilder/components/ProcedureOccurrenceTemplate.html b/js/components/cohortbuilder/components/ProcedureOccurrenceTemplate.html index e073b0ff8..8fe4372e5 100644 --- a/js/components/cohortbuilder/components/ProcedureOccurrenceTemplate.html +++ b/js/components/cohortbuilder/components/ProcedureOccurrenceTemplate.html @@ -64,6 +64,18 @@ + + + +
+ + + + +
+ + @@ -71,6 +83,18 @@ + + + +
+ + + + +
+ + @@ -106,20 +130,18 @@ - @@ -130,6 +152,18 @@ + + + +
+ + + + +
+ + @@ -138,6 +172,18 @@ + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/Specimen.js b/js/components/cohortbuilder/components/Specimen.js index f32b46eae..0761684e9 100644 --- a/js/components/cohortbuilder/components/Specimen.js +++ b/js/components/cohortbuilder/components/Specimen.js @@ -4,11 +4,12 @@ define([ "../utils", "../InputTypes/Range", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../InputTypes/Text", "../CriteriaGroup", "text!./SpecimenTemplate.html", "../const" -], function (ko, options, utils, Range, DateAdjustment, Text, CriteriaGroup, template, constants) { +], function (ko, options, utils, Range, DateAdjustment, ConceptSetSelection, Text, CriteriaGroup, template, constants) { function SpecimenViewModel(params) { var self = this; self.expression = ko.utils.unwrapObservable(params.expression); @@ -38,6 +39,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.specimenAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.specimenAttributes.addDate, selected: false, @@ -65,6 +74,14 @@ define([ self.Criteria.SpecimenType(ko.observableArray()); }, }, + { + ...constants.specimenAttributes.addTypeCS, + selected: false, + action: function () { + if (self.Criteria.SpecimenTypeCS() == null) + self.Criteria.SpecimenTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.specimenAttributes.addQuantity, selected: false, @@ -85,6 +102,14 @@ define([ self.Criteria.Unit(ko.observableArray()); }, }, + { + ...constants.specimenAttributes.addUnitCS, + selected: false, + action: function () { + if (self.Criteria.UnitCS() == null) + self.Criteria.UnitCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.specimenAttributes.addAnatomicSite, selected: false, @@ -93,6 +118,14 @@ define([ self.Criteria.AnatomicSite(ko.observableArray()); }, }, + { + ...constants.specimenAttributes.addAnatomicSiteCS, + selected: false, + action: function () { + if (self.Criteria.AnatomicSiteCS() == null) + self.Criteria.AnatomicSiteCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.specimenAttributes.addDiseaseStatus, selected: false, @@ -101,6 +134,14 @@ define([ self.Criteria.DiseaseStatus(ko.observableArray()); }, }, + { + ...constants.specimenAttributes.addDiseaseStatusCS, + selected: false, + action: function () { + if (self.Criteria.DiseaseStatusCS() == null) + self.Criteria.DiseaseStatusCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.specimenAttributes.addSourceId, selected: false, diff --git a/js/components/cohortbuilder/components/SpecimenTemplate.html b/js/components/cohortbuilder/components/SpecimenTemplate.html index 6686a1a23..e5930e1dd 100644 --- a/js/components/cohortbuilder/components/SpecimenTemplate.html +++ b/js/components/cohortbuilder/components/SpecimenTemplate.html @@ -52,7 +52,6 @@ - @@ -62,6 +61,18 @@ + + + +
+ + + + +
+ + @@ -80,6 +91,18 @@ + + + +
+ + + + +
+ + @@ -90,6 +113,18 @@ + + + +
+ + + + +
+ + @@ -100,6 +135,18 @@ + + + +
+ + + + +
+ + @@ -126,6 +173,18 @@ + + + +
+ + + + +
+ + diff --git a/js/components/cohortbuilder/components/VisitDetail.js b/js/components/cohortbuilder/components/VisitDetail.js index ed6955adf..3ea184d1c 100644 --- a/js/components/cohortbuilder/components/VisitDetail.js +++ b/js/components/cohortbuilder/components/VisitDetail.js @@ -40,7 +40,7 @@ define([ }, }, { - ...constants.visitDetailAttributes.addGender, + ...constants.visitDetailAttributes.addGenderCS, selected: false, action: function () { if (self.Criteria.GenderCS() == null) @@ -79,7 +79,7 @@ define([ }, }, { - ...constants.visitDetailAttributes.addType, + ...constants.visitDetailAttributes.addTypeCS, selected: false, action: function () { if (self.Criteria.VisitDetailTypeCS() == null) @@ -103,7 +103,7 @@ define([ }, }, { - ...constants.visitDetailAttributes.addProviderSpecialty, + ...constants.visitDetailAttributes.addProviderSpecialtyCS, selected: false, action: function () { if (self.Criteria.ProviderSpecialtyCS() == null) @@ -111,7 +111,7 @@ define([ }, }, { - ...constants.visitDetailAttributes.addPlaceService, + ...constants.visitDetailAttributes.addPlaceServiceCS, selected: false, action: function () { if (self.Criteria.PlaceOfServiceCS() == null) diff --git a/js/components/cohortbuilder/components/VisitDetailTemplate.html b/js/components/cohortbuilder/components/VisitDetailTemplate.html index 2edbb4928..ceb9163db 100644 --- a/js/components/cohortbuilder/components/VisitDetailTemplate.html +++ b/js/components/cohortbuilder/components/VisitDetailTemplate.html @@ -68,12 +68,11 @@
- + - +
@@ -84,16 +83,15 @@ - + - + @@ -110,11 +108,11 @@
- + - +
@@ -122,12 +120,11 @@
- + - +
@@ -135,10 +132,10 @@
- + - +
@@ -149,28 +146,15 @@ - - - - - - - -
- - - +
- - + diff --git a/js/components/cohortbuilder/components/VisitOccurrence.js b/js/components/cohortbuilder/components/VisitOccurrence.js index b0cdce90e..c81c090a5 100644 --- a/js/components/cohortbuilder/components/VisitOccurrence.js +++ b/js/components/cohortbuilder/components/VisitOccurrence.js @@ -5,6 +5,7 @@ define([ "../utils", "../InputTypes/Range", "../InputTypes/DateAdjustment", + "../InputTypes/ConceptSetSelection", "../CriteriaGroup", "text!./VisitOccurrenceTemplate.html", "../const", @@ -15,6 +16,7 @@ define([ utils, Range, DateAdjustment, + ConceptSetSelection, CriteriaGroup, template, constants @@ -44,6 +46,14 @@ define([ self.Criteria.Gender(ko.observableArray()); }, }, + { + ...constants.visitAttributes.addGenderCS, + selected: false, + action: function () { + if (self.Criteria.GenderCS() == null) + self.Criteria.GenderCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.visitAttributes.addStartDate, selected: false, @@ -83,6 +93,14 @@ define([ self.Criteria.VisitType(ko.observableArray()); }, }, + { + ...constants.visitAttributes.addTypeCS, + selected: false, + action: function () { + if (self.Criteria.VisitTypeCS() == null) + self.Criteria.VisitTypeCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.visitAttributes.addLength, selected: false, @@ -107,6 +125,14 @@ define([ self.Criteria.ProviderSpecialty(ko.observableArray()); }, }, + { + ...constants.visitAttributes.addProviderSpecialtyCS, + selected: false, + action: function () { + if (self.Criteria.ProviderSpecialtyCS() == null) + self.Criteria.ProviderSpecialtyCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.visitAttributes.addPlaceService, selected: false, @@ -115,6 +141,14 @@ define([ self.Criteria.PlaceOfService(ko.observableArray()); }, }, + { + ...constants.visitAttributes.addPlaceServiceCS, + selected: false, + action: function () { + if (self.Criteria.PlaceOfServiceCS() == null) + self.Criteria.PlaceOfServiceCS(new ConceptSetSelection({}, self.expression.ConceptSets)); + }, + }, { ...constants.visitAttributes.addPlaceServiceLocation, selected: false, diff --git a/js/components/cohortbuilder/components/VisitOccurrenceTemplate.html b/js/components/cohortbuilder/components/VisitOccurrenceTemplate.html index bf549e90f..9cd2e181d 100644 --- a/js/components/cohortbuilder/components/VisitOccurrenceTemplate.html +++ b/js/components/cohortbuilder/components/VisitOccurrenceTemplate.html @@ -76,6 +76,18 @@ + + + +
+ + + + +
+ + @@ -117,6 +129,18 @@ + + + +
+ + + + +
+ + @@ -130,6 +154,18 @@ + + + +
+ + + + +
+ + @@ -142,26 +178,27 @@ - - + +
- - - + + + +
- - + +
+ data-bind="text: ko.i18n('components.conditionVisit.conditionSpecimeText_11', 'with a Place of Service located in:')"> - +
diff --git a/js/components/cohortbuilder/const.js b/js/components/cohortbuilder/const.js index 92cb8edf9..8f7bc4f8f 100644 --- a/js/components/cohortbuilder/const.js +++ b/js/components/cohortbuilder/const.js @@ -410,6 +410,68 @@ define(["knockout"], function (ko) { descriptionDemographic: 'const.eventsList.addGender.desc_demographic', defaultDescriptionDemographic: 'Filter events based on Gender.', }, + addGenderCS: { + titleEra: 'const.eventsList.addGenderCS.title_era', + defaultTitleEra: 'Add Gender Criteria', + descriptionEra: 'const.eventsList.addGenderCS.desc_era', + defaultDescriptionEra: 'Filter Condition Eras based on Gender.', + titleOccurrence: 'const.eventsList.addGenderCS.title_occurrence', + defaultTitleOccurrence: 'Add Gender', + descriptionOccurrence: 'const.eventsList.addGenderCS.desc_occurrence', + defaultDescriptionOccurrence: 'Filter Condition Occurrences based on Gender.', + titleDeath: 'const.eventsList.addGenderCS.title_death', + defaultTitleDeath: 'Add Gender Criteria', + descriptionDeath: 'const.eventsList.addGenderCS.desc_death', + defaultDescriptionDeath: 'Filter Deaths based on Gender.', + titleDevice: 'const.eventsList.addGenderCS.title_deviceexposure', + defaultTitleDevice: 'Add Gender Criteria', + descriptionDevice: 'const.eventsList.addGenderCS.desc_deviceexposure', + defaultDescriptionDevice: 'Filter Device Exposures based on Gender.', + titleDose: 'const.eventsList.addGenderCS.title_dose', + defaultTitleDose: 'Add Gender Criteria', + descriptionDose: 'const.eventsList.addGenderCS.desc_dose', + defaultDescriptionDose: 'Filter Drug Eras based on Gender.', + titleDrug: 'const.eventsList.addGenderCS.title_drug', + defaultTitleDrug: 'Add Gender Criteria', + descriptionDrug: 'const.eventsList.addGenderCS.desc_drug', + defaultDescriptionDrug: 'Filter Drug Eras based on Gender.', + titleDrugexposure: 'const.eventsList.addGenderCS.title_drugexposure', + defaultTitleDrugexposure: 'Add Gender Criteria', + descriptionDrugexposure: 'const.eventsList.addGenderCS.desc_drugexposure', + defaultDescriptionDrugexposure: 'Filter Drug Exposures based on Gender.', + titleMeasurement: 'const.eventsList.addGenderCS.title_measurement', + defaultTitleMeasurement: 'Add Gender Criteria', + descriptionMeasurement: 'const.eventsList.addGenderCS.desc_measurement', + defaultDescriptionMeasurement: 'Filter Measurements based on Gender.', + titleObservation: 'const.eventsList.addGenderCS.title_observation', + defaultTitleObservation: 'Add Gender Criteria', + descriptionObservation: 'const.eventsList.addGenderCS.desc_observation', + defaultDescriptionObservation: 'Filter Observations based on Gender.', + titlePayerplan: 'const.eventsList.addGenderCS.title_payerplan', + defaultTitlePayerplan: 'Add Gender Criteria', + descriptionPayerplan: 'const.eventsList.addGenderCS.desc_payerplan', + defaultDescriptionPayerplan: 'Filter Payer Plan Periods based on Gender.', + titleProcedureoccurrence: 'const.eventsList.addGenderCS.title_procedureoccurrence', + defaultTitleProcedureoccurrence: 'Add Gender Criteria', + descriptionProcedureoccurrence: 'const.eventsList.addGenderCS.desc_procedureoccurrence', + defaultDescriptionProcedureoccurrence: 'Filter Procedure Occurrences based on Gender.', + titleSpecimen: 'const.eventsList.addGenderCS.title_specimen', + defaultTitleSpecimen: 'Add Gender Criteria', + descriptionSpecimen: 'const.eventsList.addGenderCS.desc_specimen', + defaultDescriptionSpecimen: 'Filter specimens based on Gender.', + titleVisit: 'const.eventsList.addGenderCS.title_visit', + defaultTitleVisit: 'Add Gender Criteria', + descriptionVisit: 'const.eventsList.addGenderCS.desc_visit', + defaultDescriptionVisit: 'Filter Visit Occurrences based on Gender.', + titleVisitdetail: 'const.eventsList.addGenderCS.title_visitDetail', + defaultTitleVisitdetail: 'Add Gender Criteria', + descriptionVisitdetail: 'const.eventsList.addGenderCS.desc_visitDetail', + defaultDescriptionVisitdetail: 'Filter Visit Detail based on Gender.', + titleDemographic: 'const.eventsList.addGenderCS.title_demographic', + defaultTitleDemographic: 'Add Gender Criteria', + descriptionDemographic: 'const.eventsList.addGenderCS.desc_demographic', + defaultDescriptionDemographic: 'Filter events based on Gender.', + }, addDate:{ titleDeath: 'const.eventsList.addDate.title_death', defaultTitleDeath: 'Add Death Date Criteria', @@ -552,6 +614,28 @@ define(["knockout"], function (ko) { descriptionSpecimen: 'const.eventsList.addUnit.desc_specimen', defaultDescriptionSpecimen: 'Filter Specimens by Unit.', }, + addUnitCS: { + titleDose: 'const.eventsList.addUnitCS.title_dose', + defaultTitleDose: 'Add Dose Unit Concept Set Criteria', + descriptionDose: 'const.eventsList.addUnitCS.desc_dose', + defaultDescriptionDose: 'Filter Dose Eras by the Unit.', + titleDrugexposure: 'const.eventsList.addUnitCS.title_drugexposure', + defaultTitleDrugexposure: 'Add Dose Unit Concept Set Criteria', + descriptionDrugexposure: 'const.eventsList.addUnitCS.desc_drugexposure', + defaultDescriptionDrugexposure: 'Filter Drug Exposures by Dose Unit.', + titleMeasurement: 'const.eventsList.addUnitCS.title_measurement', + defaultTitleMeasurement: 'Add Unit Concept Set Criteria', + descriptionMeasurement: 'const.eventsList.addUnitCS.desc_measurement', + defaultDescriptionMeasurement: 'Filter Measurements by the Unit.', + titleObservation: 'const.eventsList.addUnitCS.title_observation', + defaultTitleObservation: 'Add Unit Concept Set Criteria', + descriptionObservation: 'const.eventsList.addUnitCS.desc_observation', + defaultDescriptionObservation: 'Filter Observations by Unit.', + titleSpecimen: 'const.eventsList.addUnitCS.title_specimen', + defaultTitleSpecimen: 'Add Unit Concept Set Criteria', + descriptionSpecimen: 'const.eventsList.addUnitCS.desc_specimen', + defaultDescriptionSpecimen: 'Filter Specimens by Unit.', + }, addConditonCount: { titleEra: 'const.eventsList.addConditonCount.title_era', defaultTitleEra: 'Add Era Conditon Count Criteria', @@ -714,6 +798,52 @@ define(["knockout"], function (ko) { descriptionVisitdetail: 'const.eventsList.addType.desc_visitDetail', defaultDescriptionVisitdetail: 'Filter Visit details by the Visit Type.', }, + addTypeCS: { + titleOccurrence: 'const.eventsList.addTypeCS.title_occurrence', + defaultTitleOccurrence: 'Add Condition Type Concept Set', + descriptionOccurrence: 'const.eventsList.addTypeCS.desc_occurrence', + defaultDescriptionOccurrence: 'Filter Condition Occurrences by the Condition Type.', + titleDeath: 'const.eventsList.addTypeCS.title_death', + defaultTitleDeath: 'Add Death Type Concept Set Criteria', + descriptionDeath: 'const.eventsList.addTypeCS.desc_death', + defaultDescriptionDeath: 'Filter by Death Type.', + titleDevice: 'const.eventsList.addTypeCS.title_deviceexposure', + defaultTitleDevice: 'Add Device Type Concept Set Criteria', + descriptionDevice: 'const.eventsList.addTypeCS.desc_deviceexposure', + defaultDescriptionDevice: 'Filter Device Exposures by the Exposure Type.', + titleDrugexposure: 'const.eventsList.addTypeCS.title_drugexposure', + defaultTitleDrugexposure: 'Add Drug Type Concept Set Criteria', + descriptionDrugexposure: 'const.eventsList.addTypeCS.desc_drugexposure', + defaultDescriptionDrugexposure: 'Filter Drug Exposures by the Drug Type.', + titleMeasurement: 'const.eventsList.addTypeCS.title_measurement', + defaultTitleMeasurement: 'Add Measurement Type Concept Set Criteria', + descriptionMeasurement: 'const.eventsList.addTypeCS.desc_measurement', + defaultDescriptionMeasurement: 'Filter Measurements by the Measurement Type.', + titleObservation: 'const.eventsList.addTypeCS.title_observation', + defaultTitleObservation: 'Add Observation Type Concept Set Criteria', + descriptionObservation: 'const.eventsList.addTypeCS.desc_observation', + defaultDescriptionObservation: 'Filter Observations by the Type.', + titleObservationperiod: 'const.eventsList.addTypeCS.title_observationperiod', + defaultTitleObservationperiod: 'Add Period Type Concept Set Criteria', + descriptionObservationperiod: 'const.eventsList.addTypeCS.desc_observationperiod', + defaultDescriptionObservationperiod: 'Filter Obsevation Periods by Type.', + titleProcedureoccurrence: 'const.eventsList.addTypeCS.title_procedureoccurrence', + defaultTitleProcedureoccurrence: 'Add Procedure Type Concept Set Criteria', + descriptionProcedureoccurrence: 'const.eventsList.addTypeCS.desc_procedureoccurrence', + defaultDescriptionProcedureoccurrence: 'Filter Procedure Occurrences by the Procedure Type.', + titleSpecimen: 'const.eventsList.addTypeCS.title_specimen', + defaultTitleSpecimen: 'Add Specimen Type Concept Set Criteria', + descriptionSpecimen: 'const.eventsList.addTypeCS.desc_specimen', + defaultDescriptionSpecimen: 'Filter Specimen by the Type.', + titleVisit: 'const.eventsList.addTypeCS.title_visit', + defaultTitleVisit: 'Add Visit Type Concept Set Criteria', + descriptionVisit: 'const.eventsList.addTypeCS.desc_visit', + defaultDescriptionVisit: 'Filter Visit Occurrences by the Visit Type.', + titleVisitdetail: 'const.eventsList.addTypeCS.title_visitDetail', + defaultTitleVisitdetail: 'Add Visit detail Type Concept Set Criteria', + descriptionVisitdetail: 'const.eventsList.addTypeCS.desc_visitDetail', + defaultDescriptionVisitdetail: 'Filter Visit details by the Visit Type.', + }, addUserDefined: { titleObservationperiod: 'const.eventsList.addUserDefined.title_observationperiod', defaultTitleObservationperiod: '"Specify Start and End Dates', @@ -798,20 +928,66 @@ define(["knockout"], function (ko) { descriptionVisitdetail: 'const.eventsList.addProviderSpecialty.desc_visitDetail', defaultDescriptionVisitdetail: 'Filter Visit detail based on provider specialty.', }, + addProviderSpecialtyCS: { + titleOccurrence: 'const.eventsList.addProviderSpecialtyCS.title_occurrence', + defaultTitleOccurrence: 'Add Provider Specialty Concept Set', + descriptionOccurrence: 'const.eventsList.addProviderSpecialtyCS.desc_occurrence', + defaultDescriptionOccurrence: 'Filter Condition Occurrences based on provider specialty Concept Set.', + titleDevice: 'const.eventsList.addProviderSpecialtyCS.title_deviceexposure', + defaultTitleDevice: 'Add Provider Specialty Concept Set Criteria', + descriptionDevice: 'const.eventsList.addProviderSpecialtyCS.desc_deviceexposure', + defaultDescriptionDevice: 'Filter Device Exposures based on provider specialty.', + titleDrugexposure: 'const.eventsList.addProviderSpecialtyCS.title_drugexposure', + defaultTitleDrugexposure: 'Add Provider Specialty Concept Set Criteria', + descriptionDrugexposure: 'const.eventsList.addProviderSpecialtyCS.desc_drugexposure', + defaultDescriptionDrugexposure: 'Filter Drug Exposures based on provider specialty.', + titleMeasurement: 'const.eventsList.addProviderSpecialtyCS.title_measurement', + defaultTitleMeasurement: 'Add Provider Specialty Concept Set Criteria', + descriptionMeasurement: 'const.eventsList.addProviderSpecialtyCS.desc_measurement', + defaultDescriptionMeasurement: 'Filter Measurements based on provider specialty.', + titleObservation: 'const.eventsList.addProviderSpecialtyCS.title_observation', + defaultTitleObservation: 'Add Provider Specialty Concept Set Criteria', + descriptionObservation: 'const.eventsList.addProviderSpecialtyCS.desc_observation', + defaultDescriptionObservation: 'Filter Observations based on provider specialty.', + titleProcedureoccurrence: 'const.eventsList.addProviderSpecialtyCS.title_procedureoccurrence', + defaultTitleProcedureoccurrence: 'Add Provider Specialty Concept Set Criteria', + descriptionProcedureoccurrence: 'const.eventsList.addProviderSpecialtyCS.desc_procedureoccurrence', + defaultDescriptionProcedureoccurrence: 'Filter Procedure Occurrences based on provider specialty.', + titleVisit: 'const.eventsList.addProviderSpecialtyCS.title_visit', + defaultTitleVisit: 'Add Provider Specialty Concept Set Criteria', + descriptionVisit: 'const.eventsList.addProviderSpecialtyCS.desc_visit', + defaultDescriptionVisit: 'Filter Visit Occurrences based on provider specialty.', + titleVisitdetail: 'const.eventsList.addProviderSpecialtyCS.title_visitDetail', + defaultTitleVisitdetail: 'Add Provider Specialty Concept Set Criteria', + descriptionVisitdetail: 'const.eventsList.addProviderSpecialtyCS.desc_visitDetail', + defaultDescriptionVisitdetail: 'Filter Visit detail based on provider specialty.', + }, addConditionStatus: { titleOccurrence: 'const.eventsList.addConditionStatus.title_occurrence', defaultTitleOccurrence: 'Add Condition Status', descriptionOccurrence: 'const.eventsList.addConditionStatus.desc_occurrence', defaultDescriptionOccurrence: 'Filter Condition Occurrences based on condition status.', }, + addConditionStatusCS: { + titleOccurrence: 'const.eventsList.addConditionStatusCS.title_occurrence', + defaultTitleOccurrence: 'Add Condition Status Concept Set', + descriptionOccurrence: 'const.eventsList.addConditionStatus.desc_occurrence', + defaultDescriptionOccurrence: 'Filter Condition Occurrences based on condition status.', + }, addPlaceService: { titleVisit: 'const.eventsList.addPlaceService.title_visit', defaultTitleVisit: 'Add Place of Service Criteria', descriptionVisit: 'const.eventsList.addPlaceService.desc_visit', defaultDescriptionVisit: 'Filter Visit Occurrences based on Place of Service.', - titleVisitdetail: 'const.eventsList.addPlaceService.title_visitDetail', - defaultTitleVisitdetail: 'Add Place of Service Criteria', - descriptionVisitdetail: 'const.eventsList.addPlaceService.desc_visitDetail', + }, + addPlaceServiceCS: { + titleVisit: 'const.eventsList.addPlaceServiceCS.title_visit', + defaultTitleVisit: 'Add Place of Service Concept Set Criteria', + descriptionVisit: 'const.eventsList.addPlaceServiceCS.desc_visit', + defaultDescriptionVisit: 'Filter Visit Occurrences based on Place of Service.', + titleVisitdetail: 'const.eventsList.addPlaceServiceCS.title_visitDetail', + defaultTitleVisitdetail: 'Add Place of Service Concept Set Criteria', + descriptionVisitdetail: 'const.eventsList.addPlaceServiceCS.desc_visitDetail', defaultDescriptionVisitdetail: 'Filter Visit detail based on Place of Service.', }, addPlaceServiceLocation: { @@ -876,6 +1052,12 @@ define(["knockout"], function (ko) { descriptionDrugexposure: 'const.eventsList.addRoute.desc_drugexposure', defaultDescriptionDrugexposure: 'Filter Drug Exposures by Route.' }, + addRouteCS: { + titleDrugexposure: 'const.eventsList.addRouteCS.title_drugexposure', + defaultTitleDrugexposure: 'Add Route Concept Set Criteria', + descriptionDrugexposure: 'const.eventsList.addRouteCS.desc_drugexposure', + defaultDescriptionDrugexposure: 'Filter Drug Exposures by Route.' + }, addEffective: { titleDrugexposure: 'const.eventsList.addEffective.title_drugexposure', defaultTitleDrugexposure: 'Add Effective Dose Criteria', @@ -900,6 +1082,12 @@ define(["knockout"], function (ko) { descriptionMeasurement: 'const.eventsList.addOperator.desc_measurement', defaultDescriptionMeasurement: 'Filter Measurements by Operator.' }, + addOperatorCS: { + titleMeasurement: 'const.eventsList.addOperatorCS.title_measurement', + defaultTitleMeasurement: 'Add Operator Concept Set Criteria', + descriptionMeasurement: 'const.eventsList.addOperatorCS.desc_measurement', + defaultDescriptionMeasurement: 'Filter Measurements by Operator.' + }, addValueAsString: { titleObservation: 'const.eventsList.addValueAsString.title_observation', defaultTitleObservation: 'Add Value As String Criteria', @@ -916,6 +1104,16 @@ define(["knockout"], function (ko) { descriptionObservation: 'const.eventsList.addValueAsConcept.desc_observation', defaultDescriptionObservation: 'Filter Observations by the Value As Concept.', }, + addValueAsConceptCS: { + titleMeasurement: 'const.eventsList.addValueAsConceptCS.title_measurement', + defaultTitleMeasurement: 'Add Value as Concept Set Criteria', + descriptionMeasurement: 'const.eventsList.addValueAsConceptCS.desc_measurement', + defaultDescriptionMeasurement: 'Filter Measurements by Value as Concept.', + titleObservation: 'const.eventsList.addValueAsConceptCS.title_observation', + defaultTitleObservation: 'Add Value as Concept Set Criteria', + descriptionObservation: 'const.eventsList.addValueAsConceptCS.desc_observation', + defaultDescriptionObservation: 'Filter Observations by the Value As Concept.', + }, addAbnormal: { titleMeasurement: 'const.eventsList.addAbnormal.title_measurement', defaultTitleMeasurement: 'Add Abnormal Result Criteria', @@ -928,6 +1126,12 @@ define(["knockout"], function (ko) { descriptionObservation: 'const.eventsList.addQualifier.desc_observation', defaultDescriptionObservation: 'Filter Observations by Qualifier.', }, + addQualifierCS: { + titleObservation: 'const.eventsList.addQualifierCS.title_observation', + defaultTitleObservation: 'Add Qualifier Concept Set Criteria', + descriptionObservation: 'const.eventsList.addQualifierCS.desc_observation', + defaultDescriptionObservation: 'Filter Observations by Qualifier.', + }, addRangeLow: { titleMeasurement: 'const.eventsList.addRangeLow.title_measurement', defaultTitleMeasurement: 'Add Low Range Criteria', @@ -1006,18 +1210,36 @@ define(["knockout"], function (ko) { descriptionProcedureoccurrence: 'const.eventsList.addModifier.desc_procedureoccurrence', defaultDescriptionProcedureoccurrence: 'Filter Procedure Occurrences by the Modifier.', }, + addModifierCS: { + titleProcedureoccurrence: 'const.eventsList.addModifierCS.title_procedureoccurrence', + defaultTitleProcedureoccurrence: 'Add Modifier Concept Set Criteria', + descriptionProcedureoccurrence: 'const.eventsList.addModifierCS.desc_procedureoccurrence', + defaultDescriptionProcedureoccurrence: 'Filter Procedure Occurrences by the Modifier.', + }, addAnatomicSite: { titleSpecimen: 'const.eventsList.addAnatomicSite.title_specimen', defaultTitleSpecimen: 'Add Anatomic Site Criteria', descriptionSpecimen: 'const.eventsList.addAnatomicSite.desc_specimen', defaultDescriptionSpecimen: 'Filter Specimens by the Anatomic Site.', }, + addAnatomicSiteCS: { + titleSpecimen: 'const.eventsList.addAnatomicSiteCS.title_specimen', + defaultTitleSpecimen: 'Add Anatomic Site Concept Set Criteria', + descriptionSpecimen: 'const.eventsList.addAnatomicSiteCS.desc_specimen', + defaultDescriptionSpecimen: 'Filter Specimens by the Anatomic Site.', + }, addDiseaseStatus: { titleSpecimen: 'const.eventsList.addDiseaseStatus.title_specimen', defaultTitleSpecimen: 'Add Disease Status Criteria', descriptionSpecimen: 'const.eventsList.addDiseaseStatus.desc_specimen', defaultDescriptionSpecimen: 'Filter Specimens by the Disease Status.', }, + addDiseaseStatusCS: { + titleSpecimen: 'const.eventsList.addDiseaseStatusCS.title_specimen', + defaultTitleSpecimen: 'Add Disease Status Concept Set Criteria', + descriptionSpecimen: 'const.eventsList.addDiseaseStatusCS.desc_specimen', + defaultDescriptionSpecimen: 'Filter Specimens by the Disease Status.', + }, addSourceId: { titleSpecimen: 'const.eventsList.addSourceId.title_specimen', defaultTitleSpecimen: 'Add Source ID Criteria', @@ -1030,12 +1252,24 @@ define(["knockout"], function (ko) { descriptionDemographic: 'const.eventsList.addRace.desc_demographic', defaultDescriptionDemographic: 'Filter events based on Race.', }, + addRaceCS: { + titleDemographic: 'const.eventsList.addRaceCS.title_demographic', + defaultTitleDemographic: 'Add Race Concept Set Criteria', + descriptionDemographic: 'const.eventsList.addRace.desc_demographic', + defaultDescriptionDemographic: 'Filter events based on Race.', + }, addEthnicity: { titleDemographic: 'const.eventsList.addEthnicity.title_demographic', defaultTitleDemographic: 'Add Ethnicity Criteria', descriptionDemographic: 'const.eventsList.addEthnicity.desc_demographic', defaultDescriptionDemographic: 'Filter events based on Ethnicity.', }, + addEthnicityCS: { + titleDemographic: 'const.eventsList.addEthnicityCS.title_demographic', + defaultTitleDemographic: 'Add Ethnicity Concept Set Criteria', + descriptionDemographic: 'const.eventsList.addEthnicity.desc_demographic', + defaultDescriptionDemographic: 'Filter events based on Ethnicity.', + }, addGroup: { title: 'const.eventsList.addGroup.title', defaultTitle: 'Add Group', @@ -1064,6 +1298,32 @@ define(["knockout"], function (ko) { descriptionGroup: 'const.eventsList.addLocationRegion.desc_group', defaultDescriptionGroup: 'Find patients within geographical area.', }, + addVisitCS: { + titleOccurrence: 'const.eventsList.addVisitCS.title_occurrence', + defaultTitleOccurrence: 'Add Visit Occurrence Concept Set', + descriptionOccurrence: 'const.eventsList.addVisitCS.desc_occurrence', + defaultDescriptionOccurrence: 'Filter Condition Occurrences based on visit occurrence of diagnosis.', + titleDevice: 'const.eventsList.addVisitCS.title_deviceexposure', + defaultTitleDevice: 'Add Visit Concept Set Criteria', + descriptionDevice: 'const.eventsList.addVisitCS.desc_deviceexposure', + defaultDescriptionDevice: 'Filter Device Exposures based on visit occurrence of exposure.', + titleDrugexposure: 'const.eventsList.addVisitCS.title_drugexposure', + defaultTitleDrugexposure: 'Add Visit Concept Set Criteria', + descriptionDrugexposure: 'const.eventsList.addVisitCS.desc_drugexposure', + defaultDescriptionDrugexposure: 'Filter Drug Exposures based on visit occurrence of drug exposure.', + titleMeasurement: 'const.eventsList.addVisitCS.title_measurement', + defaultTitleMeasurement: 'Add Visit Concept Set Criteria', + descriptionMeasurement: 'const.eventsList.addVisitCS.desc_measurement', + defaultDescriptionMeasurement: 'Filter Measurements based on visit occurrence of measurement.', + titleObservation: 'const.eventsList.addVisitCS.title_observation', + defaultTitleObservation: 'Add Visit Concept Set Criteria', + descriptionObservation: 'const.eventsList.addVisitCS.desc_observation', + defaultDescriptionObservation: 'Filter Observations based on visit occurrence of observation.', + titleProcedureoccurrence: 'const.eventsList.addVisitCS.title_procedureoccurrence', + defaultTitleProcedureoccurrence: 'Add Visit Concept Set Criteria', + descriptionProcedureoccurrence: 'const.eventsList.addVisitCS.desc_procedureoccurrence', + defaultDescriptionProcedureoccurrence: 'Filter Procedure Occurrences based on visit occurrence of procedure.', + }, }; @@ -1149,6 +1409,7 @@ define(["knockout"], function (ko) { 'addAgeAtEnd', "addDateAdjustment", 'addGender', + 'addGenderCS', 'addStartDate', 'addEndDate', 'addConditonCount', @@ -1159,23 +1420,30 @@ define(["knockout"], function (ko) { 'addFirstDiagnosis', 'addAge', 'addGender', + 'addGenderCS', 'addConditionStatus', + 'addConditionStatusCS', 'addStartDate', 'addEndDate', 'addDateAdjustment', 'addType', + 'addTypeCS', 'addVisit', + 'addVisitCS', 'addStopReason', 'addSourceConcept', 'addProviderSpecialty', + 'addProviderSpecialtyCS', 'addNested', ]; const deathAttributesList = [ 'addDateAdjustment', 'addAge', 'addGender', + 'addGenderCS', 'addDate', 'addType', + 'addTypeCS', 'addSourceConcept', 'addNested', ]; @@ -1184,14 +1452,18 @@ define(["knockout"], function (ko) { 'addFirstDiagnosis', 'addAge', 'addGender', + 'addGenderCS', 'addStartDate', 'addEndDate', 'addType', + 'addTypeCS', 'addVisit', + 'addVisitCS', 'addUniqueId', 'addQuantity', - 'addSourceConcept', 'addProviderSpecialty', + 'addSourceConcept', + 'addProviderSpecialtyCS', 'addNested', ]; const doseAttributesList = [ @@ -1200,9 +1472,11 @@ define(["knockout"], function (ko) { 'addAgeAtStart', 'addAgeAtEnd', 'addGender', + 'addGenderCS', 'addStartDate', 'addEndDate', 'addUnit', + 'addUnitCS', 'addLength', 'addValue', 'addNested', @@ -1213,6 +1487,7 @@ define(["knockout"], function (ko) { 'addAgeAtStart', 'addAgeAtEnd', 'addGender', + 'addGenderCS', 'addStartDate', 'addEndDate', 'addLength', @@ -1224,19 +1499,26 @@ define(["knockout"], function (ko) { 'addFirstDiagnosis', 'addAge', 'addGender', + 'addGenderCS', 'addDate', 'addType', + 'addTypeCS', 'addVisit', + 'addVisitCS', 'addOperator', + 'addOperatorCS', 'addValue', 'addValueAsConcept', + 'addValueAsConceptCS', 'addUnit', + 'addUnitCS', 'addAbnormal', 'addRangeLow', 'addRangeHigh', 'addRangeLowRatio', 'addRangeHighRatio', 'addProviderSpecialty', + 'addProviderSpecialtyCS', 'addSourceConcept', 'addNested' ]; @@ -1245,20 +1527,26 @@ define(["knockout"], function (ko) { 'addFirstDiagnosis', 'addAge', 'addGender', + 'addGenderCS', 'addStartDate', 'addEndDate', 'addType', + 'addTypeCS', 'addVisit', + 'addVisitCS', 'addStopReason', 'addRefills', 'addQuantity', 'addDaysSupply', 'addRoute', + 'addRouteCS', 'addEffective', 'addUnit', + 'addUnitCS', 'addLotNumber', 'addSource', 'addProviderSpecialty', + 'addProviderSpecialtyCS', 'addNested', ]; const observationAttributesList = [ @@ -1266,16 +1554,23 @@ define(["knockout"], function (ko) { 'addFirstDiagnosis', 'addAge', 'addGender', + 'addGenderCS', 'addDate', 'addType', + 'addTypeCS', 'addVisit', + 'addVisitCS', 'addValue', 'addValueAsString', 'addValueAsConcept', + 'addValueAsConceptCS', 'addQualifier', + 'addQualifierCS', 'addUnit', + 'addUnitCS', 'addSourceConcept', 'addProviderSpecialty', + 'addProviderSpecialtyCS', 'addNested', ]; const observationPeriodAttributesList = [ @@ -1287,6 +1582,7 @@ define(["knockout"], function (ko) { 'addStartDate', 'addEndDate', 'addType', + 'addTypeCS', 'addLength', 'addNested', ]; @@ -1297,6 +1593,7 @@ define(["knockout"], function (ko) { 'addAgeAtEnd', 'addLength', 'addGender', + 'addGenderCS', 'addUserDefined', 'addStartDate', 'addEndDate', @@ -1314,69 +1611,84 @@ define(["knockout"], function (ko) { 'addDateAdjustment', 'addFirstDiagnosis', 'addVisit', + 'addVisitCS', 'addGender', + 'addGenderCS', 'addAge', 'addType', + 'addTypeCS', 'addSourceConcept', 'addProviderSpecialty', + 'addProviderSpecialtyCS', 'addDate', 'addQuantity', 'addModifier', + 'addModifierCS', 'addNested', ]; const specimenAttributesList = [ 'addDateAdjustment', 'addFirstDiagnosis', 'addGender', + 'addGenderCS', 'addNested', 'addAge', 'addType', + 'addTypeCS', 'addDate', 'addQuantity', 'addUnit', + 'addUnitCS', 'addAnatomicSite', + 'addAnatomicSiteCS', 'addDiseaseStatus', + 'addDiseaseStatusCS', 'addSourceId', ]; const visitAttributesList = [ 'addDateAdjustment', 'addFirstDiagnosis', 'addGender', + 'addGenderCS', 'addStartDate', 'addEndDate', 'addLength', 'addAge', 'addType', + 'addTypeCS', 'addSourceConcept', 'addProviderSpecialty', + 'addProviderSpecialtyCS', 'addPlaceService', + 'addPlaceServiceCS', 'addPlaceServiceLocation', - 'addPlaceServiceDistance', 'addNested', ]; const visitDetailAttributesList = [ 'addDateAdjustment', 'addFirstDiagnosis', - 'addGender', + 'addGenderCS', 'addStartDate', 'addEndDate', 'addLength', 'addAge', - 'addType', + 'addTypeCS', 'addSourceConcept', - 'addProviderSpecialty', - 'addPlaceService', + 'addProviderSpecialtyCS', + 'addPlaceServiceCS', 'addPlaceServiceLocation', - 'addPlaceServiceDistance', 'addNested', ]; const demographicAttributesList = [ 'addAge', 'addGender', + 'addGenderCS', 'addStartDate', 'addEndDate', 'addRace', + 'addRaceCS', 'addEthnicity', + 'addEthnicityCS', ]; const windowedpAttributesList = [ 'addDemographic', diff --git a/js/components/cohortdefinitionviewer/components/ConditionEra.js b/js/components/cohortdefinitionviewer/components/ConditionEra.js index ff100368a..1015cd25b 100644 --- a/js/components/cohortdefinitionviewer/components/ConditionEra.js +++ b/js/components/cohortdefinitionviewer/components/ConditionEra.js @@ -1,4 +1,4 @@ -define(['knockout', 'components/cohortbuilder/options', 'text!./ConditionEraTemplate.html'], function (ko, options, template) { +define(['knockout', 'components/cohortbuilder/options', "components/cohortbuilder/utils", 'text!./ConditionEraTemplate.html'], function (ko, options, utils, template) { function ConditionEraViewModel(params) { @@ -7,15 +7,16 @@ define(['knockout', 'components/cohortbuilder/options', 'text!./ConditionEraTemp self.Criteria = params.criteria.ConditionEra; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().find(function (item) { return item.id == codesetId }); - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.pureComputed(() => { + var anyCondition = ko.i18n('components.conditionEra.anyConditionButton', 'Any Condition'); + var message = ko.i18n('components.conditionEra.returnText_1', 'The index date refers to the condition era of'); + var conceptSetName = utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + anyCondition() + ); + return `${message()} ${conceptSetName}.`; + }); } // return compoonent definition diff --git a/js/components/cohortdefinitionviewer/components/ConditionEraTemplate.html b/js/components/cohortdefinitionviewer/components/ConditionEraTemplate.html index 39059a6ca..e3cc42405 100644 --- a/js/components/cohortdefinitionviewer/components/ConditionEraTemplate.html +++ b/js/components/cohortdefinitionviewer/components/ConditionEraTemplate.html @@ -50,8 +50,17 @@ + +
  • + + + +
  • + - + diff --git a/js/components/cohortdefinitionviewer/components/ConditionOccurrence.js b/js/components/cohortdefinitionviewer/components/ConditionOccurrence.js index 2f2ead08b..760899e7e 100644 --- a/js/components/cohortdefinitionviewer/components/ConditionOccurrence.js +++ b/js/components/cohortdefinitionviewer/components/ConditionOccurrence.js @@ -1,4 +1,5 @@ -define(['knockout', 'components/cohortbuilder/options', 'components/cohortbuilder/InputTypes/Range', 'components/cohortbuilder/InputTypes/Text', 'text!./ConditionOccurrenceTemplate.html'], function (ko, options, Range, Text, template) { +define(['knockout', 'components/cohortbuilder/options', "components/cohortbuilder/utils", 'text!./ConditionOccurrenceTemplate.html' +], function (ko, options, utils, template) { function ConditionOccurrenceViewModel(params) { @@ -7,15 +8,17 @@ define(['knockout', 'components/cohortbuilder/options', 'components/cohortbuilde self.Criteria = params.criteria.ConditionOccurrence; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.i18nformat( + 'components.conditionOccurrence.indexDataText', + 'The index date refers to the condition occurrence of <%= conceptSetName %>.', + { + conceptSetName: ko.pureComputed(() => utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + ko.i18n('components.conditionOccurrence.anyCondition', 'Any Condition') + )), + } + ); } // return compoonent definition diff --git a/js/components/cohortdefinitionviewer/components/ConditionOccurrenceTemplate.html b/js/components/cohortdefinitionviewer/components/ConditionOccurrenceTemplate.html index 8cd586232..dfb2400ee 100644 --- a/js/components/cohortdefinitionviewer/components/ConditionOccurrenceTemplate.html +++ b/js/components/cohortdefinitionviewer/components/ConditionOccurrenceTemplate.html @@ -26,11 +26,35 @@ data-bind="text: ko.i18n('components.conditionOccurrence.conditionOccurrenceText_4', 'occurrence end is:')"> + +
  • + with a condition status of: + +
  • + + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • @@ -51,18 +75,45 @@
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • + - + diff --git a/js/components/cohortdefinitionviewer/components/CriteriaGroup.js b/js/components/cohortdefinitionviewer/components/CriteriaGroup.js index 6ebbc1a60..79e4fe53d 100644 --- a/js/components/cohortdefinitionviewer/components/CriteriaGroup.js +++ b/js/components/cohortdefinitionviewer/components/CriteriaGroup.js @@ -1,4 +1,5 @@ -define(['knockout','components/cohortbuilder/CriteriaTypes','components/cohortbuilder/CriteriaGroup','components/cohortbuilder/AdditionalCriteria','components/cohortbuilder/options', 'text!./CriteriaGroupTemplate.html'], function (ko, criteriaTypes, CriteriaGroup, AdditionalCriteria, options, template) { +define(['knockout','components/cohortbuilder/options', 'text!./CriteriaGroupTemplate.html' +], function (ko, options, template) { function CriteriaGroupViewModel(params) { var self = this; @@ -7,7 +8,7 @@ define(['knockout','components/cohortbuilder/CriteriaTypes','components/cohortbu self.group = params.group; self.parentGroup = params.parentGroup; self.options = options; - self.selectedFragment = params.selectedFragment; + self.indexMessage = params.indexMessage; self.getCriteriaComponent = function (data) { diff --git a/js/components/cohortdefinitionviewer/components/CriteriaGroupTemplate.html b/js/components/cohortdefinitionviewer/components/CriteriaGroupTemplate.html index 120d4d844..13d331907 100644 --- a/js/components/cohortdefinitionviewer/components/CriteriaGroupTemplate.html +++ b/js/components/cohortdefinitionviewer/components/CriteriaGroupTemplate.html @@ -20,7 +20,7 @@ - + @@ -49,6 +49,7 @@
    +
    diff --git a/js/components/cohortdefinitionviewer/components/Death.js b/js/components/cohortdefinitionviewer/components/Death.js index d7d686fe1..c8e4dd7b3 100644 --- a/js/components/cohortdefinitionviewer/components/Death.js +++ b/js/components/cohortdefinitionviewer/components/Death.js @@ -1,4 +1,5 @@ -define(['knockout','components/cohortbuilder/options','components/cohortbuilder/InputTypes/Range','components/cohortbuilder/InputTypes/Text', 'text!./DeathTemplate.html'], function (ko, options, Range, Text, template) { +define(['knockout','components/cohortbuilder/options','components/cohortbuilder/utils', 'text!./DeathTemplate.html' +], function (ko, options, utils, template) { function DeathViewModel(params) { var self = this; @@ -7,15 +8,17 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.Criteria = params.criteria.Death; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.i18nformat( + 'components.conditionDeath.indexDataText', + 'The index date refers to the death event of <%= conceptSetName %>.', + { + conceptSetName: ko.pureComputed(() => utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + ko.i18n('components.conditionDeath.anyDeath', 'Any Death') + )) + } + ); } diff --git a/js/components/cohortdefinitionviewer/components/DeathTemplate.html b/js/components/cohortdefinitionviewer/components/DeathTemplate.html index ed3a0f972..f299337ad 100644 --- a/js/components/cohortdefinitionviewer/components/DeathTemplate.html +++ b/js/components/cohortdefinitionviewer/components/DeathTemplate.html @@ -14,10 +14,19 @@ -
  • - - -
  • +
  • + + +
  • + + +
  • + + + + +
  • @@ -34,8 +43,17 @@
  • + +
  • + + + + +
  • + - + diff --git a/js/components/cohortdefinitionviewer/components/DemographicCriteria.js b/js/components/cohortdefinitionviewer/components/DemographicCriteria.js index c56182c46..9a6b76992 100644 --- a/js/components/cohortdefinitionviewer/components/DemographicCriteria.js +++ b/js/components/cohortdefinitionviewer/components/DemographicCriteria.js @@ -1,11 +1,12 @@ -define(['knockout', 'text!./DemographicCriteriaTemplate.html', -], function (ko, template) { +define(['knockout','components/cohortbuilder/options', 'text!./DemographicCriteriaTemplate.html', +], function (ko, options, template) { function DemographicCriteriaViewModel(params) { var self = this; self.Criteria = params.criteria; - + self.expression = ko.utils.unwrapObservable(params.expression); + self.options = options; } // return compoonent definition diff --git a/js/components/cohortdefinitionviewer/components/DemographicCriteriaTemplate.html b/js/components/cohortdefinitionviewer/components/DemographicCriteriaTemplate.html index 58cce4fe1..bf4ef64fb 100644 --- a/js/components/cohortdefinitionviewer/components/DemographicCriteriaTemplate.html +++ b/js/components/cohortdefinitionviewer/components/DemographicCriteriaTemplate.html @@ -10,16 +10,43 @@ + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • diff --git a/js/components/cohortdefinitionviewer/components/DeviceExposure.js b/js/components/cohortdefinitionviewer/components/DeviceExposure.js index 619c18ced..54d0c4c55 100644 --- a/js/components/cohortdefinitionviewer/components/DeviceExposure.js +++ b/js/components/cohortdefinitionviewer/components/DeviceExposure.js @@ -1,4 +1,5 @@ -define(['knockout','components/cohortbuilder/options','components/cohortbuilder/InputTypes/Range','components/cohortbuilder/InputTypes/Text', 'text!./DeviceExposureTemplate.html'], function (ko, options, Range, Text, template) { +define(['knockout','components/cohortbuilder/options','components/cohortbuilder/utils', 'text!./DeviceExposureTemplate.html' +], function (ko, options, utils, template) { function DeviceExposureViewModel(params) { var self = this; @@ -7,15 +8,17 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.Criteria = params.criteria.DeviceExposure; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.i18nformat( + 'components.conditionDevice.indexDataText', + 'The index date refers to the device exposure of <%= conceptSetName %>.', + { + conceptSetName: ko.pureComputed(() => utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + ko.i18n('components.conditionDevice.anyDevice', 'Any Device') + )) + } + ); } diff --git a/js/components/cohortdefinitionviewer/components/DeviceExposureTemplate.html b/js/components/cohortdefinitionviewer/components/DeviceExposureTemplate.html index f318c238c..5b5ff264f 100644 --- a/js/components/cohortdefinitionviewer/components/DeviceExposureTemplate.html +++ b/js/components/cohortdefinitionviewer/components/DeviceExposureTemplate.html @@ -28,6 +28,15 @@
  • + +
  • + + + + +
  • +
  • @@ -48,18 +57,45 @@
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • + - + diff --git a/js/components/cohortdefinitionviewer/components/DoseEra.js b/js/components/cohortdefinitionviewer/components/DoseEra.js index a6105ff0b..f6bb5621e 100644 --- a/js/components/cohortdefinitionviewer/components/DoseEra.js +++ b/js/components/cohortdefinitionviewer/components/DoseEra.js @@ -1,4 +1,5 @@ -define(['knockout','components/cohortbuilder/options','components/cohortbuilder/InputTypes/Range', 'text!./DoseEraTemplate.html'], function (ko, options, Range, template) { +define(['knockout', 'components/cohortbuilder/options', 'components/cohortbuilder/utils', 'text!./DoseEraTemplate.html' +], function (ko, options, utils, template) { function DoseEraViewModel(params) { @@ -7,15 +8,17 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.Criteria = params.criteria.DoseEra; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.i18nformat( + 'components.conditionDose.indexDataText', + 'The index date refers to the dose era of <%= conceptSetName %>.', + { + conceptSetName: ko.pureComputed(() => utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + ko.i18n('components.conditionDose.anyDoseEra', 'Any Dose Era') + )) + } + ); } diff --git a/js/components/cohortdefinitionviewer/components/DoseEraTemplate.html b/js/components/cohortdefinitionviewer/components/DoseEraTemplate.html index 9b887f8f5..94e78962b 100644 --- a/js/components/cohortdefinitionviewer/components/DoseEraTemplate.html +++ b/js/components/cohortdefinitionviewer/components/DoseEraTemplate.html @@ -28,6 +28,15 @@ + +
  • + + + + +
  • +
  • @@ -53,8 +62,17 @@
  • + +
  • + + + + +
  • + - + diff --git a/js/components/cohortdefinitionviewer/components/DrugEra.js b/js/components/cohortdefinitionviewer/components/DrugEra.js index ff8da2415..5c4e6a584 100644 --- a/js/components/cohortdefinitionviewer/components/DrugEra.js +++ b/js/components/cohortdefinitionviewer/components/DrugEra.js @@ -7,15 +7,17 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.Criteria = params.criteria.DrugEra; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.i18nformat( + 'components.conditionDrug.indexDataText', + 'The index date refers to the drug era of <%= conceptSetName %>.', + { + conceptSetName: ko.pureComputed(() => utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + ko.i18n('components.conditionDrug.anyDrug', 'Any Drug') + )) + } + ); } diff --git a/js/components/cohortdefinitionviewer/components/DrugEraTemplate.html b/js/components/cohortdefinitionviewer/components/DrugEraTemplate.html index 129248c3a..66af2164d 100644 --- a/js/components/cohortdefinitionviewer/components/DrugEraTemplate.html +++ b/js/components/cohortdefinitionviewer/components/DrugEraTemplate.html @@ -53,8 +53,17 @@ + +
  • + + + + +
  • + - + diff --git a/js/components/cohortdefinitionviewer/components/DrugExposure.js b/js/components/cohortdefinitionviewer/components/DrugExposure.js index 2d939ac28..7766bb1c4 100644 --- a/js/components/cohortdefinitionviewer/components/DrugExposure.js +++ b/js/components/cohortdefinitionviewer/components/DrugExposure.js @@ -7,15 +7,17 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.Criteria = params.criteria.DrugExposure; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.i18nformat( + 'components.conditionDrugExposure.indexDataText', + 'The index date refers to the drug exposure of <%= conceptSetName %>.', + { + conceptSetName: ko.pureComputed(() => utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + ko.i18n('components.conditionDrugExposure.anyDrug', 'Any Drug') + )) + } + ); } diff --git a/js/components/cohortdefinitionviewer/components/DrugExposureTemplate.html b/js/components/cohortdefinitionviewer/components/DrugExposureTemplate.html index b891f7166..e04997ffe 100644 --- a/js/components/cohortdefinitionviewer/components/DrugExposureTemplate.html +++ b/js/components/cohortdefinitionviewer/components/DrugExposureTemplate.html @@ -28,6 +28,15 @@ + +
  • + + + + +
  • +
  • @@ -53,6 +62,15 @@
  • + +
  • + + + + +
  • +
  • @@ -63,6 +81,15 @@
  • + +
  • + + + + +
  • +
  • @@ -83,18 +110,45 @@
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • + - + diff --git a/js/components/cohortdefinitionviewer/components/Measurement.js b/js/components/cohortdefinitionviewer/components/Measurement.js index e3fb42bb6..c426d7857 100644 --- a/js/components/cohortdefinitionviewer/components/Measurement.js +++ b/js/components/cohortdefinitionviewer/components/Measurement.js @@ -1,4 +1,5 @@ -define(['knockout','components/cohortbuilder/options','components/cohortbuilder/InputTypes/Range','components/cohortbuilder/InputTypes/Text', 'text!./MeasurementTemplate.html'], function (ko, options, Range, Text, template) { +define(['knockout','components/cohortbuilder/options','components/cohortbuilder/utils', 'text!./MeasurementTemplate.html' +], function (ko, options, utils, template) { function MeasurementViewModel(params) { var self = this; @@ -7,15 +8,14 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.Criteria = params.criteria.Measurement; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.pureComputed(() => { + var conceptSetName = utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + "" + ); + return `${conceptSetName}.`; + }); } diff --git a/js/components/cohortdefinitionviewer/components/MeasurementTemplate.html b/js/components/cohortdefinitionviewer/components/MeasurementTemplate.html index 535d72dac..da349cadb 100644 --- a/js/components/cohortdefinitionviewer/components/MeasurementTemplate.html +++ b/js/components/cohortdefinitionviewer/components/MeasurementTemplate.html @@ -23,11 +23,29 @@ + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • @@ -36,13 +54,31 @@
  • -
  • + + + +
  • + + + + +
  • + +
  • + + + + +
  • +
  • @@ -83,18 +119,45 @@
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • + - + diff --git a/js/components/cohortdefinitionviewer/components/Observation.js b/js/components/cohortdefinitionviewer/components/Observation.js index e5e2bef9d..78502a5d9 100644 --- a/js/components/cohortdefinitionviewer/components/Observation.js +++ b/js/components/cohortdefinitionviewer/components/Observation.js @@ -1,4 +1,5 @@ -define(['knockout','components/cohortbuilder/options','components/cohortbuilder/InputTypes/Range','components/cohortbuilder/InputTypes/Text', 'text!./ObservationTemplate.html'], function (ko, options, Range, Text, template) { +define(['knockout', 'components/cohortbuilder/options', 'components/cohortbuilder/utils', 'text!./ObservationTemplate.html' +], function (ko, options, utils, template) { function ObservationViewModel(params) { var self = this; @@ -7,16 +8,17 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.Criteria = params.criteria.Observation; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; - + self.indexMessage = ko.i18nformat( + 'components.conditionObservation.indexDataText', + 'The index date refers to the observation of <%= conceptSetName %>.', + { + conceptSetName: ko.pureComputed(() => utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + ko.i18n('components.conditionObservation.anyObservation', 'Any Observation') + )) + } + ); } // return compoonent definition diff --git a/js/components/cohortdefinitionviewer/components/ObservationPeriod.js b/js/components/cohortdefinitionviewer/components/ObservationPeriod.js index d55f75d8b..5c9a15ce5 100644 --- a/js/components/cohortdefinitionviewer/components/ObservationPeriod.js +++ b/js/components/cohortdefinitionviewer/components/ObservationPeriod.js @@ -1,4 +1,5 @@ -define(['knockout','components/cohortbuilder/options','components/cohortbuilder/InputTypes/Range', 'text!./ObservationPeriodTemplate.html'], function (ko, options, Range, template) { +define(['knockout','components/cohortbuilder/options','components/cohortbuilder/utils', 'text!./ObservationPeriodTemplate.html' +], function (ko, options, utils, template) { function ObservationPeriodViewModel(params) { var self = this; @@ -6,17 +7,6 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.expression = ko.utils.unwrapObservable(params.expression); self.Criteria = params.criteria.ObservationPeriod; self.options = options; - - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; - } // return compoonent definition diff --git a/js/components/cohortdefinitionviewer/components/ObservationPeriodTemplate.html b/js/components/cohortdefinitionviewer/components/ObservationPeriodTemplate.html index d3ced30a8..58c542e1d 100644 --- a/js/components/cohortdefinitionviewer/components/ObservationPeriodTemplate.html +++ b/js/components/cohortdefinitionviewer/components/ObservationPeriodTemplate.html @@ -32,6 +32,15 @@ + +
  • + + + + +
  • +
  • @@ -48,7 +57,7 @@
  • - + diff --git a/js/components/cohortdefinitionviewer/components/ObservationTemplate.html b/js/components/cohortdefinitionviewer/components/ObservationTemplate.html index 3882c6414..092be2418 100644 --- a/js/components/cohortdefinitionviewer/components/ObservationTemplate.html +++ b/js/components/cohortdefinitionviewer/components/ObservationTemplate.html @@ -23,6 +23,15 @@ + +
  • + + + + +
  • +
  • @@ -36,18 +45,45 @@
  • -
  • + + + +
  • + + + + +
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • @@ -58,15 +94,42 @@
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • + +
  • + +
  • + +
  • - -
  • + + + + + diff --git a/js/components/cohortdefinitionviewer/components/PayerPlanPeriod.js b/js/components/cohortdefinitionviewer/components/PayerPlanPeriod.js index a187b6680..6321aedcc 100644 --- a/js/components/cohortdefinitionviewer/components/PayerPlanPeriod.js +++ b/js/components/cohortdefinitionviewer/components/PayerPlanPeriod.js @@ -1,4 +1,5 @@ -define(['knockout','components/cohortbuilder/options','components/cohortbuilder/InputTypes/Range', 'text!./PayerPlanPeriodTemplate.html'], function (ko, options, Range, template) { +define(['knockout','components/cohortbuilder/options', 'text!./PayerPlanPeriodTemplate.html' +], function (ko, options, template) { function PayerPlanPeriodViewModel(params) { var self = this; @@ -6,15 +7,7 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.Criteria = params.criteria.PayerPlanPeriod; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.i18n('components.conditionPayerPlanPeriod.indexDataText', 'The index date refers to the payer plan period.'); } return { diff --git a/js/components/cohortdefinitionviewer/components/PayerPlanPeriodTemplate.html b/js/components/cohortdefinitionviewer/components/PayerPlanPeriodTemplate.html index 2dca1a133..db4dfed97 100644 --- a/js/components/cohortdefinitionviewer/components/PayerPlanPeriodTemplate.html +++ b/js/components/cohortdefinitionviewer/components/PayerPlanPeriodTemplate.html @@ -48,6 +48,15 @@ + +
  • + + + + +
  • +
  • @@ -87,7 +96,7 @@
  • - + \ No newline at end of file diff --git a/js/components/cohortdefinitionviewer/components/ProcedureOccurrence.js b/js/components/cohortdefinitionviewer/components/ProcedureOccurrence.js index 11c735577..7809620c8 100644 --- a/js/components/cohortdefinitionviewer/components/ProcedureOccurrence.js +++ b/js/components/cohortdefinitionviewer/components/ProcedureOccurrence.js @@ -1,4 +1,5 @@ -define(['knockout','components/cohortbuilder/options','components/cohortbuilder/InputTypes/Range','components/cohortbuilder/InputTypes/Text', 'text!./ProcedureOccurrenceTemplate.html'], function (ko, options, Range, Text, template) { +define(['knockout', 'components/cohortbuilder/options', 'components/cohortbuilder/utils', 'text!./ProcedureOccurrenceTemplate.html' +], function (ko, options, utils, template) { function ProcedureOccurrenceViewModel(params) { var self = this; @@ -7,15 +8,17 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.Criteria = params.criteria.ProcedureOccurrence; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.i18nformat( + 'components.conditionProcedureOccurrence.indexDataText', + 'The index date refers to the procedure of <%= conceptSetName %>.', + { + conceptSetName: ko.pureComputed(() => utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + ko.i18n('components.conditionProcedureOccurrence.anyProcedure', 'Any Procedure') + )) + } + ); } diff --git a/js/components/cohortdefinitionviewer/components/ProcedureOccurrenceTemplate.html b/js/components/cohortdefinitionviewer/components/ProcedureOccurrenceTemplate.html index 94e1dc227..1b56a1296 100644 --- a/js/components/cohortdefinitionviewer/components/ProcedureOccurrenceTemplate.html +++ b/js/components/cohortdefinitionviewer/components/ProcedureOccurrenceTemplate.html @@ -23,11 +23,30 @@ + +
  • +
    + + + + +
  • +
  • + +
  • + + + + +
  • +
  • @@ -48,18 +67,45 @@
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • + - + diff --git a/js/components/cohortdefinitionviewer/components/Specimen.js b/js/components/cohortdefinitionviewer/components/Specimen.js index 15ffdb5a2..df4cd8fb4 100644 --- a/js/components/cohortdefinitionviewer/components/Specimen.js +++ b/js/components/cohortdefinitionviewer/components/Specimen.js @@ -1,4 +1,5 @@ -define(['knockout','components/cohortbuilder/options','components/cohortbuilder/InputTypes/Range','components/cohortbuilder/InputTypes/Text', 'text!./SpecimenTemplate.html'], function (ko, options, Range, Text, template) { +define(['knockout','components/cohortbuilder/options','components/cohortbuilder/utils', 'text!./SpecimenTemplate.html' +], function (ko, options, utils, template) { function SpecimenViewModel(params) { var self = this; @@ -6,15 +7,17 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.Criteria = params.criteria.Specimen; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.i18nformat( + 'components.conditionSpecimen.indexDataText', + 'The index date refers to the specimen of <%= conceptSetName %>.', + { + conceptSetName: ko.pureComputed(() => utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + ko.i18n('components.conditionSpecimen.anySpecimen', 'Any Specimen') + )) + } + ); } diff --git a/js/components/cohortdefinitionviewer/components/SpecimenTemplate.html b/js/components/cohortdefinitionviewer/components/SpecimenTemplate.html index f7afc8011..860358df8 100644 --- a/js/components/cohortdefinitionviewer/components/SpecimenTemplate.html +++ b/js/components/cohortdefinitionviewer/components/SpecimenTemplate.html @@ -24,6 +24,15 @@ + +
  • + + + + +
  • +
  • @@ -34,16 +43,43 @@
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • + +
  • + + + + +
  • +
  • @@ -59,8 +95,17 @@
  • + +
  • + + + + +
  • + - + diff --git a/js/components/cohortdefinitionviewer/components/VisitDetail.js b/js/components/cohortdefinitionviewer/components/VisitDetail.js index cc5353d92..0e19c228f 100644 --- a/js/components/cohortdefinitionviewer/components/VisitDetail.js +++ b/js/components/cohortdefinitionviewer/components/VisitDetail.js @@ -1,10 +1,12 @@ define([ "knockout", 'components/cohortbuilder/options', + "components/cohortbuilder/utils", "text!./VisitDetailTemplate.html", ], function ( ko, options, + utils, template ) { function VisitDetailViewModel(params) { diff --git a/js/components/cohortdefinitionviewer/components/VisitDetailTemplate.html b/js/components/cohortdefinitionviewer/components/VisitDetailTemplate.html index fdf25984c..1c1abe775 100644 --- a/js/components/cohortdefinitionviewer/components/VisitDetailTemplate.html +++ b/js/components/cohortdefinitionviewer/components/VisitDetailTemplate.html @@ -30,11 +30,11 @@
  • - + + defaultName: ko.i18n('components.cohortCriteria.anyVisitDetailType', 'Any Visit Detail Type')">
  • @@ -59,29 +59,29 @@
  • - + + defaultName: ko.i18n('components.cohortCriteria.anyGender', 'Any Gender')">
  • - + + defaultName: ko.i18n('components.cohortCriteria.anyProviderSpeciality', 'Any Provider Specialty')">
  • - + + defaultName: ko.i18n('components.cohortCriteria.anyPlaceOfService', 'Any Place of Service')">
  • @@ -90,6 +90,9 @@ - - + + + + + diff --git a/js/components/cohortdefinitionviewer/components/VisitOccurrence.js b/js/components/cohortdefinitionviewer/components/VisitOccurrence.js index 084451681..c682d4c76 100644 --- a/js/components/cohortdefinitionviewer/components/VisitOccurrence.js +++ b/js/components/cohortdefinitionviewer/components/VisitOccurrence.js @@ -7,15 +7,17 @@ define(['knockout','components/cohortbuilder/options','components/cohortbuilder/ self.Criteria = params.criteria.VisitOccurrence; self.options = options; - self.getCodesetName = function(codesetId, defaultName) { - if (codesetId != null) - { - var selectedConceptSet = self.expression.ConceptSets().filter(function (item) { return item.id == codesetId })[0]; - return ko.utils.unwrapObservable(selectedConceptSet.name); - } - else - return defaultName; - }; + self.indexMessage = ko.i18nformat( + 'components.conditionVisit.indexDataText', + 'The index date refers to the visit of <%= conceptSetName %>.', + { + conceptSetName: ko.pureComputed(() => utils.getConceptSetName( + self.Criteria.CodesetId, + self.expression.ConceptSets, + ko.i18n('components.conditionVisit.anyVisit', 'Any Visit') + )) + } + ); } diff --git a/js/components/cohortdefinitionviewer/components/VisitOccurrenceTemplate.html b/js/components/cohortdefinitionviewer/components/VisitOccurrenceTemplate.html index bc0c545b6..3c5a33fb1 100644 --- a/js/components/cohortdefinitionviewer/components/VisitOccurrenceTemplate.html +++ b/js/components/cohortdefinitionviewer/components/VisitOccurrenceTemplate.html @@ -29,6 +29,15 @@ + +
  • + + + + +
  • +
  • @@ -49,23 +58,51 @@
  • + +
  • + + + + +
  • +
  • - - + +
  • + + + + +
  • + + +
  • + + +
  • + + +
  • + + + + +
  • - -
  • - -
  • + +