|
@@ -13,20 +13,72 @@
|
|
|
</template>
|
|
|
|
|
|
<template #main>
|
|
|
- <xc-table :data="data" @currentChange="queryChange" @sizeChange="queryChange" :height="200">
|
|
|
- <el-table-column label="默认值">
|
|
|
- <el-table-column label="操作" width="120">
|
|
|
- <template #default="scope">
|
|
|
- <el-button type="warning" round icon="Edit" @click="openDialog(false,scope.row)"></el-button>
|
|
|
- <el-button type="danger" round icon="Delete" @click="clickDelete(scope.row)"></el-button>
|
|
|
+ <el-tabs>
|
|
|
+ <el-tab-pane label="提取数据">
|
|
|
+ <xc-table :local-data="extractList" :height="200">
|
|
|
+ <el-table-column label="操作" width="90">
|
|
|
+ <template #default="{row}">
|
|
|
+ <el-button-group>
|
|
|
+ <el-button type="warning" icon="Edit" @click="extractFunc.open(row)"></el-button>
|
|
|
+ <el-button type="danger" icon="Delete" @click="extractFunc.delete(row.emrCategoryCode)"></el-button>
|
|
|
+ </el-button-group>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="emrCategoryCode" label="编码"/>
|
|
|
+ <el-table-column prop="dataExtract" label="数据元" show-overflow-tooltip/>
|
|
|
+ <el-table-column prop="name" label="名称" show-overflow-tooltip/>
|
|
|
+ </xc-table>
|
|
|
+ <xc-dialog-v2 title="提取数据" v-model="extractFunc.dialog">
|
|
|
+ <el-form>
|
|
|
+ <el-form-item label="电子病历编码">
|
|
|
+ <el-input v-model="extractFunc.data.emrCategoryCode"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="需要提取的数据元">
|
|
|
+ <el-select
|
|
|
+ style="width: 540px"
|
|
|
+ v-model="extractFunc.data.dataExtractObj"
|
|
|
+ multiple
|
|
|
+ filterable
|
|
|
+ allow-create
|
|
|
+ default-first-option
|
|
|
+ :reserve-keyword="false"
|
|
|
+ placeholder="Choose tags for your article">
|
|
|
+ <el-option
|
|
|
+ v-for="item in extractFunc.options"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="病历名称">
|
|
|
+ <el-input v-model="extractFunc.data.name"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <el-button @click="extractFunc.save()">保存</el-button>
|
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
- <!-- <el-table-column prop="delFlag" label="删除" width="30"/>-->
|
|
|
- <el-table-column prop="id" label="uuid" width="40"/>
|
|
|
- <el-table-column prop="name" label="数据名称" width="80" show-overflow-tooltip/>
|
|
|
- <el-table-column prop="sqlSentence" label="语句内容" show-overflow-tooltip/>
|
|
|
- </el-table-column>
|
|
|
- </xc-table>
|
|
|
+ </xc-dialog-v2>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="数据元">
|
|
|
+ <xc-table :data="data" @currentChange="queryChange" @sizeChange="queryChange" :height="200">
|
|
|
+ <el-table-column label="默认值">
|
|
|
+ <el-table-column label="操作" width="120">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button type="warning" round icon="Edit" @click="openDialog(false,scope.row)"></el-button>
|
|
|
+ <el-button type="danger" round icon="Delete" @click="clickDelete(scope.row)"></el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <!-- <el-table-column prop="delFlag" label="删除" width="30"/>-->
|
|
|
+ <el-table-column prop="id" label="uuid" width="40"/>
|
|
|
+ <el-table-column prop="name" label="数据名称" width="80" show-overflow-tooltip/>
|
|
|
+ <el-table-column prop="sqlSentence" label="语句内容" show-overflow-tooltip/>
|
|
|
+ </el-table-column>
|
|
|
+ </xc-table>
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ </el-tabs>
|
|
|
+
|
|
|
|
|
|
<el-drawer v-model="editData.dialog"
|
|
|
:title="editData.title"
|
|
@@ -99,13 +151,16 @@
|
|
|
<script setup name='EmrDataMaintenance'>
|
|
|
import XcTable from "@/components/xiao-chan/xc-table/XcTable.vue";
|
|
|
import {
|
|
|
- addData, deleteById,
|
|
|
+ addData, deleteById, deleteExtractDataSource,
|
|
|
fetchCountryDictionary,
|
|
|
- getEmrInpatientData,
|
|
|
- testSqlAPi, updateData
|
|
|
+ getEmrInpatientData, getExtractDataSource,
|
|
|
+ testSqlAPi, updateData, updateExtractDataSource
|
|
|
} from "@/api/dictionary/emr-data-maintenance-api";
|
|
|
import {ElMessage, ElMessageBox} from "element-plus";
|
|
|
import PageLayer from "@/layout/PageLayer";
|
|
|
+import XcDialog from "@/components/xiao-chan/dialog/XcDialog.vue";
|
|
|
+import XcDialogV2 from "@/components/xiao-chan/dialog/XcDialogV2.vue";
|
|
|
+import {BizException, ExceptionEnum} from "@/utils/BizException";
|
|
|
|
|
|
let data = $ref({
|
|
|
data: [],
|
|
@@ -136,10 +191,15 @@ let returnValue = $ref({
|
|
|
data: ''
|
|
|
})
|
|
|
|
|
|
+let extractList = $ref([])
|
|
|
+
|
|
|
let checkData = $ref('')
|
|
|
|
|
|
onMounted(() => {
|
|
|
queryData()
|
|
|
+ getExtractDataSource().then(res => {
|
|
|
+ extractList = res
|
|
|
+ })
|
|
|
})
|
|
|
|
|
|
|
|
@@ -268,6 +328,39 @@ const close = () => {
|
|
|
editData.dialog = false
|
|
|
editData.passedTheTest = false
|
|
|
}
|
|
|
+
|
|
|
+const extractFunc = $ref({
|
|
|
+ dialog: false,
|
|
|
+ data: {
|
|
|
+ emrCategoryCode: '',
|
|
|
+ dataExtract: '',
|
|
|
+ name: '',
|
|
|
+ dataExtractObj: []
|
|
|
+ },
|
|
|
+ options: [],
|
|
|
+ open: (row) => {
|
|
|
+ extractFunc.dialog = true
|
|
|
+ extractFunc.data = row
|
|
|
+ extractFunc.data.dataExtractObj = JSON.parse(extractFunc.data.dataExtract)
|
|
|
+ },
|
|
|
+ save: () => {
|
|
|
+ extractFunc.data.dataExtract = JSON.stringify(extractFunc.data.dataExtractObj);
|
|
|
+ if (!extractFunc.data.emrCategoryCode) {
|
|
|
+ BizException(ExceptionEnum.MESSAGE_ERROR, '编码不能为空。')
|
|
|
+ }
|
|
|
+ if (extractFunc.data.dataExtractObj.length === 0) {
|
|
|
+ BizException(ExceptionEnum.MESSAGE_ERROR, '提取数据元不能为空。')
|
|
|
+ }
|
|
|
+ if (!extractFunc.data.name) {
|
|
|
+ BizException(ExceptionEnum.MESSAGE_ERROR, '名称不能为空。')
|
|
|
+ }
|
|
|
+ updateExtractDataSource(extractFunc.data)
|
|
|
+ },
|
|
|
+ delete: (code) => {
|
|
|
+ deleteExtractDataSource(code)
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|