Skip to content

Commit

Permalink
feat: update modalities in study after storing
Browse files Browse the repository at this point in the history
  • Loading branch information
Chinlinlee committed Aug 1, 2023
1 parent e07cd58 commit e6a3c39
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 7 deletions.
3 changes: 3 additions & 0 deletions models/sql/dicom-json-model.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const { PatientPersistentObject } = require("./po/patient.po");
const { StudyPersistentObject } = require("./po/study.po");
const { SeriesPersistentObject } = require("./po/series.po");
const { InstancePersistentObject } = require("./po/instance.po");
const { StudyModel } = require("./models/study.model");


class SqlDicomJsonModel extends DicomJsonModel {
Expand All @@ -31,6 +32,8 @@ class SqlDicomJsonModel extends DicomJsonModel {
let storedStudy = await this.storeStudyCollection(dicomJsonClone, storedPatient);
let storedSeries = await this.storeSeriesCollection(dicomJsonClone, storedStudy);
await this.storeInstanceCollection(dicomJsonClone, storedSeries);

await StudyModel.updateModalitiesInStudy(storedStudy.x0020000D);
} catch(e) {
throw e;
}
Expand Down
32 changes: 30 additions & 2 deletions models/sql/models/study.model.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
const { Sequelize, DataTypes, Model } = require("sequelize");
const sequelizeInstance = require("@models/sql/instance");
const { vrTypeMapping } = require("../vrTypeMapping");
const { SeriesModel } = require("./series.model");
const _ = require("lodash");

class StudyModel extends Model { };

Expand All @@ -27,8 +29,8 @@ StudyModel.init({
"x00080056": {
type: vrTypeMapping.CS
},
"x00080061": {
type: DataTypes.JSON
"x00080061": {
type: DataTypes.JSON
},
"x00080090": {
type: vrTypeMapping.PN
Expand Down Expand Up @@ -60,4 +62,30 @@ StudyModel.init({
freezeTableName: true
});

StudyModel.updateModalitiesInStudy = async function (studyInstanceUid) {
let seriesArray = await SeriesModel.findAll({
where: {
x0020000D: studyInstanceUid
},
attributes: [
[Sequelize.fn("DISTINCT", Sequelize.col("x00080060")), "modality"]
]
});

let modalities = [];
for(let item of seriesArray) {
if (_.get(item, "dataValues.modality"))
modalities.push(item.dataValues.modality);
}

await StudyModel.update({
x00080061: modalities
}, {
where: {
x0020000D: studyInstanceUid

}
});
};

module.exports.StudyModel = StudyModel;
5 changes: 0 additions & 5 deletions models/sql/po/study.po.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
const moment = require("moment");
const _ = require("lodash");
const { PersonNameModel } = require("../models/personName.model");
const { PatientModel } = require("../models/patient.model");
const { StudyModel } = require("../models/study.model");
const { tagsNeedStore } = require("@models/DICOM/dicom-tags-mapping");

Expand Down Expand Up @@ -75,10 +74,6 @@ class StudyPersistentObject {
return study;
}

async updateModalitiesInStudy() {
//TODO
}

}

module.exports.StudyPersistentObject = StudyPersistentObject;

0 comments on commit e6a3c39

Please sign in to comment.