zdl 1 år sedan
förälder
incheckning
38757154fd

+ 174 - 31
src/views/rule/config/components/CreateDialog.vue

@@ -2,29 +2,137 @@
   <el-dialog
     :title="titleStr"
     :visible.sync="data.bSwitch"
-    width="40%"
+    width="940px"
   >
-    <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="140px" class="demo-ruleForm">
-      <el-form-item label="手术操作编码" prop="ssbm">
-        <el-input v-model="ruleForm.ssbm" placeholder="请输入" />
-      </el-form-item>
-      <el-form-item label="手术操作名称" prop="ssmc">
-        <el-input v-model="ruleForm.ssmc" placeholder="请输入" />
-      </el-form-item>
-      <el-form-item label="操作类型" prop="sslb">
-        <el-select v-model="ruleForm.sslb" filterable clearable placeholder="请选择">
-          <el-option label="介入治疗" value="介入治疗" />
-          <el-option label="手术" value="手术" />
-          <el-option label="治疗性操作" value="治疗性操作" />
-          <el-option label="诊断性操作" value="诊断性操作" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="录入选项" prop="lrxx">
-        <el-select v-model="ruleForm.lrxx" filterable clearable placeholder="请选择">
-          <el-option label="选择性" value="选择性" />
-          <el-option label="必选" value="必选" />
-        </el-select>
-      </el-form-item>
+    <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="80px" class="demo-ruleForm">
+      <el-row :gutter="16">
+        <el-col :span="8">
+          <el-form-item label="病历类型" prop="case_type">
+            <el-select v-model="ruleForm.case_type" filterable clearable placeholder="请选择" style="width: 198px;">
+              <el-option label="出院记录" value="出院记录" />
+              <el-option label="入院记录" value="入院记录" />
+              <el-option label="病程类" value="病程类" />
+              <el-option label="手术类" value="手术类" />
+              <el-option label="医嘱" value="医嘱" />
+              <el-option label="费用" value="费用" />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="质控项目" prop="object">
+            <el-cascader
+              v-model="ruleForm.object"
+              :options="objects"
+              :props="{
+                expandTrigger: 'hover',
+                value: 'field_name',
+                label: 'field_name',
+                children: 'child'
+              }"
+              clearable
+              filterable
+              :show-all-levels="false"
+              placeholder="请选择"
+              style="width: 198px;"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="质控科室">
+            <el-select
+              v-model="ruleForm.department"
+              multiple
+              collapse-tags
+              placeholder="请选择"
+              style="width: 198px;"
+            >
+              <el-option
+                v-for="item in departments"
+                :key="item.id"
+                :label="item.field_name"
+                :value="item.dep_id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="单项否决">
+            <el-select v-model="ruleForm.is_not" filterable clearable placeholder="请选择" style="width: 198px;">
+              <el-option label="是" :value="1" />
+              <el-option label="否" :value="0" />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="质控状态" prop="status">
+            <el-select v-model="ruleForm.status" filterable clearable placeholder="请选择" style="width: 198px;">
+              <el-option label="开启" :value="1" />
+              <el-option label="禁用" :value="2" />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="质控类型" prop="type">
+            <el-select v-model="ruleForm.type" filterable clearable placeholder="请选择" style="width: 198px;">
+              <el-option label="时效性" value="时效性" />
+              <el-option label="完整性" value="完整性" />
+              <el-option label="逻辑性" value="逻辑性" />
+              <el-option label="内涵性" value="内涵性" />
+              <el-option label="专病规则" value="专病规则" />
+              <el-option label="专科规则" value="专科规则" />
+              <el-option label="检查规则" value="检查规则" />
+              <el-option label="检验规则" value="检验规则" />
+              <el-option label="其他规则" value="其他规则" />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="质控场景" prop="changjing">
+            <el-select v-model="ruleForm.changjing" multiple collapse-tags filterable clearable placeholder="请选择" style="width: 198px;">
+              <el-option label="医生端" value="医生端" />
+              <el-option label="编码员" value="编码员" />
+              <el-option label="质控员" value="质控员" />
+              <el-option label="国考" value="国考" />
+              <el-option label="卫统" value="卫统" />
+              <el-option label="医保" value="医保" />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="风险等级" prop="error_level">
+            <el-select v-model="ruleForm.error_level" filterable clearable placeholder="请选择" style="width: 198px;">
+              <el-option label="高风险" value="高风险" />
+              <el-option label="中风险" value="中风险" />
+              <el-option label="低风险" value="低风险" />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="扣分分值" prop="score">
+            <el-input-number v-model="ruleForm.score" :precision="1" :step="0.5" step-strictly :max="100" :min="0" controls-position="right" placeholder="请输入" style="width: 198px;" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="规则描述" prop="description">
+            <el-input
+              v-model="ruleForm.description"
+              type="textarea"
+              :autosize="{ minRows: 3 }"
+              placeholder="请输入"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="3">
+          <el-form-item label="规则描述" prop="description">
+            <el-input
+              v-model="ruleForm.description"
+              type="textarea"
+              :autosize="{ minRows: 3 }"
+              placeholder="请输入"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
     </el-form>
     <span slot="footer" class="dialog-footer">
       <el-button @click="data.bSwitch = false">取 消</el-button>
@@ -45,27 +153,63 @@ export default {
           row: {}
         }
       }
+    },
+    objects: {
+      type: Array,
+      default() {
+        return []
+      }
+    },
+    departments: {
+      type: Array,
+      default() {
+        return []
+      }
     }
   },
   data() {
     return {
       ruleForm: {
-        ssbm: '',
-        ssmc: '',
-        sslb: '',
-        lrxx: ''
+        case_type: '',
+        changjing: [],
+        department: [],
+        object: '',
+        type: '',
+        is_not: '',
+        description: '',
+        score: undefined,
+        error_level: '',
+        status: ''
       },
       rules: {
-        ssbm: [
+        description: [
           { required: true, message: '请输入', trigger: 'blur' }
         ],
-        ssmc: [
+        score: [
           { required: true, message: '请输入', trigger: 'blur' }
         ],
-        sslb: [
+        case_type: [
+          { required: true, message: '请选择', trigger: 'blur' }
+        ],
+        changjing: [
+          { required: true, message: '请选择', trigger: 'blur' }
+        ],
+        department: [
+          { required: true, message: '请选择', trigger: 'blur' }
+        ],
+        object: [
+          { required: true, message: '请选择', trigger: 'blur' }
+        ],
+        type: [
+          { required: true, message: '请选择', trigger: 'blur' }
+        ],
+        is_not: [
+          { required: true, message: '请选择', trigger: 'blur' }
+        ],
+        error_level: [
           { required: true, message: '请选择', trigger: 'blur' }
         ],
-        lrxx: [
+        status: [
           { required: true, message: '请选择', trigger: 'blur' }
         ]
       }
@@ -119,6 +263,5 @@ export default {
 
 <style lang="scss" scoped>
 .demo-ruleForm {
-  width: 80%;
 }
 </style>

+ 0 - 19
src/views/rule/config/components/SearchBox.vue

@@ -110,7 +110,6 @@
 </template>
 
 <script>
-import { get_select_object, get_select_department } from '@/api/rule/config'
 
 export default {
   props: {
@@ -137,25 +136,7 @@ export default {
       departments: []
     }
   },
-  created() {
-    this.getObjectData()
-    this.getDepartmentData()
-  },
   methods: {
-    // 质控项目
-    getObjectData() {
-      get_select_object().then(res => {
-        const { p } = res
-        this.objects = Array.isArray(p) ? p : []
-      })
-    },
-    // 质控科室
-    getDepartmentData() {
-      get_select_department().then(res => {
-        const { p } = res
-        this.departments = Array.isArray(p) ? p : []
-      })
-    },
     onSubmit() {
       this.$emit('search')
     },

+ 2 - 2
src/views/rule/config/components/TableBox.vue

@@ -10,7 +10,7 @@
       >
         <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAllChange">全选</el-checkbox>
         <el-checkbox-group v-model="codes" @change="handleChange">
-          <el-checkbox label="description">错误描述</el-checkbox>
+          <el-checkbox label="description">规则描述</el-checkbox>
           <el-checkbox label="department">质控科室</el-checkbox>
           <el-checkbox label="is_not">单项否决</el-checkbox>
           <el-checkbox label="status">质控状态</el-checkbox>
@@ -53,7 +53,7 @@
       <el-table-column
         v-if="codes.includes('description')"
         prop="description"
-        label="错误描述"
+        label="规则描述"
         align="center"
       />
       <el-table-column

+ 21 - 3
src/views/rule/config/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <SearchBoxVue :data="searchData" @search="handleSearch" @reset="handleReset" />
+    <SearchBoxVue :data="searchData" :objects="objects" :departments="departments" @search="handleSearch" @reset="handleReset" />
     <TableBoxVue :loading="loading" :data="tableData" @refresh="handleRefresh" />
     <pagination
       :auto-scroll="false"
@@ -15,7 +15,7 @@
 <script>
 import SearchBoxVue from './components/SearchBox.vue'
 import TableBoxVue from './components/TableBox.vue'
-import { get_rule_list } from '@/api/rule/config'
+import { get_select_object, get_select_department, get_rule_list } from '@/api/rule/config'
 
 export default {
   components: {
@@ -41,13 +41,31 @@ export default {
         total: 0,
         page: 1,
         limit: 10
-      }
+      },
+      objects: [],
+      departments: []
     }
   },
   created() {
+    this.getObjectData()
+    this.getDepartmentData()
     this.getList()
   },
   methods: {
+    // 质控项目
+    getObjectData() {
+      get_select_object().then(res => {
+        const { p } = res
+        this.objects = Array.isArray(p) ? p : []
+      })
+    },
+    // 质控科室
+    getDepartmentData() {
+      get_select_department().then(res => {
+        const { p } = res
+        this.departments = Array.isArray(p) ? p : []
+      })
+    },
     handleRefresh() {
       this.getList()
     },