179 lines
4.9 KiB
JavaScript
179 lines
4.9 KiB
JavaScript
let db = "";
|
|
const { ObjectId } = require("mongodb");
|
|
const validator = require('../../utils/validator.js')
|
|
module.exports = async (item, mongodb) => {
|
|
db = mongodb;
|
|
switch (item.type) {
|
|
case "getDiagnosisList":
|
|
return await getDiagnosisList(item);
|
|
case "deleteHlwDiagnosis":
|
|
return await deleteHlwDiagnosis(item);
|
|
case "updateHlwDiagnosis":
|
|
return await updateHlwDiagnosis(item);
|
|
case "addHlwDiagnosis":
|
|
return await addHlwDiagnosis(item);
|
|
case "updateHlwDiagnosisCategory":
|
|
return await updateHlwDiagnosisCategory(item)
|
|
}
|
|
};
|
|
|
|
// 获取诊断列表
|
|
|
|
async function getDiagnosisList(item) {
|
|
const { page, pageSize, name, code, keyword, category } = item;
|
|
try {
|
|
// 调用mongo 数据库查询
|
|
let query = {};
|
|
if (name && typeof name === "string") {
|
|
query.name = new RegExp(name.trim(), "i");
|
|
}
|
|
if (code && typeof code === "string") {
|
|
query.code = new RegExp(code.trim(), "i");
|
|
}
|
|
if (category && typeof category === "string") {
|
|
query.category = new RegExp(category.trim(), "i");
|
|
}
|
|
if (typeof keyword == "string" && keyword.trim()) {
|
|
query.$or = [
|
|
{ name: new RegExp(keyword.trim(), "i") },
|
|
{ code: new RegExp(keyword.trim(), "i") },
|
|
{ category: new RegExp(keyword.trim(), "i") },
|
|
{ pinyin: new RegExp(keyword.trim(), "i") },
|
|
];
|
|
}
|
|
const res = await db
|
|
.collection("hlw-diagnosis")
|
|
.find(query)
|
|
.sort({ createTime: -1 })
|
|
.skip((page - 1) * pageSize)
|
|
.limit(pageSize)
|
|
.toArray();
|
|
const total = await db.collection("hlw-diagnosis").countDocuments(query);
|
|
return {
|
|
success: true,
|
|
message: "查询成功",
|
|
data: res,
|
|
total,
|
|
pages: Math.ceil(total / pageSize),
|
|
};
|
|
} catch (err) {
|
|
return {
|
|
success: false,
|
|
message: err.message || "查询失败",
|
|
};
|
|
}
|
|
}
|
|
|
|
// 删除诊断信息
|
|
async function deleteHlwDiagnosis(item) {
|
|
const { id } = item;
|
|
if (typeof id !== 'string' || id.trim() === '') {
|
|
return { success: false, message: 'id不能为空' }
|
|
}
|
|
try {
|
|
// 调用mongo 数据库删除
|
|
const res = await db.collection("hlw-diagnosis").deleteOne({
|
|
_id: new ObjectId(id),
|
|
});
|
|
return {
|
|
success: true,
|
|
message: "删除成功",
|
|
res
|
|
};
|
|
} catch (err) {
|
|
return {
|
|
success: false,
|
|
message: err.message || "删除失败",
|
|
};
|
|
}
|
|
}
|
|
|
|
// 更新诊断信息
|
|
async function updateHlwDiagnosis(item) {
|
|
if (typeof item.id !== 'string' || item.id.trim() === '') {
|
|
return { success: false, message: 'id不能为空' }
|
|
}
|
|
try {
|
|
// 调用mongo 数据库更新
|
|
const [valid, data] = verifyDisease(item);
|
|
if (!valid) return { success: false, message: data }
|
|
data.updateTime = Date.now()
|
|
const res = await db
|
|
.collection("hlw-diagnosis")
|
|
.updateOne(
|
|
{ _id: new ObjectId(item.id) },
|
|
{ $set: data }
|
|
);
|
|
if (res.matchedCount === 0) {
|
|
return { success: false, message: '未查询到诊断' }
|
|
}
|
|
return {
|
|
success: true,
|
|
message: "更新成功",
|
|
res
|
|
};
|
|
} catch (err) {
|
|
return {
|
|
success: false,
|
|
message: err.message || "更新失败",
|
|
};
|
|
}
|
|
}
|
|
|
|
async function addHlwDiagnosis(item) {
|
|
try {
|
|
// 调用mongo 数据库新增
|
|
const [valid, data] = verifyDisease(item);
|
|
if (!valid) return { success: false, message: data }
|
|
data.createTime = Date.now()
|
|
const res = await db.collection("hlw-diagnosis").insertOne(data);
|
|
return {
|
|
success: true,
|
|
message: "新增成功",
|
|
id: res.insertedId
|
|
};
|
|
} catch (err) {
|
|
return {
|
|
success: false,
|
|
message: err.message || "新增失败",
|
|
};
|
|
}
|
|
}
|
|
|
|
async function updateHlwDiagnosisCategory(ctx) {
|
|
const oldCategory = typeof ctx.oldCategory === 'string' ? ctx.oldCategory.trim() : '';
|
|
const newCategory = typeof ctx.newCategory === 'string' ? ctx.newCategory.trim() : undefined;
|
|
if (!oldCategory || newCategory == undefined) {
|
|
return { success: false, message: '参数有误' }
|
|
}
|
|
try {
|
|
const res = await db.collection("hlw-diagnosis").updateMany(
|
|
{ category: oldCategory },
|
|
{ $set: { category: newCategory } }
|
|
);
|
|
return {
|
|
success: true,
|
|
message: "更新成功",
|
|
modifiedCount: res.modifiedCount
|
|
};
|
|
} catch (e) {
|
|
return {
|
|
success: false,
|
|
message: e.message || "更新失败",
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
function verifyDisease(ctx) {
|
|
const [valid, name] = validator.verifyString(ctx.name, "诊断名称", 1);
|
|
if (!valid) return [valid, name]
|
|
const [valid1, code] = validator.verifyString(ctx.code, "诊断编码", 1);
|
|
if (!valid1) return [valid1, code]
|
|
const [valid2, pinyin] = validator.verifyString(ctx.pinyin, "诊断拼音码", 1);
|
|
if (!valid2) return [valid2, pinyin]
|
|
const [, category] = validator.verifyString(ctx.category, "常用诊断名");
|
|
return [true, { name, code, pinyin, category }]
|
|
}
|
|
|