Skip to content

Commit

Permalink
Add date-adjustment to print friendly views.
Browse files Browse the repository at this point in the history
Implemented print-friendly VisitDetail.
Renamed some fields for clarity.

Fixes #2988
  • Loading branch information
chrisknoll committed Jan 23, 2025
1 parent d85c48a commit d6c7c27
Show file tree
Hide file tree
Showing 45 changed files with 328 additions and 90 deletions.
1 change: 1 addition & 0 deletions js/components/cohortbuilder/CriteriaTypes/ConditionEra.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ 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));
Expand Down
27 changes: 4 additions & 23 deletions js/components/cohortbuilder/CriteriaTypes/VisitDetail.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,6 @@ define(['knockout', './Criteria', '../InputTypes/Range', '../InputTypes/ConceptS
if (ko.utils.unwrapObservable(self.VisitDetailSourceConcept()) == change.value.id) {
self.VisitSourceConcept()(null);
}
if (ko.utils.unwrapObservable(self.VisitDetailTypeCS() && self.VisitDetailTypeCS().CodesetId) == change.value.id) {
self.VisitDetailTypeCS(new ConceptSetSelection());
}
if (ko.utils.unwrapObservable(self.GenderCS() && self.GenderCS().CodesetId) == change.value.id) {
self.GenderCS(new ConceptSetSelection());
}
if (ko.utils.unwrapObservable(self.ProviderSpecialtyCS() && self.ProviderSpecialtyCS().CodesetId) == change.value.id) {
self.ProviderSpecialtyCS(new ConceptSetSelection());
}
if (ko.utils.unwrapObservable(self.PlaceOfServiceCS() && self.PlaceOfServiceCS().CodesetId) == change.value.id) {
self.PlaceOfServiceCS(new ConceptSetSelection());
}

}
});
}, null, "arrayChange");
Expand All @@ -39,7 +26,7 @@ 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));
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));
Expand All @@ -49,15 +36,9 @@ define(['knockout', './Criteria', '../InputTypes/Range', '../InputTypes/ConceptS
self.Age = ko.observable(data.Age && new Range(data.Age));

// Linked Fields
self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS));

/* 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.ProviderSpecialtyCS = ko.observable(data.ProviderSpecialtyCS && new ConceptSetSelection(data.ProviderSpecialtyCS));

self.PlaceOfServiceCS = ko.observable(data.PlaceOfServiceCS && new ConceptSetSelection(data.PlaceOfServiceCS));
self.GenderCS = ko.observable(data.GenderCS && new ConceptSetSelection(data.GenderCS, conceptSets));
self.ProviderSpecialtyCS = ko.observable(data.ProviderSpecialtyCS && new ConceptSetSelection(data.ProviderSpecialtyCS, conceptSets));
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));
Expand Down
16 changes: 13 additions & 3 deletions js/components/cohortbuilder/InputTypes/ConceptSetSelection.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
define(['knockout'], function (ko) {

function ConceptSetSelection(data) {
function ConceptSetSelection(data, conceptSets) {
var self = this;
data = data || {};
self.IsExclusion = ko.observable(data.IsExclusion);
self.CodesetId = ko.observable(data.CodesetId);

// set up subscription to update CodesetId if the item is removed from conceptSets
conceptSets.subscribe(function (changes) {
changes.forEach(function(change) {
if (change.status === 'deleted') {
if (ko.utils.unwrapObservable(self.CodesetId) == change.value.id)
self.CodesetId(null);
}
});
}, null, "arrayChange");

self.IsExclusion = ko.observable(data.IsExclusion ? true : data.IsExclusion || null);
self.CodesetId = ko.observable(data.CodesetId ? data.CodesetId : null);
}

return ConceptSetSelection;
Expand Down
12 changes: 6 additions & 6 deletions js/components/cohortbuilder/components/ConceptSetSelector.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ define([
function conceptsetSelector(params) {
var self = this;
self.conceptSetId = params.conceptSetId;
self.defaultText = params.defaultText;
self.defaultName = params.defaultName;
self.conceptSets = params.conceptSets;
self.filterText = ko.observable("");
self.previewVisible = ko.observable(false);
Expand All @@ -25,7 +25,7 @@ define([
self.sortedConceptSets = self.conceptSets.extend({
sorted: conceptSetSorter,
});
self.filteredConceptSets = ko.computed(function () {
self.filteredConceptSets = ko.pureComputed(function () {
var selectedConceptSet = self.conceptSets().filter(function (item) {
return item.id == self.conceptSetId();
});
Expand All @@ -41,13 +41,13 @@ define([
),
];
});
self.conceptSetName = ko.computed(function () {
var selectedConceptSet = self.conceptSets().filter(function (item) {
self.conceptSetName = ko.pureComputed(function () {
var selectedConceptSet = self.conceptSets().find(function (item) {
return item.id == self.conceptSetId();
});
return (
(selectedConceptSet.length > 0 && selectedConceptSet[0].name()) ||
ko.unwrap(self.defaultText)
((selectedConceptSet && selectedConceptSet.name()) ||
ko.unwrap(self.defaultName))
);
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<td>
<span data-bind="text: ko.i18n('components.conditionEra.criteriaText_1', 'a condition era of')"></span>
<conceptset-selector
params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets, defaultText: ko.i18n('components.conditionEra.anyConditionButton', 'Any Condition')">
params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets, defaultName: ko.i18n('components.conditionEra.anyConditionButton', 'Any Condition')">
</conceptset-selector>
</td>
<td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<td> <span
data-bind="text: ko.i18n('components.conditionOccurrence.conditionOccurrenceText_1', 'a condition occurrence of')"></span>
<conceptset-selector
params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets, defaultText:ko.i18n('components.conditionOccurrence.anyCondition', 'Any Condition')">
params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets, defaultName:ko.i18n('components.conditionOccurrence.anyCondition', 'Any Condition')">
</conceptset-selector>
</td>
<td>
Expand Down Expand Up @@ -103,7 +103,7 @@
<span
data-bind="text: ko.i18n('components.conditionOccurrence.conditionOccurrenceText_6', 'Condition Source Concept is')"></span>
<conceptset-selector
params="conceptSetId: ConditionSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultText: ko.i18n('components.conditionOccurrence.anyCondition', 'Any Condition')">
params="conceptSetId: ConditionSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultName: ko.i18n('components.conditionOccurrence.anyCondition', 'Any Condition')">
</conceptset-selector>
</div>
</td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<span
data-bind="text: ko.i18n('components.customEraStrategy.customEraStrategyText_3', 'Concept set containing the drug(s) of interest:')"></span>
<conceptset-selector
params="conceptSetId: strategy().DrugCodesetId, conceptSets: conceptSets, defaultText: ko.i18n('components.customEraStrategy.selectDrugConceptSet', 'Select Drug Concept Set')">
params="conceptSetId: strategy().DrugCodesetId, conceptSets: conceptSets, defaultName: ko.i18n('components.customEraStrategy.selectDrugConceptSet', 'Select Drug Concept Set')">
</conceptset-selector>
<ul>
<li>
Expand Down
4 changes: 2 additions & 2 deletions js/components/cohortbuilder/components/DeathTemplate.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<span
data-bind="text: ko.i18n('components.conditionDeath.conditionDeathText_1', 'a death occurrence from')"></span>
<conceptset-selector params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets,
defaultText: ko.i18n('components.conditionDeath.anyDeath', 'Any Death')">
defaultName: ko.i18n('components.conditionDeath.anyDeath', 'Any Death')">
</conceptset-selector>
</td>
<td>
Expand Down Expand Up @@ -71,7 +71,7 @@

<conceptset-selector
params="conceptSetId: DeathSourceConcept(), conceptSets: $component.expression.ConceptSets,
defaultText: ko.i18n('components.conditionDeath.anyDeath', 'Any Death')">
defaultName: ko.i18n('components.conditionDeath.anyDeath', 'Any Death')">
</conceptset-selector>
</div>
</td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<span
data-bind="text: ko.i18n('components.conditionDevice.conditionDeviceText_1', 'a device exposure of')"></span>
<conceptset-selector params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets,
defaultText: ko.i18n('components.conditionDevice.anyDevice', 'Any Device')"></conceptset-selector>
defaultName: ko.i18n('components.conditionDevice.anyDevice', 'Any Device')"></conceptset-selector>
</td>
<td>
<div class="btn-group pull-right">
Expand Down Expand Up @@ -101,7 +101,7 @@
<span
data-bind="text: ko.i18n('components.conditionDevice.conditionDeviceText_7', 'Device Source Concept is')"></span>
<conceptset-selector
params="conceptSetId: DeviceSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultText: ko.i18n('components.conditionDevice.anyDevice', 'Any Device')">
params="conceptSetId: DeviceSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultName: ko.i18n('components.conditionDevice.anyDevice', 'Any Device')">
</conceptset-selector>
</div>
</td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<td>
<span data-bind="text: ko.i18n('components.conditionDose.conditionDoseText_1', 'a dose era of')"></span>
<conceptset-selector params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets,
defaultText: ko.i18n('components.conditionDose.anyDrug', 'Any Drug')"></conceptset-selector>
defaultName: ko.i18n('components.conditionDose.anyDrug', 'Any Drug')"></conceptset-selector>
</td>
<td>
<div class="btn-group pull-right">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<tr>
<td> <span data-bind="text: ko.i18n('components.conditionDrug.conditionDrugText_1', 'a drug era of')"></span>
<conceptset-selector params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets,
defaultText: ko.i18n('components.conditionDrug.anyDrug', 'Any Drug')"></conceptset-selector>
defaultName: ko.i18n('components.conditionDrug.anyDrug', 'Any Drug')"></conceptset-selector>
</td>
<td>
<div class="btn-group pull-right">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<span
data-bind="text: ko.i18n('components.conditionDrugExposure.conditionDrugExposureText_1', 'a drug exposure of')"></span>
<conceptset-selector params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets,
defaultText: ko.i18n('components.conditionDrugExposure.anyDrug', 'Any Drug')"></conceptset-selector>
defaultName: ko.i18n('components.conditionDrugExposure.anyDrug', 'Any Drug')"></conceptset-selector>
</td>
<td>
<div class="btn-group pull-right">
Expand Down Expand Up @@ -163,7 +163,7 @@
data-bind="text: ko.i18n('components.conditionDrugExposure.conditionDrugExposureText_13', 'Drug Source Concept is:')"></span>

<conceptset-selector
params="conceptSetId: DrugSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultText: ko.i18n('components.conditionDrugExposure.anyDrug', 'Any Drug')">
params="conceptSetId: DrugSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultName: ko.i18n('components.conditionDrugExposure.anyDrug', 'Any Drug')">
</conceptset-selector>
</div>
</td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<tr>
<td>
<span data-bind="text: ko.i18n('components.locationRegion.criteria.of', 'a location region of')"></span>
<conceptset-selector params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets, defaultText: ko.i18n('components.locationRegion.anyLocationRegion', 'Any Region')"></conceptset-selector>
<conceptset-selector params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets, defaultName: ko.i18n('components.locationRegion.anyLocationRegion', 'Any Region')"></conceptset-selector>
</td>
<td>
<div class="btn-group pull-right">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</colgroup>
<tr>
<td> <span data-bind="text: ko.i18n('components.conditionMeasurement.conditionMeasurementText_1', 'a measurement of')"></span>
<conceptset-selector params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets, defaultText:
<conceptset-selector params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets, defaultName:
ko.i18n('components.conditionMeasurement.anyMeasurement', 'Any Measurement')"></conceptset-selector>
</td>
<td>
Expand Down Expand Up @@ -134,7 +134,7 @@

<span data-bind="text: ko.i18n('components.conditionMeasurement.conditionMeasurementText_14', 'Measurement Source Concept is')"></span>
<conceptset-selector params="conceptSetId: MeasurementSourceConcept(), conceptSets: $component.expression.ConceptSets,
defaultText: ko.i18n('components.conditionMeasurement.anyMeasurement', 'Any Measurement')"></conceptset-selector>
defaultName: ko.i18n('components.conditionMeasurement.anyMeasurement', 'Any Measurement')"></conceptset-selector>
</div>
</td>
</tr>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<span data-bind="text: ko.i18n('components.conditionObservation.conditionObservationText_1', 'an observation of')"></span>
<conceptset-selector
params="conceptSetId: CodesetId, conceptSets: $component.expression.ConceptSets,
defaultText: ko.i18n('components.conditionObservation.anyObservation', 'Any Observation')"></conceptset-selector>
defaultName: ko.i18n('components.conditionObservation.anyObservation', 'Any Observation')"></conceptset-selector>
</td>
<td>
<div class="btn-group pull-right">
Expand Down Expand Up @@ -115,7 +115,7 @@
<span data-bind="text: ko.i18n('components.conditionObservation.conditionObservationText_9', 'Observation Source Concept is:')"></span>

<conceptset-selector params="conceptSetId: ObservationSourceConcept(), conceptSets: $component.expression.ConceptSets,
defaultText: ko.i18n('components.conditionObservation.anyObservation', 'Any Observation')"></conceptset-selector>
defaultName: ko.i18n('components.conditionObservation.anyObservation', 'Any Observation')"></conceptset-selector>
</div>
</td>
</tr>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@
<div>
<span data-bind="text: ko.i18n('components.conditionPayerPlanPeriod.conditionPayerPlanText_10', 'Payer Concept is')"></span>

<conceptset-selector params="conceptSetId: PayerConcept(), conceptSets: $component.expression.ConceptSets, defaultText:
<conceptset-selector params="conceptSetId: PayerConcept(), conceptSets: $component.expression.ConceptSets, defaultName:
ko.i18n('components.conditionPayerPlanPeriod.anyPayer', 'Any Payer')"></conceptset-selector>
</div>
</td>
Expand All @@ -120,7 +120,7 @@
<div>
<span data-bind="text: ko.i18n('components.conditionPayerPlanPeriod.conditionPayerPlanText_11', 'Plan Concept is')"></span>

<conceptset-selector params="conceptSetId: PlanConcept(), conceptSets: $component.expression.ConceptSets, defaultText:
<conceptset-selector params="conceptSetId: PlanConcept(), conceptSets: $component.expression.ConceptSets, defaultName:
ko.i18n('components.conditionPayerPlanPeriod.anyPlan', 'Any Plan')"></conceptset-selector>
</div>
</td>
Expand All @@ -131,7 +131,7 @@
<div>
<span data-bind="text: ko.i18n('components.conditionPayerPlanPeriod.conditionPayerPlanText_12', 'Sponsor Concept is')"></span>

<conceptset-selector params="conceptSetId: SponsorConcept(), conceptSets: $component.expression.ConceptSets, defaultText:
<conceptset-selector params="conceptSetId: SponsorConcept(), conceptSets: $component.expression.ConceptSets, defaultName:
ko.i18n('components.conditionPayerPlanPeriod.anySponsor', 'Any Sponsor')"></conceptset-selector>
</div>
</td>
Expand All @@ -142,7 +142,7 @@
<div>
<span data-bind="text: ko.i18n('components.conditionPayerPlanPeriod.conditionPayerPlanText_13', 'Stop Reason Concept is')"></span>

<conceptset-selector params="conceptSetId: StopReasonConcept(), conceptSets: $component.expression.ConceptSets, defaultText:
<conceptset-selector params="conceptSetId: StopReasonConcept(), conceptSets: $component.expression.ConceptSets, defaultName:
ko.i18n('components.conditionPayerPlanPeriod.anyStopReason', 'Any Stop Reason')"></conceptset-selector>
</div>
</td>
Expand All @@ -153,7 +153,7 @@
<div>
<span data-bind="text: ko.i18n('components.conditionPayerPlanPeriod.conditionPayerPlanText_14', 'Payer Source Concept is')"></span>

<conceptset-selector params="conceptSetId: PayerSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultText:
<conceptset-selector params="conceptSetId: PayerSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultName:
ko.i18n('components.conditionPayerPlanPeriod.anyPayerSource', 'Any Payer Source')"></conceptset-selector>
</div>
</td>
Expand All @@ -164,7 +164,7 @@
<div>
<span data-bind="text: ko.i18n('components.conditionPayerPlanPeriod.conditionPayerPlanText_15', 'Plan Source Concept is')"></span>

<conceptset-selector params="conceptSetId: PlanSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultText:
<conceptset-selector params="conceptSetId: PlanSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultName:
ko.i18n('components.conditionPayerPlanPeriod.anyPlanSource', 'Any Plan Source')"></conceptset-selector>
</div>
</td>
Expand All @@ -175,7 +175,7 @@
<div>
<span data-bind="text: ko.i18n('components.conditionPayerPlanPeriod.conditionPayerPlanText_16', 'Sponsor Source Concept is')"></span>

<conceptset-selector params="conceptSetId: SponsorSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultText:
<conceptset-selector params="conceptSetId: SponsorSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultName:
ko.i18n('components.conditionPayerPlanPeriod.anySponsorSource', 'Any Sponsor Source')"></conceptset-selector>
</div>
</td>
Expand All @@ -186,8 +186,8 @@
<div>
<span data-bind="text: ko.i18n('components.conditionPayerPlanPeriod.conditionPayerPlanText_17', 'Stop Reason Source Concept is')"></span>

<conceptset-selector params="conceptSetId: StopReasonSourceConcept(), conceptSets: $component.expression.ConceptSets, defaultText:
ko.i18n('components.conditionPayerPlanPeriod.anyStopReasonSource', 'Any Stop Reason Source')"></conceptset-selector>
<conceptset-selector params="conceptSetId: StopReasonSourceConcept(), conceptSets: $component.expression.ConceptSets,
defaultName: ko.i18n('components.conditionPayerPlanPeriod.anyStopReasonSource', 'Any Stop Reason Source')"></conceptset-selector>
</div>
</td>
</tr>
Expand Down
Loading

0 comments on commit d6c7c27

Please sign in to comment.