访视相关

main
wangxiaoshuang 2024-04-07 16:01:09 +08:00
parent df1d608c50
commit bb04e1bc1d
7 changed files with 244 additions and 44 deletions

11
src/api/readManagenent.js Normal file
View File

@ -0,0 +1,11 @@
// 阅片管理
import request from '@/utils/request'
// 任务列表
export function getPatientVisitTaskList(data) {
return request({
url: '/Patient/getPatientVisitTaskList',
method: 'post',
data
})
}

View File

@ -303,4 +303,31 @@ export function getSubjectImageZipInfo(id) {
url: `/Patient/getSubjectImageZipInfo/${id}`, url: `/Patient/getSubjectImageZipInfo/${id}`,
method: 'get', method: 'get',
}) })
}
// 访视->修改检查->获取访视已绑定的检查
export function getCurrentVisitPatientStudyList(data) {
return request({
url: `/Patient/getCurrentVisitPatientStudyList`,
method: 'post',
data
})
}
// 访视->修改检查->获取访视可绑定的检查
export function getPatientOtherStudyList(data) {
return request({
url: `/Patient/getPatientOtherStudyList`,
method: 'post',
data
})
}
// 访视->修改检查->修改访视和检查绑定关系
export function updateSubjectVisitStudyBinding(data) {
return request({
url: `/Patient/updateSubjectVisitStudyBinding`,
method: 'put',
data
})
} }

View File

@ -32,10 +32,9 @@
<el-menu-item <el-menu-item
v-if="!hasPermi(['role:zys'])" v-if="!hasPermi(['role:zys'])"
index="2" index="2"
:disabled="TotalNeedSignSystemDocCount !== 0"
> >
<i class="el-icon-box" /> <i class="el-icon-box" />
<!-- 我的项目 --> <!-- 我的项目:disabled="TotalNeedSignSystemDocCount !== 0" -->
<span slot="title"> <span slot="title">
{{ $t("trials:tab:trials") }} {{ $t("trials:tab:trials") }}
</span> </span>

View File

@ -212,7 +212,7 @@
</el-form> </el-form>
</template> </template>
<script> <script>
import store from "@/store"; // import store from "@/store";
import { mapGetters, mapState } from "vuex"; import { mapGetters, mapState } from "vuex";
import { getTrialInfo, addOrUpdateTrialHir } from "@/api/trials"; import { getTrialInfo, addOrUpdateTrialHir } from "@/api/trials";
import { getBasicDataSelects } from "@/api/dictionary/dictionary"; import { getBasicDataSelects } from "@/api/dictionary/dictionary";

View File

@ -9,7 +9,9 @@
<span slot="title" <span slot="title"
>{{ $t("trials:hirVisit:button:editStudy") }}{{ >{{ $t("trials:hirVisit:button:editStudy") }}{{
$t("trials:globalReview:title:subject") $t("trials:globalReview:title:subject")
}}T0001132{{ $t("trials:studyList:table:visit") }}ZhangSan }}{{ data.SubjectCode }}{{ $t("trials:studyList:table:visit") }}{{
data.VisitName
}}
</span> </span>
<!--当前检查---> <!--当前检查--->
<div class="topTable"> <div class="topTable">
@ -36,35 +38,35 @@
<!--检查编号--> <!--检查编号-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="PatientIdStr"
:label="$t('trials:audit:table:studyId')" :label="$t('trials:audit:table:studyId')"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> ></el-table-column>
<!--检查类型--> <!--检查类型-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="Modalities"
:label="$t('trials:audit:table:modality')" :label="$t('trials:audit:table:modality')"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> ></el-table-column>
<!--序列数量--> <!--序列数量-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="InstanceCount"
:label="$t('trials:audit:table:seriesCount')" :label="$t('trials:audit:table:seriesCount')"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> ></el-table-column>
<!--检查日期--> <!--检查日期-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="StudyTime"
:label="$t('trials:audit:table:studyDate')" :label="$t('trials:audit:table:studyDate')"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> ></el-table-column>
<!--所属访视--> <!--所属访视-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="VisitName"
:label="$t('trials:hirVisit:table:ownershipVisit')" :label="$t('trials:hirVisit:table:ownershipVisit')"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> ></el-table-column>
@ -99,7 +101,7 @@
<!-- 检查日期 --> <!-- 检查日期 -->
<el-form-item :label="$t('trials:uploadedDicoms:table:studyDate')"> <el-form-item :label="$t('trials:uploadedDicoms:table:studyDate')">
<el-date-picker <el-date-picker
v-model="searchData.date" v-model="dateValue"
type="daterange" type="daterange"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
@ -143,35 +145,35 @@
<!--检查编号--> <!--检查编号-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="PatientIdStr"
:label="$t('trials:audit:table:studyId')" :label="$t('trials:audit:table:studyId')"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> ></el-table-column>
<!--检查类型--> <!--检查类型-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="Modalities"
:label="$t('trials:audit:table:modality')" :label="$t('trials:audit:table:modality')"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> ></el-table-column>
<!--序列数量--> <!--序列数量-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="InstanceCount"
:label="$t('trials:audit:table:seriesCount')" :label="$t('trials:audit:table:seriesCount')"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> ></el-table-column>
<!--检查日期--> <!--检查日期-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="StudyTime"
:label="$t('trials:audit:table:studyDate')" :label="$t('trials:audit:table:studyDate')"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> ></el-table-column>
<!--所属访视--> <!--所属访视-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="VisitName"
:label="$t('trials:hirVisit:table:ownershipVisit')" :label="$t('trials:hirVisit:table:ownershipVisit')"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> ></el-table-column>
@ -197,27 +199,124 @@
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import {
getCurrentVisitPatientStudyList,
getPatientOtherStudyList,
updateSubjectVisitStudyBinding,
} from "@/api/trials/visit.js";
const defaultSearchData = () => {
return {
EarliestStudyTime: null,
LatestStudyTime: null,
};
};
export default { export default {
name: "editStudyList", name: "editStudyList",
props: { props: {
visible: { visible: {
require: true, required: true,
default: false, default: false,
}, },
data: {
required: true,
default: () => {
return {};
},
},
}, },
data() { data() {
return { return {
// //
searchData: {}, searchData: defaultSearchData(),
dateValue: [],
// //
bottomList: [{ IsUrgent: 2 }], bottomList: [],
bottomLoading: false, bottomLoading: false,
// //
topList: [{ IsUrgent: 1 }], topList: [],
topLoading: false, topLoading: false,
}; };
}, },
created() {
this.getTopList();
this.getBottomList();
},
methods: { methods: {
//
async getTopList() {
try {
let data = {
SujectVisitId: this.data.SubjectVisitId,
};
this.topLoading = true;
let res = await getCurrentVisitPatientStudyList(data);
this.topLoading = false;
if (res.IsSuccess) {
this.topList = res.Result;
}
} catch (err) {
this.topLoading = false;
console.log(err);
}
},
//
async getBottomList() {
let data = {};
Object.keys(this.searchData).forEach((key) => {
data[key] = this.searchData[key];
});
data.PatientId = this.data.PatientList[0].PatientId;
data.SujectVisitId = this.data.SubjectVisitId;
if (this.dateValue[0] && this.dateValue[1]) {
data.EarliestStudyTime = this.dateValue[0].toISOString();
data.LatestStudyTime = this.dateValue[0].toISOString();
}
try {
this.bottomLoading = true;
let res = await getPatientOtherStudyList(data);
this.bottomLoading = false;
if (res.IsSuccess) {
this.bottomList = res.Result;
}
} catch (err) {
console.log(err);
this.bottomLoading = false;
}
},
// 访
async setRelation(item, isAdd = true) {
try {
let confirmMessage = "trials:sitesList:message:removeSite";
if (isAdd) {
confirmMessage = "trials:customSite:message:add";
}
let confirm = await this.$confirm(this.$t(confirmMessage), {
type: "warning",
distinguishCancelAndClose: true,
confirmButtonText: this.$t("common:button:confirm"),
cancelButtonText: this.$t("recompose:button:cancel"),
});
if (confirm !== "confirm") return;
let data = {
isAdd,
SubjectId: this.data.SubjectId,
SubjectVisitId: this.data.SubjectVisitId,
ScpStudyId: item.SCPStudyId,
};
let res = await updateSubjectVisitStudyBinding(data);
if (res.IsSuccess) {
this.getTopList();
this.getBottomList();
let message = "common:message:addedSuccessfully";
if (!isAdd) {
message = "common:message:removedSuccessfully";
}
this.$message.success(this.$t(message));
}
} catch (err) {
console.log(err);
}
},
// //
beforeCloseStudyDig() { beforeCloseStudyDig() {
this.$emit("update:visible", false); this.$emit("update:visible", false);
@ -229,15 +328,29 @@ export default {
// //
detail(item, key) {}, detail(item, key) {},
// //
remove(item) {}, remove(item) {
this.setRelation(item, false);
},
// //
handleSearch() {}, handleSearch() {
this.getBottomList();
},
// //
handleReset() {}, handleReset() {
this.reset();
this.getBottomList();
},
//
reset() {
this.searchData = defaultSearchData();
this.dateValue = [];
},
// //
handleSelectChange() {}, handleSelectChange() {},
// //
add(item) {}, add(item) {
this.setRelation(item, true);
},
addTrials() {}, addTrials() {},
}, },
}; };

View File

@ -263,7 +263,11 @@
/> />
</template> </template>
<!--修改检查--> <!--修改检查-->
<editStudyList :visible.sync="editStudyVisible" /> <editStudyList
:visible.sync="editStudyVisible"
:data="editStudyData"
v-if="editStudyVisible"
/>
</BaseContainer> </BaseContainer>
</template> </template>
<script> <script>
@ -274,6 +278,7 @@ import {
getPatientSubejctVisitList, getPatientSubejctVisitList,
getSubjectImageZipInfo, getSubjectImageZipInfo,
} from "@/api/trials/visit.js"; } from "@/api/trials/visit.js";
import { submitVisitStudyBinding } from "@/api/inspection.js";
import JSZip from "jszip"; import JSZip from "jszip";
import axios from "axios"; import axios from "axios";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
@ -306,6 +311,7 @@ export default {
total: 0, total: 0,
// //
editStudyVisible: false, editStudyVisible: false,
editStudyData: {},
}; };
}, },
created() { created() {
@ -351,10 +357,39 @@ export default {
}, },
// //
editStudy(item) { editStudy(item) {
this.editStudyData = item;
this.editStudyVisible = true; this.editStudyVisible = true;
}, },
// //
submit() {}, async submit(item) {
let confirm = await this.$confirm(
this.$t("trials:adjustRecord:message:confirm"),
{
type: "warning",
distinguishCancelAndClose: true,
confirmButtonText: this.$t("common:button:confirm"),
cancelButtonText: this.$t("recompose:button:cancel"),
}
);
if (confirm !== "confirm") return;
let data = {
TrialId: this.$route.query.trialId,
SubjectVisitId: [item.SubjectVisitId],
};
try {
this.loading = true;
let res = await submitVisitStudyBinding(data);
this.loading = false;
if (res.IsSuccess) {
this.$message.success(
this.$t("trials:crcUpload:message:submittedSuccessfully")
);
}
} catch (err) {
this.btnLoading2 = false;
console.log(err);
}
},
// //
remove() {}, remove() {},
// //

View File

@ -5,18 +5,18 @@
<el-form :inline="true"> <el-form :inline="true">
<!-- 受试者编号 --> <!-- 受试者编号 -->
<el-form-item :label="$t('trials:crcQuestion:table:subjectId')"> <el-form-item :label="$t('trials:crcQuestion:table:subjectId')">
<el-input v-model="searchData.SubjectInfo" style="width: 140px" /> <el-input v-model="searchData.SubjectCode" style="width: 140px" />
</el-form-item> </el-form-item>
<!-- 患者编号 --> <!-- 患者编号 -->
<el-form-item :label="$t('trials:uploadDicomList:table:pId')"> <!-- <el-form-item :label="$t('trials:uploadDicomList:table:pId')">
<el-input v-model="searchData.SubjectInfo" style="width: 140px" /> <el-input v-model="searchData.SubjectInfo" style="width: 140px" />
</el-form-item> </el-form-item> -->
<!-- 患者姓名 --> <!-- 患者姓名 -->
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')"> <!-- <el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
<el-input v-model="searchData.SubjectInfo" style="width: 140px" /> <el-input v-model="searchData.SubjectInfo" style="width: 140px" />
</el-form-item> </el-form-item> -->
<!-- 访视名称 --> <!-- 访视名称 -->
<el-form-item :label="$t('trials:globalReview:table:visitName')"> <!-- <el-form-item :label="$t('trials:globalReview:table:visitName')">
<el-select <el-select
v-model="searchData.SiteId" v-model="searchData.SiteId"
clearable clearable
@ -30,43 +30,43 @@
:value="item.SiteId" :value="item.SiteId"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item> -->
<!-- 任务状态 --> <!-- 任务状态 -->
<el-form-item :label="$t('trials:readTask:table:taskState')"> <el-form-item :label="$t('trials:readTask:table:taskState')">
<el-select <el-select
v-model="searchData.SiteId" v-model="searchData.taskState"
clearable clearable
filterable filterable
style="width: 150px" style="width: 150px"
> >
<el-option <el-option
v-for="item of visitOptions" v-for="item of visitOptions"
:key="item.SiteId" :key="item.id"
:label="item.TrialSiteCode" :label="item.label"
:value="item.SiteId" :value="item.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 阅片状态 --> <!-- 阅片状态 -->
<el-form-item :label="$t('trials:readTask:table:readingTaskState')"> <el-form-item :label="$t('trials:readTask:table:readingTaskState')">
<el-select <el-select
v-model="searchData.SiteId" v-model="searchData.ReadingTaskState"
clearable clearable
filterable filterable
style="width: 150px" style="width: 150px"
> >
<el-option <el-option
v-for="item of visitOptions" v-for="item of visitOptions"
:key="item.SiteId" :key="item.id"
:label="item.TrialSiteCode" :label="item.label"
:value="item.SiteId" :value="item.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 阅片完成时间 --> <!-- 阅片完成时间 -->
<el-form-item :label="$t('trials:reviewTrack:table:signTime')"> <el-form-item :label="$t('trials:reviewTrack:table:signTime')">
<el-date-picker <el-date-picker
v-model="searchData.date" v-model="dateValue"
type="daterange" type="daterange"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
@ -168,11 +168,11 @@
<template slot-scope="scope"> <template slot-scope="scope">
<!--阅片结果--> <!--阅片结果-->
<el-button type="text" @click="readResult(scope.row)">{{ <el-button type="text" @click="readResult(scope.row)">{{
$t("trials:hirVisit:button:editStudy") $t("trials:auditRecord:table:readingResult")
}}</el-button> }}</el-button>
<!--下载报告--> <!--下载报告-->
<el-button type="text" @click="downloadReport(scope.row)">{{ <el-button type="text" @click="downloadReport(scope.row)">{{
$t("common:button:submit") $t("trials:reading:button:uploadReport")
}}</el-button> }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -192,6 +192,21 @@
<script> <script>
import BaseContainer from "@/components/BaseContainer"; import BaseContainer from "@/components/BaseContainer";
import Pagination from "@/components/Pagination"; import Pagination from "@/components/Pagination";
import { getPatientVisitTaskList } from "@/api/readManagenent.js";
const defaultSearchData = () => {
return {
SubjectCode: null,
ReadingCategory: 1,
ReadingTaskState: 0,
TaskState: 0,
BeginSignTime: null,
EndSignTime: null,
PageIndex: 0,
PageSize: 0,
Asc: false,
SortField: "CreateTime",
};
};
export default { export default {
name: "readManagenent", name: "readManagenent",
components: { BaseContainer, Pagination }, components: { BaseContainer, Pagination },
@ -220,7 +235,7 @@ export default {
// //
handleSortByColumn() {}, handleSortByColumn() {},
// //
getList() {}, async getList() {},
// //
downloadReport() {}, downloadReport() {},
// //