LT-92: Creating JSON schema validation for conformance criteria
This commit is contained in:
parent
ada2d1e284
commit
46bff61b08
@ -9,6 +9,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"ajv": "^4.10.4",
|
||||||
"babel-runtime": "^6.18.0",
|
"babel-runtime": "^6.18.0",
|
||||||
"bcrypt": "^0.8.7",
|
"bcrypt": "^0.8.7",
|
||||||
"meteor-node-stubs": "^0.2.3"
|
"meteor-node-stubs": "^0.2.3"
|
||||||
|
|||||||
@ -1,6 +1,17 @@
|
|||||||
import { BaseCriterion } from './BaseCriterion';
|
import { BaseCriterion } from './BaseCriterion';
|
||||||
import { _ } from 'meteor/underscore';
|
import { _ } from 'meteor/underscore';
|
||||||
|
|
||||||
|
export const MaxTargetsSchema = {
|
||||||
|
properties: {
|
||||||
|
limit: {
|
||||||
|
label: 'Max targets allowed in study',
|
||||||
|
type: 'integer',
|
||||||
|
minimum: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
required: ['limit']
|
||||||
|
};
|
||||||
|
|
||||||
export class MaxTargetsCriterion extends BaseCriterion {
|
export class MaxTargetsCriterion extends BaseCriterion {
|
||||||
|
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
|
|||||||
@ -1,6 +1,17 @@
|
|||||||
import { BaseCriterion } from './BaseCriterion';
|
import { BaseCriterion } from './BaseCriterion';
|
||||||
|
|
||||||
export class MaxTargetPerOrganCriterion extends BaseCriterion {
|
export const MaxTargetsPerOrganSchema = {
|
||||||
|
properties: {
|
||||||
|
limit: {
|
||||||
|
label: 'Max targets allowed per organ',
|
||||||
|
type: 'integer',
|
||||||
|
minimum: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
required: ['limit']
|
||||||
|
};
|
||||||
|
|
||||||
|
export class MaxTargetsPerOrganCriterion extends BaseCriterion {
|
||||||
|
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
super(options);
|
super(options);
|
||||||
@ -1,5 +1,75 @@
|
|||||||
import { BaseCriterion } from './BaseCriterion';
|
import { BaseCriterion } from './BaseCriterion';
|
||||||
|
|
||||||
|
export const MeasurementsLengthSchema = {
|
||||||
|
properties: {
|
||||||
|
longAxis: {
|
||||||
|
label: 'Minimum length of long axis',
|
||||||
|
type: 'number',
|
||||||
|
minimum: 0
|
||||||
|
},
|
||||||
|
shortAxis: {
|
||||||
|
label: 'Minimum length of short axis',
|
||||||
|
type: 'number',
|
||||||
|
minimum: 0
|
||||||
|
},
|
||||||
|
longAxisSliceThicknessMultiplier: {
|
||||||
|
label: 'Length of long axis multiplier',
|
||||||
|
type: 'number',
|
||||||
|
minimum: 0
|
||||||
|
},
|
||||||
|
shortAxisSliceThicknessMultiplier: {
|
||||||
|
label: 'Length of short axis multiplier',
|
||||||
|
type: 'number',
|
||||||
|
minimum: 0
|
||||||
|
},
|
||||||
|
modalityIn: {
|
||||||
|
label: 'Filter to evaluate only measurements with the specified modalities',
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
minItems: 1,
|
||||||
|
uniqueItems: true
|
||||||
|
},
|
||||||
|
modalityNotIn: {
|
||||||
|
label: 'Filter to evaluate only measurements without the specified modalities',
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
minItems: 1,
|
||||||
|
uniqueItems: true
|
||||||
|
},
|
||||||
|
locationIn: {
|
||||||
|
label: 'Filter to evaluate only measurements with the specified locations',
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
minItems: 1,
|
||||||
|
uniqueItems: true
|
||||||
|
},
|
||||||
|
locationNotIn: {
|
||||||
|
label: 'Filter to evaluate only measurements without the specified locations',
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'string'
|
||||||
|
},
|
||||||
|
minItems: 1,
|
||||||
|
uniqueItems: true
|
||||||
|
},
|
||||||
|
message: {
|
||||||
|
label: 'Message to be displayed in case of nonconformity'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
oneOf: [
|
||||||
|
{ required: ['message', 'longAxis'] },
|
||||||
|
{ required: ['message', 'shortAxis'] },
|
||||||
|
{ required: ['message', 'longAxisSliceThicknessMultiplier'] },
|
||||||
|
{ required: ['message', 'shortAxisSliceThicknessMultiplier'] }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
export class MeasurementsLengthCriterion extends BaseCriterion {
|
export class MeasurementsLengthCriterion extends BaseCriterion {
|
||||||
|
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
export { MaxTargetPerOrganCriterion } from './MaxTargetPerOrgan';
|
export * from './MaxTargetsPerOrgan';
|
||||||
export { MaxTargetsCriterion } from './MaxTargets';
|
export * from './MaxTargets';
|
||||||
export { MeasurementsLengthCriterion } from './MeasurementsLength';
|
export * from './MeasurementsLength';
|
||||||
export { ModalityCriterion } from './Modality';
|
export * from './Modality';
|
||||||
export { NonTargetResponseCriterion } from './NonTargetResponse';
|
export * from './NonTargetResponse';
|
||||||
export { TargetTypeCriterion } from './TargetType';
|
export * from './TargetType';
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"MaxTargetPerOrgan": {
|
"MaxTargetsPerOrgan": {
|
||||||
"limit": 2
|
"limit": 2
|
||||||
},
|
},
|
||||||
"MaxTargets": {
|
"MaxTargets": {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user