PACS按患者进行转发
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2025-10-30 14:04:16 +08:00
parent d04b1b5e6f
commit 0fdf3ee8cd
1 changed files with 123 additions and 123 deletions

View File

@ -21,62 +21,6 @@
<el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:patientName')">
<el-input v-model="searchData.PatientName" clearable style="width: 100px" :maxlength="400"></el-input>
</el-form-item>
<!-- patientSex -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:patientSex')"
>
<el-select
v-model="searchData.PatientSex"
clearable
style="width: 140px"
>
<el-option
v-for="item of $d.Sex"
:key="item.id"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item> -->
<!-- patientBirthDate -->
<!-- <el-form-item
:label="$t('trials:inspection:pullImage:search:patientBirthDate')"
>
<el-date-picker
v-model="PatientBirthDate"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyyMMDD"
>
</el-date-picker>
</el-form-item> -->
<!-- studyID -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:studyID')"
>
<el-input
v-model="searchData.StudyID"
clearable
:maxlength="400"
></el-input>
</el-form-item> -->
<!-- AccessionNumber -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:AccessionNumber')"
>
<el-input
v-model="searchData.AccessionNumber"
clearable
style="width: 100px"
:maxlength="400"
></el-input>
</el-form-item> -->
<!-- modalitiesInStudy -->
<el-form-item :label="$t('trials:inspection:pullImage:search:modalitiesInStudy')">
<el-select v-model="searchData.ModalitiesInStudyList" placeholder="" clearable multiple collapse-tags
@ -92,54 +36,6 @@
:picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<!-- studyTime -->
<!-- <el-form-item
:label="$t('trials:inspection:pullImage:search:studyTime')"
>
<el-time-picker
is-range
arrow-control
v-model="StudyTime"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
placeholder="选择时间范围"
>
</el-time-picker>
</el-form-item> -->
<!-- bodyPartExamined -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:bodyPartExamined')"
>
<el-input
v-model="searchData.BodyPartExamined"
clearable
:maxlength="400"
></el-input>
</el-form-item> -->
<!-- studyDescription -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:studyDescription')"
>
<el-input
v-model="searchData.StudyDescription"
clearable
:maxlength="400"
></el-input>
</el-form-item> -->
<!-- studyInstanceUID -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:studyInstanceUID')"
>
<el-input
v-model="searchData.StudyInstanceUID"
clearable
:maxlength="400"
></el-input>
</el-form-item> -->
<el-form-item>
<!-- 查询 -->
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
@ -154,6 +50,11 @@
@click="openGroup(null, 2)">
{{ $t('trials:inspection:button:pull') }}
</el-button>
<!-- 转发 -->
<el-button type="primary" v-if="IsSupportThirdService"
:disabled="!multipleSelection || multipleSelection.length <= 0" @click="openTranspond(multipleSelection)">
{{ $t('trials:inspection:button:transpond') }}
</el-button>
</el-form-item>
</el-form>
</div>
@ -235,12 +136,15 @@
</template>
</el-table-column>
<!--操作-->
<el-table-column :label="$t('common:action:action')" min-width="120">
<el-table-column :label="$t('common:action:action')" min-width="160" fixed="right">
<template slot-scope="scope">
<el-button circle icon="el-icon-refresh" class="refreshBtn" :title="$t('trials:inspection:button:pull')"
@click.stop="openGroup(scope.row, 2)" />
<el-button circle icon="el-icon-edit-outline" :title="$t('trials:inspection:button:collect')"
v-if="scope.row.IsStudyExist" @click.stop="openGroup(scope.row, 1)" />
<!-- 转发 -->
<el-button circle icon="el-icon-position" :title="$t('trials:inspection:button:transpond')"
v-if="IsSupportThirdService" @click="openTranspond([scope.row])" />
</template>
</el-table-column>
</el-table>
@ -274,6 +178,33 @@
</el-button>
</template>
</base-model>
<base-model v-if="transpond_model.visible" :config="transpond_model">
<template slot="dialog-body">
<el-form ref="transpondFrom" :model="transpondForm" :rules="transpondRules" label-width="100px" size="small">
<el-form-item :label="$t('trials:externalStaff:table:lastName')" prop="LastName" v-show="false">
<el-input clearable />
</el-form-item>
<!-- AE -->
<el-form-item :label="$t('trials:externalStaff:table:DestinationAE')" prop="HospitalGroupIdList">
<el-select v-model="transpondForm.DestinationAE" style="width: 100%" clearable placeholder="">
<el-option v-for="item of transpondAElist" :key="item.Id" :label="item.CalledAE" :value="item.Id">
<!-- <span>{{ item.UserType }}</span> -->
</el-option>
</el-select>
</el-form-item>
</el-form>
</template>
<template slot="dialog-footer">
<!-- 取消 -->
<el-button size="small" type="primary" :disabled="btnLoading" @click="handleCancelGroup">
{{ $t("common:button:cancel") }}
</el-button>
<!-- 保存 -->
<el-button size="small" type="primary" :loading="btnLoading" @click="transpondImage">
{{ $t("trials:inspection:pullImage:button:transpond") }}
</el-button>
</template>
</base-model>
</div>
</template>
<script>
@ -362,6 +293,29 @@ export default {
btnLoading: false,
hospitalGroupList: [],
groupStatus: 1,
IsSupportThirdService: false,
transpond_model: {
visible: false,
title: this.$t('trials:inspection:dialogTitle:transpond'),
width: '400px',
appendToBody: true
},
transpondForm: {
StudyInstanceUIDList: [],
DestinationAE: null
},
transpondRules: {
DestinationAE: [
{
required: true,
type: "array",
message: this.$t('common:ruleMessage:select'),
trigger: ['blur', 'change']
}
]
},
transpondAElist: []
}
},
computed: {
@ -478,6 +432,16 @@ export default {
this.getAEList(false, true)
},
methods: {
openTranspond(arr) {
this.getTranspondAEList();
this.transpondForm.StudyInstanceUIDList = []
this.transpondForm.DestinationAE = null
this.transpondForm.StudyInstanceUIDList = arr.map(
(item) => item.StudyInstanceUID
)
this.transpond_model.visible = true
},
pacsDicomAEIdChange(val, f = false) {
let pacs = this.AElist.find((item) => item.Id === val)
this.ModalityList = pacs.ModalityList
@ -509,16 +473,6 @@ export default {
Object.keys(this.searchData).forEach((key) => {
data[key] = this.searchData[key]
})
// if (
// this.PatientBirthDate &&
// this.PatientBirthDate[0] &&
// this.PatientBirthDate[1]
// ) {
// data.PatientBirthDate =
// this.PatientBirthDate[0] + '-' + this.PatientBirthDate[1]
// } else {
// data.PatientBirthDate = null
// }
if (this.StudyDate && this.StudyDate[0] && this.StudyDate[1]) {
data.StudyDate =
this.$moment(this.StudyDate[0]).format('YYYYMMDD') +
@ -527,14 +481,6 @@ export default {
} else {
data.StudyDate = null
}
// if (this.StudyTime && this.StudyTime[0] && this.StudyTime[1]) {
// data.StudyTime =
// this.$moment(this.StudyTime[0]).format('HHmmss') +
// '-' +
// this.$moment(this.StudyTime[1]).format('HHmmss')
// } else {
// data.StudyTime = null
// }
try {
this.loading = true
let res = await getCFindStudyList(data)
@ -577,6 +523,7 @@ export default {
let res = await getDicomAEList(data)
this.loading = false
if (res.IsSuccess) {
this.IsSupportThirdService = res.OtherInfo.IsSupportThirdService
this.AElist = res.Result.CurrentPageData
if (this.AElist.length > 0) {
if (!f) {
@ -598,6 +545,30 @@ export default {
console.log(err)
}
},
//
async getTranspondAEList() {
let data = {
CalledAE: null,
IP: null,
Port: null,
PacsTypeEnum: 3,
IsTestOK: null,
PageIndex: 1,
PageSize: 1000,
SortField: 'CreateTime',
Asc: false,
}
try {
this.loading = true
let res = await getDicomAEList(data)
this.loading = false
if (res.IsSuccess) {
this.transpondAElist = res.Result.CurrentPageData
}
} catch (err) {
console.log(err)
}
},
//
paging() {
this.PageList = []
@ -673,6 +644,7 @@ export default {
this.form.HospitalGroupIdList = []
this.groupStatus = 1
this.group_model.visible = false
this.transpond_model.visible = false
},
openGroup(row, type = 1) {
this.currentData = row
@ -693,6 +665,34 @@ export default {
}
this.group_model.visible = true
},
//
async transpondImage() {
try {
let validate = await this.$refs.transpondFrom.validate()
if (!validate) return false
let data = {
PacsDicomAEId: this.searchData.PacsDicomAEId,
DestinationAE: this.transpondForm.DestinationAE,
StudyInstanceUIDList: this.transpondForm.StudyInstanceUIDList
// studyIDList: [row.StudyID],
}
this.loading = true
this.btnLoading = true
let res = await cmoveStudyList(data)
this.loading = false
this.btnLoading = false
if (res.IsSuccess) {
this.$message.success(
this.$t('trials:inspection:pullImage:message:transpondSuccess')
)
this.handleCancelGroup()
}
} catch (err) {
this.loading = false
this.btnLoading = false
console.log(err)
}
},
// pacs
async pullImage() {
try {