WIP reorganization
This commit is contained in:
1 parent
6706dfe634
commit
054e37dfb7
266 files changed
+98
-620
No files matched your search
+18
@@ -0,0 +1,18 @@
|
||||
<template name="irRCDescription">
|
||||
<h4>irRC</h4>
|
||||
<h5>Baseline Checks</h5>
|
||||
<ul>
|
||||
<li>Target lesions must be >= 10 X 10 mm AND >= double the acquisition slice thickness by CT and MR</li>
|
||||
<li>Up to a max of 5 target lesions per organ</li>
|
||||
<li>Up to a max of 10 target lesions total</li>
|
||||
<li>Non-targets can only be assessed as 'present'</li>
|
||||
<li>Target lesions must have measurements (cannot be assessed as CR, UN/NE, EX)</li>
|
||||
</ul>
|
||||
<h5>New Lesion Checks for Follow-ups</h5>
|
||||
<ul>
|
||||
<li>New target lesions must be >= 5 X 5 mm AND >= double the acquisition slice thickness by CT and MR</li>
|
||||
<li>Up to a max of 5 target lesions per organ</li>
|
||||
<li>Up to a max of 10 target lesions total</li>
|
||||
</ul>
|
||||
<!--Time Point Measurement Total = SPD target lesions + SPD new lesions (SPD = sum of product of long axis and short axis diameters)-->
|
||||
</template>
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
<template name="recistDescription">
|
||||
<h4>RECIST 1.1</h4>
|
||||
<h5>Baseline Checks</h5>
|
||||
<ul>
|
||||
<li>Extranodal lesions must be >= 10 mm long axis AND >= double the acquisition slice thickness by CT and MR</li>
|
||||
<li>Extranodal lesions must be >= 20 mm on chest x-ray (although x-rays rarely used for clinical trial assessment)</li>
|
||||
<li>Nodal lesions must be >= 15 mm short axis AND >= double the acquisition slice thickness by CT and MR</li>
|
||||
<li>Up to a max of 2 target lesions per organ</li>
|
||||
<li>Up to a max of 5 target lesions total</li>
|
||||
<li>Non-targets can only be assessed as 'present'</li>
|
||||
<li>Target lesions must have measurements (cannot be assessed as CR, UN/NE, EX)</li>
|
||||
</ul>
|
||||
<!-- Time Point Measurement Total = Sum of long axis measurements for extranodal target lesion + short axis measurements for nodal lesions</li>-->
|
||||
</template>
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
<template name="trialOptionsModal">
|
||||
{{#dialogForm (extend this
|
||||
schema=instance.schema dialogClass='modal-lg'
|
||||
confirmLabel='Save' title='Clinical Trial Options'
|
||||
)}}
|
||||
<h3 class="m-t-0">Select one or more Trial Criteria types:</h3>
|
||||
{{>groupRadio class='js-trial' labelClass='form-group' key='trialCriteria'}}
|
||||
|
||||
<h3>Selected Trial Criteria:</h3>
|
||||
<div class="m-t-2">
|
||||
{{#let descriptionTemplate=(getDescriptionTemplate instance.selectedTrial.get)}}
|
||||
{{>Template.dynamic template=descriptionTemplate}}
|
||||
{{/let}}
|
||||
</div>
|
||||
{{/dialogForm}}
|
||||
</template>
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
import { Meteor } from 'meteor/meteor';
|
||||
import { Template } from 'meteor/templating';
|
||||
import { ReactiveVar } from 'meteor/reactive-var';
|
||||
import { _ } from 'meteor/underscore';
|
||||
import { OHIF } from 'meteor/ohif:core';
|
||||
import { SimpleSchema } from 'meteor/aldeed:simple-schema';
|
||||
|
||||
Meteor.startup(() => {
|
||||
const TrialCriteriaTypes = new Meteor.Collection(null);
|
||||
TrialCriteriaTypes._debugName = 'TrialCriteriaTypes';
|
||||
|
||||
TrialCriteriaTypes.insert({
|
||||
id: 'RECIST',
|
||||
name: 'RECIST 1.1',
|
||||
descriptionTemplate: 'recistDescription',
|
||||
selected: true
|
||||
});
|
||||
|
||||
TrialCriteriaTypes.insert({
|
||||
id: 'irRC',
|
||||
name: 'irRC',
|
||||
descriptionTemplate: 'irRCDescription',
|
||||
selected: false
|
||||
});
|
||||
|
||||
OHIF.lesiontracker.TrialCriteriaTypes = TrialCriteriaTypes;
|
||||
});
|
||||
|
||||
Template.trialOptionsModal.onCreated(() => {
|
||||
const instance = Template.instance();
|
||||
const { TrialCriteriaTypes } = OHIF.lesiontracker;
|
||||
const types = TrialCriteriaTypes.find().fetch();
|
||||
const defaultValue = _.findWhere(types, { selected: true })._id;
|
||||
instance.selectedTrial = new ReactiveVar(defaultValue);
|
||||
|
||||
instance.schema = new SimpleSchema({
|
||||
trialCriteria: {
|
||||
type: String,
|
||||
allowedValues: _.pluck(types, '_id'),
|
||||
valuesLabels: _.pluck(types, 'name'),
|
||||
defaultValue
|
||||
}
|
||||
});
|
||||
|
||||
instance.data.promise.then(formData => {
|
||||
// Set "selected" to false for the entire collection
|
||||
TrialCriteriaTypes.update({}, {
|
||||
$set: { selected: false }
|
||||
}, {
|
||||
multi: true
|
||||
});
|
||||
|
||||
// TODO: Use filter with "_id: $in" when allowing multiple criteria
|
||||
// Set "selected" to true for the current criteria
|
||||
TrialCriteriaTypes.update(formData.trialCriteria, {
|
||||
$set: { selected: true }
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Template.trialOptionsModal.helpers({
|
||||
getDescriptionTemplate(_id) {
|
||||
return OHIF.lesiontracker.TrialCriteriaTypes.findOne(_id).descriptionTemplate;
|
||||
}
|
||||
});
|
||||
|
||||
Template.trialOptionsModal.events({
|
||||
'change .js-trial'(event, instance) {
|
||||
const form = instance.$('form').first().data('component');
|
||||
if (!form) return;
|
||||
instance.selectedTrial.set(form.value().trialCriteria);
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user