144 lines
3.3 KiB
JavaScript
144 lines
3.3 KiB
JavaScript
'use strict';
|
|
|
|
const Service = require('egg').Service;
|
|
|
|
class StudyService extends Service {
|
|
//查询study
|
|
getStudyById(_id) {
|
|
return this.ctx.model.Study.findOne({
|
|
_id
|
|
});
|
|
}
|
|
//查询study通过study_uid
|
|
getStudyByUID(uid) {
|
|
return this.ctx.model.Study.findOne({
|
|
StudyInstanceUID: uid
|
|
})
|
|
}
|
|
//根据studytime
|
|
getStudyBySTUDYTIME(dayBegin, dayEnd, device) {
|
|
let query = {
|
|
STUDYTIME: {
|
|
$gte: dayBegin,
|
|
$lte: dayEnd
|
|
}
|
|
}
|
|
if (device) query.DEVICENAME = device
|
|
return this.ctx.model.Study.find(query);
|
|
}
|
|
/**
|
|
* 获取未设置技师的study
|
|
* @param {*} dayBegin
|
|
* @param {*} dayEnd
|
|
*/
|
|
getStudyByPhotoMakerStatus(dayBegin, dayEnd) {
|
|
let query = {
|
|
STUDYSTATUS: {
|
|
$in: ['上传图像完成', '诊断完成', '审核完成']
|
|
},
|
|
DEVICETYPENAME: {
|
|
$in: ["CT", "MR"]
|
|
},
|
|
$or: [{
|
|
PHOTOMAKER: null
|
|
},
|
|
{
|
|
schedulePHOTOMAKER: null
|
|
},
|
|
{
|
|
photomakerStatus: 3
|
|
}
|
|
]
|
|
}
|
|
if (dayBegin && dayEnd) {
|
|
query.STUDYTIME = {
|
|
$gte: dayBegin,
|
|
$lte: dayEnd
|
|
};
|
|
}
|
|
return this.ctx.model.Study.find(query).limit(100);
|
|
}
|
|
//获取需要就诊的study
|
|
getStudyByIdCanTriage(_id) {
|
|
return this.ctx.model.Report.findOne({
|
|
_id,
|
|
STUDYSTATUS: {
|
|
$in: ["待分诊", "已分诊", "到诊"]
|
|
}
|
|
}).populate({
|
|
path: "quenuing_id"
|
|
})
|
|
}
|
|
//设置评分
|
|
setGrade(report_id, grade, rank, mask) {
|
|
return this.ctx.model.Report.updateOne({
|
|
_id: report_id
|
|
}, {
|
|
$set: {
|
|
[`grade.${grade.type}`]: {
|
|
score: grade.score, //分数
|
|
rank: rank, //等级
|
|
mask: mask, //评价
|
|
}
|
|
}
|
|
})
|
|
}
|
|
//取消评分
|
|
delGrade(report_id, type) {
|
|
return this.ctx.model.Report.updateOne({
|
|
_id: report_id
|
|
}, {
|
|
$set: {
|
|
[`grade.${type}`]: null
|
|
}
|
|
})
|
|
}
|
|
|
|
findStudyExist(dicomInfo, user_id) {
|
|
return this.ctx.model.Study.findOne({
|
|
StudyInstanceUID: dicomInfo.StudyInstanceUID,
|
|
user_id: user_id
|
|
}).exec();
|
|
}
|
|
/**
|
|
* 更新study
|
|
* @param {*} dicomInfo 更新的参数
|
|
* @param {*} series_ids series
|
|
* @param {*} _id series的_id
|
|
*/
|
|
async findAndUpsert(dicomInfo, user_id, serie) {
|
|
let study = await this.findStudyExist(dicomInfo, user_id)
|
|
if (!study) {
|
|
study = new this.ctx.model.Study({
|
|
StudyInstanceUID: dicomInfo.StudyInstanceUID,
|
|
user_id: user_id,
|
|
status: '1',
|
|
modals: "",
|
|
...dicomInfo,
|
|
})
|
|
} else {
|
|
study.status = '1';
|
|
//bug 上传时间未更新 此处用于解决
|
|
study.meta.updatedAt = new Date();
|
|
}
|
|
if (serie && serie.id) {
|
|
study.series_ids.addToSet(serie.id)
|
|
}
|
|
//更新study中modals
|
|
if (serie.Modality) {
|
|
let Modality = serie.Modality.split("\\")[0];
|
|
if (!study.modals) study.modals = '';
|
|
if (Modality && study.modals.indexOf(Modality) < 0) {
|
|
let oldModals = study.modals;
|
|
let modals = oldModals ? oldModals.split("\\") : [];
|
|
modals.push(Modality);
|
|
modals.sort((a, b) => a.localeCompare(b, 'zh'));
|
|
study.modals = modals.join("\\");
|
|
}
|
|
}
|
|
return await study.save();
|
|
}
|
|
}
|
|
|
|
module.exports = StudyService;
|