123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584 |
- <template>
- <div class="wrapper">
- <crumbs
- :title="isEdit ? '知识图谱标准术语维护-修改' : '知识图谱标准术语维护-添加'"
- class="topBack"
- :param="$route.params"
- linkTo="KnowledgeManage"
- ></crumbs>
- <div class="AddPlanBox">
- <el-row :gutter="20">
- <el-col :span="16">
- <el-form ref="form" :model="form" label-width="110px" :rules="rules">
- <el-form-item label="术语分类" class="selectMedicine" prop="labelType">
- <el-select
- v-model="form.labelType"
- placeholder="请选择术语分类"
- clearable
- filterable
- style="width: 100%"
- :disabled="isEdit"
- >
- <el-option
- v-for="item in terminologyData"
- :label="item.name"
- :value="item.val"
- :key="item.orderNo"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="术语名称" prop="name">
- <el-input
- v-model.trim="form.name"
- placeholder="请输入术语名称"
- @blur="handlePinyin($event)"
- @input="handlePinyinInput"
- :disabled="form.labelType===''"
- ></el-input>
- </el-form-item>
- <el-form-item label="术语拼音" prop="pycode">
- <el-input
- v-model.trim="form.pycode"
- placeholder="请输入术语拼音"
- ref="pycode"
- ></el-input>
- </el-form-item>
- <!-- 诊断 -->
- <DiseaseForm v-if="form.labelType==='医保疾病名称'" :data="form" @handleInput="handleInput"></DiseaseForm>
- <!-- 手术和操作 -->
- <OperationForm
- v-else-if="form.labelType==='医保手术和操作名称'"
- ref="operationForm"
- :data="form"
- @handleInput="handleInput"
- ></OperationForm>
- <!-- 检查 | 检查子项 -->
- <PacsForm
- v-else-if="form.labelType==='辅助检查名称' || form.labelType === '辅助检查子项目名称'"
- :key="form.labelType"
- :data="form"
- @handleInput="handleInput"
- ></PacsForm>
- <!-- 检验细项 -->
- <PacsDetailForm
- v-else-if="form.labelType==='实验室检查名称' "
- :data="form"
- @handleInput="handleInput"
- ></PacsDetailForm>
- <!-- 实验室检查细项(开单合理性) -->
- <LabPacsForm
- v-else-if="form.labelType==='实验室检查' "
- :data="form"
- @handleInput="handleInput"
- ></LabPacsForm>
- <!-- 化验细项及结果(推理)-->
- <AssayForm
- v-else-if="form.labelType==='化验细项及结果' "
- ref="assayForm"
- :data="form"
- @handleInput="handleInput"
- ></AssayForm>
- <!-- 药物过敏原-->
- <DrugAllergensForm
- v-else-if="form.labelType==='药物过敏原'"
- ref="drugAllergensForm"
- :data="form"
- @handleInput="handleInput"
- ></DrugAllergensForm>
- <!-- 药品注册名称-->
- <DrugRegNameForm
- v-else-if="form.labelType==='药品注册名称' "
- :data="form"
- @handleInput="handleInput"
- ></DrugRegNameForm>
- <!-- 药品代码通用名-->
- <DrugGeneNameForm
- v-else-if="form.labelType==='药品代码通用名' "
- ref="drugGeneNameForm"
- :data="form"
- @handleInput="handleInput"
- ></DrugGeneNameForm>
- <!-- 体征 | 实验室检查危急值-->
- <CommonForm
- v-else-if="form.labelType==='实验室检查危急值' || form.labelType === '体征'"
- :key="form.labelType"
- :data="form"
- @handleInput="handleInput"
- ></CommonForm>
- <el-form-item label="静态术语标识">
- <span style="paddingLeft: 12px; color: #606266">{{form.is_kl === 1? '有' : '无'}}</span>
- </el-form-item>
- <el-form-item>
- <el-button type="primary" @click="onSubmit" :disabled="saveDisable">确定</el-button>
- </el-form-item>
- </el-form>
- </el-col>
- </el-row>
- </div>
- </div>
- </template>
- <script>
- import api from '@api/cdss.js';
- import pinyin from '../../../js/Convert_Pinyin.js';
- import DiseaseForm from './DiseaseForm';
- import OperationForm from './OperationForm';
- import PacsForm from './PacsForm';
- import PacsDetailForm from './PacsDetailForm';
- import LabPacsForm from './LabPacsForm';
- import AssayForm from './AssayForm';
- import DrugAllergensForm from './DrugAllergensForm';
- import DrugRegNameForm from './DrugRegNameForm';
- import DrugGeneNameForm from './DrugGeneNameForm';
- import CommonForm from './CommonForm';
- export default {
- components: {
- DiseaseForm,
- OperationForm,
- PacsForm,
- PacsDetailForm,
- LabPacsForm,
- AssayForm,
- DrugAllergensForm,
- DrugRegNameForm,
- DrugGeneNameForm,
- CommonForm
- },
- data() {
- let reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/;
- let checkFrequency = (rule, value, callback) => {
- let pycode = this.$refs.pycode.value;
- if (reg.test(pycode && pycode.trim())) {
- callback('术语拼音仅支持字母、数字和标点符号');
- } else {
- callback();
- }
- };
- return {
- form: {
- age: '', //年龄
- alias: '', //别名(医保诊断名称、药物过敏原、药品注册名称)
- category: '', //诊断分类(医保诊断名称属性:1、2,无默认值)
- conflict_geiyao: '', //禁忌给药途径(药品注册名称属性)
- conflict_gender: '', //禁忌性别(药品注册名称属性)
- dept: '', //诊断所属科室(医保诊断名称属性)
- gender: '', //性别
- highriskcond: '', //高危条件(医保手术和操作属性)
- // id: 0,
- is_kl: 0, //静态知识标识(0-无,1-有,默认0)
- labelType: '', //术语类型-知识图谱标签类型(详情见字典)
- maxAge: '', // 最大值(实验室检查名称)
- maxval: '', //最小值(实验室检查名称)
- medtype: '', //药品类型(药物过敏原属性:药品、药品类别)
- minAge: '', //年龄下限(医保诊断名称属性)
- minval: '', //年龄上限(医保诊断名称属性)
- name: '', //术语名称
- opgrade: '', //手术等级(医保手术和操作属性:0、1、2、3、4,默认0)
- pycode: '', //拼音编码
- range: 0, //范围(0-范围内,1-范围外,默认0)
- result: '', //结果(药物过敏原、药品注册名称)
- risklevel: '', //药品高危级别(药品注册名称属性)
- special: '否', //特殊标志(化验细项及结果属性:是)
- status: 1, //状态(0-禁用,1-启用,默认1)
- unit: '', //单位(实验室检查名称、实验室检查、体征、实验室检查危急值)
- min_pack_num: null, //最小包装数量(药品代码通用名属性)
- reg_JiXin: '', //注册剂型(药品代码通用名属性)
- benWei_Code: '', //药品本位码(药品代码通用名属性)
- min_pack_unit: '', //最小包装单位(药品代码通用名属性)
- reg_GuiGe: '', //注册规格(药品代码通用名属性)
- pack_CaiLiao: '', //包装材质(药品代码通用名属性)
- producer: '', //药品企业(药品代码通用名属性)
- license_num: '', //批准文号(药品代码通用名属性)
- min_prod_unit: '', //最小制剂单位(药品代码通用名属性)
- stand_reg_JiXin: '' //标准注册剂型(药品代码通用名属性)
- },
- saveDisable: false, //保存按钮禁止点击
- rules: {
- labelType: [
- { required: true, message: '请选择术语分类', trigger: 'change' }
- ],
- name: [
- { required: true, message: '请输入术语名称', trigger: 'change' },
- { max: 100, message: '最多输入100字', trigger: 'blur' }
- ],
- pycode: [
- { required: true, message: '请输入术语拼音', trigger: 'change' },
- { max: 100, message: '最多输入100个字符', trigger: ['blur', 'change']},
- {
- required: true,
- validator: checkFrequency,
- trigger: ['blur', 'change']
- }
- ]
- },
- isEdit: false,
- terminologyData: [], // 术语分类
- nameFlag: '', // 判断术语名称是否被修改
- isValidate: true,
- id: '',
- isTrans: true // 拼音是否转换成功
- };
- },
- watch: {},
- computed: {},
- created() {
- this._initData();
- },
- mounted() {},
- methods: {
- // init
- _initData() {
- const { isEdit, data } = this.$route.params;
- this._getTerminologyData();
- if (isEdit) {
- this.isEdit = true;
- this.id = data.id;
- this.nameFlag = data.name; //判断术语名称是否被修改
- this._getEntitymanById(data.id);
- }
- },
- // 根据ID获取实例
- _getEntitymanById(id) {
- api.getEntitymanById({ id }).then(res => {
- if (res.data.code === '0') {
- this.form.age = res.data.data.age;
- this.form.alias = res.data.data.alias;
- this.form.category = res.data.data.category;
- this.form.conflict_geiyao = res.data.data.conflict_geiyao;
- this.form.conflict_gender = res.data.data.conflict_gender;
- this.form.dept = res.data.data.dept;
- this.form.gender = res.data.data.gender;
- this.form.highriskcond = res.data.data.highriskcond;
- this.form.is_kl = res.data.data.is_kl;
- this.form.labelType = res.data.data.labelType;
- this.form.maxAge = res.data.data.maxAge;
- this.form.maxval = res.data.data.maxval;
- this.form.medtype = res.data.data.medtype;
- this.form.minAge = res.data.data.minAge;
- this.form.minval = res.data.data.minval;
- this.form.name = res.data.data.name;
- this.form.opgrade = res.data.data.opgrade;
- this.form.pycode = res.data.data.pycode;
- this.form.range = res.data.data.range;
- this.form.result = res.data.data.result;
- this.form.risklevel = res.data.data.risklevel;
- this.form.special = res.data.data.special;
- this.form.status = res.data.data.status;
- this.form.unit = res.data.data.unit;
- this.form.min_pack_num = res.data.data.min_pack_num; //最小包装数量(药品代码通用名属性)
- this.form.reg_JiXin = res.data.data.reg_JiXin; //注册剂型(药品代码通用名属性)
- this.form.benWei_Code = res.data.data.benWei_Code; //药品本位码(药品代码通用名属性)
- this.form.min_pack_unit = res.data.data.min_pack_unit; //最小包装单位(药品代码通用名属性)
- this.form.reg_GuiGe = res.data.data.reg_GuiGe; //注册规格(药品代码通用名属性)
- this.form.pack_CaiLiao = res.data.data.pack_CaiLiao; //包装材质(药品代码通用名属性)
- this.form.producer = res.data.data.producer; //药品企业(药品代码通用名属性)
- this.form.license_num = res.data.data.license_num; //批准文号(药品代码通用名属性)
- this.form.min_prod_unit = res.data.data.min_prod_unit; //最小制剂单位(药品代码通用名属性)
- this.form.stand_reg_JiXin = res.data.data.stand_reg_JiXin; //标准注册剂型(药品代码通用名属性)
- }
- });
- },
- handleInput(data) {
- const { type } = data;
- if (type !== '') {
- this.form[type] = data.value;
- }
- },
- // 获取术语分类 字典
- _getTerminologyData() {
- api.getListDicCDSS().then(res => {
- if (res.data.code === '0') {
- this.terminologyData = res.data.data && res.data.data['8'];
- }
- });
- },
- // 处理参数
- _getParams() {
- const {
- age,
- alias,
- category,
- conflict_geiyao,
- conflict_gender,
- dept,
- gender,
- highriskcond,
- is_kl,
- labelType,
- maxAge,
- maxval,
- medtype,
- minAge,
- minval,
- name,
- opgrade,
- pycode,
- range,
- result,
- risklevel,
- special,
- status,
- unit,
- min_pack_num, //最小包装数量(药品代码通用名属性)
- reg_JiXin, //注册剂型(药品代码通用名属性)
- benWei_Code, //药品本位码(药品代码通用名属性)
- min_pack_unit, //最小包装单位(药品代码通用名属性)
- reg_GuiGe, //注册规格(药品代码通用名属性)
- pack_CaiLiao, //包装材质(药品代码通用名属性)
- producer, //药品企业(药品代码通用名属性)
- license_num, //批准文号(药品代码通用名属性)
- min_prod_unit, //最小制剂单位(药品代码通用名属性)
- stand_reg_JiXin //标准注册剂型(药品代码通用名属性)
- } = this.form;
- let params = {
- age, //年龄
- alias, //别名(医保诊断名称、药物过敏原、药品注册名称)
- category, //诊断分类(医保诊断名称属性:1、2,无默认值)
- conflict_geiyao, //禁忌给药途径(药品注册名称属性)
- conflict_gender, //禁忌性别(药品注册名称属性)
- dept, //诊断所属科室(医保诊断名称属性)
- gender, //性别
- highriskcond, //高危条件(医保手术和操作属性)
- is_kl, //静态知识标识(0-无,1-有,默认0)
- labelType, //术语类型-知识图谱标签类型(详情见字典)
- maxAge, // 最大值(实验室检查名称)
- maxval, //最小值(实验室检查名称)
- medtype, //药品类型(药物过敏原属性:药品、药品类别)
- minAge, //年龄下限(医保诊断名称属性)
- minval, //年龄上限(医保诊断名称属性)
- name, //术语名称
- opgrade, //手术等级(医保手术和操作属性:0、1、2、3、4,默认0)
- pycode, //拼音编码
- range, //范围(0-范围内,1-范围外,默认0)
- result, //结果(药物过敏原、药品注册名称)
- risklevel, //药品高危级别(药品注册名称属性)
- special, //特殊标志(化验细项及结果属性:是)
- status: 1, //状态(0-禁用,1-启用,默认1)
- unit, //单位(实验室检查名称、实验室检查、体征、实验室检查危急值)
- min_pack_num, //最小包装数量(药品代码通用名属性)
- reg_JiXin, //注册剂型(药品代码通用名属性)
- benWei_Code, //药品本位码(药品代码通用名属性)
- min_pack_unit, //最小包装单位(药品代码通用名属性)
- reg_GuiGe, //注册规格(药品代码通用名属性)
- pack_CaiLiao, //包装材质(药品代码通用名属性)
- producer, //药品企业(药品代码通用名属性)
- license_num, //批准文号(药品代码通用名属性)
- min_prod_unit, //最小制剂单位(药品代码通用名属性)
- stand_reg_JiXin //标准注册剂型(药品代码通用名属性)
- };
- if (this.isEdit) {
- params = { ...params, id: this.id };
- }
- return params;
- },
- onSubmit() {
- const { currentPage, isEdit } = this.$route.params;
- let numberpage = 1;
- if (isEdit) {
- numberpage = currentPage;
- }
- // if (this.isValidate === false || this.isTrans === false) return; // 术语名称已存在
- if (this.isValidate === false) return; // 术语名称已存在ss
- let goOn = true;
- if (this.form.labelType === '药物过敏原') {
- this.$refs.drugAllergensForm.$refs.drugAllergensForm &&
- this.$refs.drugAllergensForm.$refs.drugAllergensForm.validate(
- valid => {
- if (valid) {
- } else {
- goOn = false;
- }
- }
- );
- }
- if (this.form.labelType === '医保手术和操作名称') {
- this.$refs.operationForm.$refs.operationForm &&
- this.$refs.operationForm.$refs.operationForm.validate(valid => {
- if (valid) {
- } else {
- goOn = false;
- }
- });
- }
- // if (this.form.labelType === '化验细项及结果') {
- // this.$refs.assayForm.$refs.assayForm &&
- // this.$refs.assayForm.$refs.assayForm.validate(valid => {
- // if (valid) {
- // } else {
- // goOn = false;
- // }
- // });
- // }
- if (this.form.labelType === '药品代码通用名') {
- this.$refs.drugGeneNameForm.$refs.drugGeneNameForm &&
- this.$refs.drugGeneNameForm.$refs.drugGeneNameForm.validate(valid => {
- if (valid) {
- } else {
- goOn = false;
- }
- });
- }
- this.$refs.form.validate(async valid => {
- if (valid) {
- if (!goOn) return;
- this.saveDisable = true;
- let params = this._getParams();
- if (this.isTrans === false) {
- this.saveDisable = false;
- return;
- }
- let res = await api.dataEntityVerify(params);
- if (!res.data.data) {
- this.$alert(`${res.data.msg}`, '提示', {
- confirmButtonText: '确定',
- type: 'warning'
- })
- .then(() => {
- api.saveEntity(params).then(res => {
- if (res.data.code === '0') {
- this.$message({
- showClose: true,
- message: '保存成功',
- type: 'success',
- duration: 1000
- });
- this.$router.push({
- name: 'KnowledgeManage',
- params: Object.assign({}, this.$route.params, {
- currentPage: numberpage
- })
- });
- } else if (res.data.code === '00020007') {
- this.$message({
- showClose: true,
- message: res.data.msg,
- type: 'error',
- duration: 1000
- });
- } else {
- this.$message({
- showClose: true,
- message: res.data.msg,
- type: 'error',
- duration: 1000
- });
- }
- this.saveDisable = false;
- });
- })
- .catch(() => {
- this.saveDisable = false;
- this.$message({
- showClose: true,
- message: '保存失败',
- type: 'error',
- duration: 1000
- });
- });
- } else if (res.data.data) {
- api.saveEntity(params).then(res => {
- if (res.data.code === '0') {
- this.$message({
- showClose: true,
- message: '保存成功',
- type: 'success',
- duration: 1000
- });
- this.$router.push({
- name: 'KnowledgeManage',
- params: Object.assign({}, this.$route.params, {
- currentPage: numberpage
- })
- });
- } else if (res.data.code === '00020007') {
- this.$message({
- showClose: true,
- message: res.data.msg,
- type: 'error',
- duration: 1000
- });
- } else {
- this.$message({
- showClose: true,
- message: res.data.msg,
- type: 'error',
- duration: 1000
- });
- }
- this.saveDisable = false;
- });
- }
- } else {
- goOn = false;
- }
- });
- },
- handlePinyinInput(val) {
- this.isTrans = false;
- },
- // 处理拼音转换&验证唯一性
- handlePinyin(e) {
- if (this.nameFlag === e.target.value) {
- this.isTrans = true;
- this.isValidate = true; // 校验通过
- this.form.pycode = pinyin.getCamelChars(e.target.value);
- } else {
- const { is_kl, name, labelType } = this.form;
- let params = {
- is_kl,
- labelType,
- name,
- status: 0
- };
- api.isEntitymanExistCDSS(params).then(res => {
- if (res.data.code === '0') {
- // console.log(res.data.data, 'res.data.data');
- if (res.data.data === true) {
- this.isValidate = false; // 校验不通过
- // 已存在
- this.$refs.form.clearValidate();
- // 手动操作校验、展示登录错误信息
- this.rules.name.push({
- // js新增一个自定义校验
- validator: (rule, value, callback) => {
- callback('术语名称已存在');
- },
- trigger: 'blur'
- });
- this.$refs.form.validateField('name'); // 手动校验
- this.rules.name = this.rules.name.slice(0, 1); // 删除校验
- } else {
- this.isValidate = true; // 校验通过
- this.isTrans = true;
- // 不存在
- this.form.pycode = pinyin.getCamelChars(e.target.value);
- }
- }
- });
- }
- }
- }
- };
- </script>
- <style lang="less" scoped>
- .wrapper {
- min-width: 940px;
- .AddPlanBox {
- padding: 20px 60px 120px 60px;
- margin: 70px 20px 0 20px;
- background: #fff;
- }
- .topBack {
- top: 0;
- }
- .el-button {
- float: right;
- }
- }
- </style>
|