Skip to content

Commit

Permalink
Merge pull request QIICR#100 from che85/fixJSONValidation
Browse files Browse the repository at this point in the history
BUG: fixed issues with json validation (issue QIICR#98):
  • Loading branch information
fedorov authored Oct 20, 2016
2 parents 63476f1 + 4804c84 commit 8ca366b
Show file tree
Hide file tree
Showing 10 changed files with 188 additions and 166 deletions.
11 changes: 5 additions & 6 deletions apps/sr/tid1500writer.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ static OFLogger dcemfinfLogger = OFLog::getLogger("qiicr.apps");
#define STATIC_ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))

DSRCodedEntryValue json2cev(Json::Value& j){
return DSRCodedEntryValue(j["codeValue"].asCString(),
j["codingSchemeDesignator"].asCString(),
j["codeMeaning"].asCString());
return DSRCodedEntryValue(j["CodeValue"].asCString(),
j["CodingSchemeDesignator"].asCString(),
j["CodeMeaning"].asCString());
}

void addFileToEvidence(DSRDocument &doc, string dirStr, string fileStr){
Expand Down Expand Up @@ -130,7 +130,7 @@ int main(int argc, char** argv){
std::cout << "Total measurement groups: " << metaRoot["Measurements"].size() << std::endl;

for(int i=0;i<metaRoot["Measurements"].size();i++){
Json::Value measurementGroup = metaRoot["Measurements"][i]["MeasurementGroup"];
Json::Value measurementGroup = metaRoot["Measurements"][i];

CHECK_COND(report.addVolumetricROIMeasurements());
/* fill volumetric ROI measurements with data */
Expand Down Expand Up @@ -171,8 +171,7 @@ int main(int argc, char** argv){
for(int j=0;j<measurementGroup["measurementItems"].size();j++){
Json::Value measurement = measurementGroup["measurementItems"][j];
// TODO - add measurement method and derivation!
const CMR_TID1411_in_TID1500::MeasurementValue numValue(measurement["value"].asCString(),
json2cev(measurement["units"]));
const CMR_TID1411_in_TID1500::MeasurementValue numValue(measurement["value"].asCString(), json2cev(measurement["units"]));

if(measurement.isMember("derivationModifier")){
measurements.addMeasurement(json2cev(measurement["quantity"]), numValue, DSRCodedEntryValue(), json2cev(measurement["derivationModifier"]));
Expand Down
19 changes: 10 additions & 9 deletions doc/bmmr-example.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
{
"@schema": "https://raw.githubusercontent.com/qiicr/dcmqi/master/doc/seg-schema.json#",

"seriesAttributes": {
"ReaderID": "Reader1",
"SessionID": "Session1",
"TimePointID": "1",
"ContentCreatorName": "Reader1",
"ClinicalTrialSeriesID": "Session1",
"ClinicalTrialTimePointID": "1",
"ClinicalTrialCoordinatingCenterName": "UCSF",
"SeriesDescription": "Segmentation",
"SeriesNumber": "300",
"InstanceNumber": "1",
"ClinicalTrialCoordinatingCenterName": "UCSF"
"InstanceNumber": "1"
},
"segmentAttributes": [
[
Expand All @@ -31,10 +32,10 @@
"CodingSchemeDesignator": "SRT",
"CodeMeaning": "Right and left"
},
"RecommendedDisplayRGBValue": [
"252",
"226",
"234"
"recommendedDisplayRGBValue": [
252,
226,
234
]
}
]
Expand Down
7 changes: 6 additions & 1 deletion doc/common-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@
"type" : "string",
"maxLength" : 12
},
"DS" : {
"type" : "string",
"maxLength" : 16,
"pattern": "^( )*(-|\\+)?[0-9]*(.[0-9]+)?((e|E)(-|\\+)?[0-9]+)?( )*$"
},
"LO" : {
"type" : "string",
"maxLength" : 64
Expand Down Expand Up @@ -52,14 +57,14 @@
},
"codeSequence" : {
"type" : "object",
"additionalProperties": false,
"required" : ["CodeValue","CodingSchemeDesignator","CodeMeaning"],
"properties" : {
"CodeValue" : { "$ref": "#/definitions/SH", "default" : "T-D0050"},
"CodingSchemeDesignator" : { "$ref": "#/definitions/SH", "default" : "SRT"},
"CodeMeaning" : { "$ref": "#/definitions/LO", "default" : "Tissue"}
}
},

"dicomInstancesFileNameList" : {
"type" : "array",
"items" : {
Expand Down
2 changes: 2 additions & 0 deletions doc/pm-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
"AnatomicRegionCode",
"FrameLaterality"
],
"additionalProperties": false,
"properties": {
"@schema": {"type" : "string"},
"SeriesDescription": {
"allOf": [
{
Expand Down
1 change: 1 addition & 0 deletions doc/seg-example.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"@schema": "https://raw.githubusercontent.com/qiicr/dcmqi/master/doc/seg-schema.json#",

"seriesAttributes": {
"ContentCreatorName": "Reader1",
"ClinicalTrialSeriesID": "Session1",
Expand Down
4 changes: 4 additions & 0 deletions doc/seg-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@
"@context": "http://qiicr.org/dcmqi/contexts/dcmqi.jsonld",
"id": "https://raw.githubusercontent.com/qiicr/dcmqi/master/doc/seg-schema.json#",
"$schema": "http://json-schema.org/draft-04/schema#",
"additionalProperties": false,
"properties": {
"@schema": {"type" : "string"},
"seriesAttributes": {
"type": "object",
"additionalProperties": false,
"properties": {
"ContentCreatorName": {
"allOf": [
Expand Down Expand Up @@ -94,6 +97,7 @@
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"LabelID",
"SegmentedPropertyCategoryCodeSequence",
Expand Down
2 changes: 2 additions & 0 deletions doc/sr-common-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"type": "object",
"oneOf": [
{
"additionalProperties": false,
"properties": {
"PersonObserverName": {
"$ref": "#/definitions/PNAME"
Expand All @@ -39,6 +40,7 @@
]
},
{
"additionalProperties": false,
"properties": {
"DeviceObserverUID": {
"$ref": "#/definitions/UIDREF"
Expand Down
215 changes: 107 additions & 108 deletions doc/sr-tid1500-ct-liver-example.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"@schema": "https://raw.githubusercontent.com/qiicr/dcmqi/master/doc/sr-tid1500-schema.json#",

"SeriesDescription": "Measurements",
"SeriesNumber": "1001",
"InstanceNumber": "1",
Expand Down Expand Up @@ -27,122 +28,120 @@

"Measurements": [
{
"MeasurementGroup": {
"TrackingIdentifier": "Measurements group 1",
"ReferencedSegment": 1,
"SourceSeriesForImageSegmentation": "1.2.392.200103.20080913.113635.2.2009.6.22.21.43.10.23431.1",
"segmentationSOPInstanceUID": "1.2.276.0.7230010.3.1.4.0.42154.1458337731.665796",
"Finding": {
"codeValue": "T-D0060",
"codingSchemeDesignator": "SRT",
"codeMeaning": "Organ"
"TrackingIdentifier": "Measurements group 1",
"ReferencedSegment": 1,
"SourceSeriesForImageSegmentation": "1.2.392.200103.20080913.113635.2.2009.6.22.21.43.10.23431.1",
"segmentationSOPInstanceUID": "1.2.276.0.7230010.3.1.4.0.42154.1458337731.665796",
"Finding": {
"CodeValue": "T-D0060",
"CodingSchemeDesignator": "SRT",
"CodeMeaning": "Organ"
},
"FindingSite": {
"CodeValue": "T-62000",
"CodingSchemeDesignator": "SRT",
"CodeMeaning": "Liver"
},
"measurementItems": [
{
"value": "37.3289",
"quantity": {
"CodeValue": "122713",
"CodingSchemeDesignator": "DCM",
"CodeMeaning": "Attenuation Coefficient"
},
"units": {
"CodeValue": "[hnsf'U]",
"CodingSchemeDesignator": "UCUM",
"CodeMeaning": "Hounsfield unit"
},
"derivationModifier": {
"CodeValue": "R-00317",
"CodingSchemeDesignator": "SRT",
"CodeMeaning": "Mean"
}
},
"FindingSite": {
"codeValue": "T-62000",
"codingSchemeDesignator": "SRT",
"codeMeaning": "Liver"
{
"value": "-778",
"quantity": {
"CodeValue": "122713",
"CodingSchemeDesignator": "DCM",
"CodeMeaning": "Attenuation Coefficient"
},
"units": {
"CodeValue": "[hnsf'U]",
"CodingSchemeDesignator": "UCUM",
"CodeMeaning": "Hounsfield unit"
},
"derivationModifier": {
"CodeValue": "R-404FB",
"CodingSchemeDesignator": "SRT",
"CodeMeaning": "Minimum"
}
},
"measurementItems": [
{
"value": "37.3289",
"quantity": {
"codeValue": "122713",
"codingSchemeDesignator": "DCM",
"codeMeaning": "Attenuation Coefficient"
},
"units": {
"codeValue": "[hnsf'U]",
"codingSchemeDesignator": "UCUM",
"codeMeaning": "Hounsfield unit"
},
"derivationModifier": {
"codeValue": "R-00317",
"codingSchemeDesignator": "SRT",
"codeMeaning": "Mean"
}
{
"value": "221",
"quantity": {
"CodeValue": "122713",
"CodingSchemeDesignator": "DCM",
"CodeMeaning": "Attenuation Coefficient"
},
{
"value": "-778",
"quantity": {
"codeValue": "122713",
"codingSchemeDesignator": "DCM",
"codeMeaning": "Attenuation Coefficient"
},
"units": {
"codeValue": "[hnsf'U]",
"codingSchemeDesignator": "UCUM",
"codeMeaning": "Hounsfield unit"
},
"derivationModifier": {
"codeValue": "R-404FB",
"codingSchemeDesignator": "SRT",
"codeMeaning": "Minimum"
}
"units": {
"CodeValue": "[hnsf'U]",
"CodingSchemeDesignator": "UCUM",
"CodeMeaning": "Hounsfield unit"
},
{
"value": "221",
"quantity": {
"codeValue": "122713",
"codingSchemeDesignator": "DCM",
"codeMeaning": "Attenuation Coefficient"
},
"units": {
"codeValue": "[hnsf'U]",
"codingSchemeDesignator": "UCUM",
"codeMeaning": "Hounsfield unit"
},
"derivationModifier": {
"codeValue": "G-A437",
"codingSchemeDesignator": "SRT",
"codeMeaning": "Maximum"
}
"derivationModifier": {
"CodeValue": "G-A437",
"CodingSchemeDesignator": "SRT",
"CodeMeaning": "Maximum"
}
},
{
"value": "59.1691",
"quantity": {
"CodeValue": "122713",
"CodingSchemeDesignator": "DCM",
"CodeMeaning": "Attenuation Coefficient"
},
{
"value": "59.1691",
"quantity": {
"codeValue": "122713",
"codingSchemeDesignator": "DCM",
"codeMeaning": "Attenuation Coefficient"
},
"units": {
"codeValue": "[hnsf'U]",
"codingSchemeDesignator": "UCUM",
"codeMeaning": "Hounsfield unit"
},
"derivationModifier": {
"codeValue": "R-10047",
"codingSchemeDesignator": "SRT",
"codeMeaning": "Standard Deviation"
}
"units": {
"CodeValue": "[hnsf'U]",
"CodingSchemeDesignator": "UCUM",
"CodeMeaning": "Hounsfield unit"
},
{
"value": "70361.9",
"quantity": {
"codeValue": "G-D705",
"codingSchemeDesignator": "SRT",
"codeMeaning": "Volume"
},
"units": {
"codeValue": "mm3",
"codingSchemeDesignator": "UCUM",
"codeMeaning": "cubic millimeter"
}
"derivationModifier": {
"CodeValue": "R-10047",
"CodingSchemeDesignator": "SRT",
"CodeMeaning": "Standard Deviation"
}
},
{
"value": "70361.9",
"quantity": {
"CodeValue": "G-D705",
"CodingSchemeDesignator": "SRT",
"CodeMeaning": "Volume"
},
"units": {
"CodeValue": "mm3",
"CodingSchemeDesignator": "UCUM",
"CodeMeaning": "cubic millimeter"
}
},
{
"value": "70.3619",
"quantity": {
"CodeValue": "G-D705",
"CodingSchemeDesignator": "SRT",
"CodeMeaning": "Volume"
},
{
"value": "70.3619",
"quantity": {
"codeValue": "G-D705",
"codingSchemeDesignator": "SRT",
"codeMeaning": "Volume"
},
"units": {
"codeValue": "cm3",
"codingSchemeDesignator": "UCUM",
"codeMeaning": "cubic centimeter"
}
"units": {
"CodeValue": "cm3",
"CodingSchemeDesignator": "UCUM",
"CodeMeaning": "cubic centimeter"
}
]
}
}
]
}
]
}
Loading

0 comments on commit 8ca366b

Please sign in to comment.