| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- import http from './http';
- import {getArray, randomUUID} from '@/tool';
- export function getDiseaseListMethod(page = 1, size = 10, query = {}) {
- const keyword = query.keyword;
- return http.post(`/basis/knowlib/diseaseQuery`, {
- serchtype: /* 1: 拼音码 2: 五笔码;搜索中文时可传空*/ /\w+/.test(keyword) ? '1' : '',
- pageid: page,
- pagesize: size,
- ...query, keyword,
- }, {meta: {share: true}}).then(res => {
- const data = res.data || {};
- return {
- total: data.disnum || 0,
- list: getArray(data.diseases, item => Object.assign(item, {
- $uid: randomUUID(),
- $code: item.disCode,
- $name: item.disname,
- })),
- };
- });
- }
- export function getSymptomListMethod(page = 1, size = 10, query = {}) {
- const keyword = query.keyword;
- return http.post(`/basis/knowlib/symptomQuery`, {
- serchtype: /* 1: 拼音码 2: 五笔码;搜索中文时可传空*/ /\w+/.test(keyword) ? '1' : '',
- pageid: page,
- pagesize: size,
- ...query, keyword,
- }, {meta: {share: true}}).then(res => {
- const data = res.data || {};
- return {
- total: data.sysnum || 0,
- list: getArray(data.sysptoms, item => Object.assign(item, {
- $uid: randomUUID(),
- $code: item.symid,
- $name: item.symname,
- therapies: getArray(item.therapys, item => Object.assign(item, {
- $uid: randomUUID(),
- $code: item.therapyCode,
- $name: item.therapyName,
- })),
- })),
- };
- });
- }
- export function getTherapyListMethod(page = 1, size = 10, query = {}) {
- const keyword = query.keyword;
- return http.post(`/basis/knowlib/getTherapyAll`, {
- serchtype: /* 1: 拼音码 2: 五笔码;搜索中文时可传空*/ /\w+/.test(keyword) ? '1' : '',
- pageid: page,
- pagesize: size,
- ...query, name: keyword,
- }, {meta: {share: true, ignoreError: true}}).then(res => {
- const list = getArray(res.data, item => Object.assign(item, {
- $uid: randomUUID(),
- $code: item.therapyCode,
- $name: item.therapy,
- }));
- return {total: list.length, list};
- });
- }
- /**
- *
- * 根据疾病信息推导业务处方
- * @param {string} business 业务类型,多个用逗号分隔
- * - '1' 中药处方
- * - '2' 中药制剂
- * - '3' 适宜技术
- * @param {object} illness 疾病信息对象
- * @param {string} illness.disease.id 疾病ID
- * @param {string} illness.disease.code 疾病代码
- * @param {string} illness.disease.name 疾病名称
- * @param {string} illness.symptom.code 证型代码
- * @param {string} illness.symptom.name 证型名称
- * @param {string} illness.therapy.code 治法代码
- * @param {string} illness.therapy.name 治法名称
- * @return {Promise<*>}
- */
- export function deduceIllnessPrescriptionMethod(business = '1,2,3', illness) {
- const [_, prefix = '', special, suffix = ''] = business.match(/^([^1]+)?(?:(1)(?:,|$))?([^1]*)?$/) || ['', business];
- const request = (business) => {
- if (!business) return {expList: [], schemes: []};
- return http.post(`/basis/knowlib/treatmentScheme`, {
- businesstype: business.endsWith(',') ? business.slice(0, -1) : business,
- disid: illness.disease.id,
- symid: illness.symptom.code,
- therapy: illness.therapy.name,
- therapyCode: illness.therapy.code,
- disCode: illness.disease.code,
- }).then(res => {
- const {expList, schemes} = res.data;
- return {schemes, expList: business === '1' ? {pres: expList, businesstype: business} : []};
- });
- };
- return Promise.all([
- request(special),
- request(`${prefix}${suffix}`),
- ]).then(([s, b]) => {
- return {
- expList: [s.expList, b.expList].flat(),
- schemes: [s.schemes, b.schemes].flat(),
- };
- }).then(({schemes, expList}) => {
- const categories = business.split(',');
- const results = {
- * [Symbol.iterator]() { for (const type of categories) yield this[type]; },
- };
- for (const category of categories) {
- const e = expList.find(item => item.businesstype === category) || {pres: []};
- const s = schemes.find(item => item.businesstype === category) || {pres: []};
- results[category] = [
- e.pres.map(item => Object.assign(item, {$category: category, $type: '3'})),
- s.pres.map(item => Object.assign(item, {$category: category, $type: '1'})),
- ].flat(1);
- if (results.index == null && results[category].length) results.index = categories.findIndex(t => t === category);
- }
- return results;
- });
- }
- /**
- * [legacy] 推导处方
- * {@link deduceIllnessPrescriptionMethod}
- */
- export function legacyDeduceIllnessPrescriptionMethod(business, params = {}) {
- return deduceIllnessPrescriptionMethod(business, {
- disease: {code: params.disCode, id: params.disid},
- symptom: {code: params.symptomCode},
- therapy: {code: params.therapyCode, name: params.treatment},
- }).then(data => {
- const categories = business.split(',');
- for (const category of categories) {
- const expList = [], schemes = [];
- for (const prescription of data[category]) {
- if (prescription.$type === '3') expList.push(prescription);
- else if (prescription.$type === '1') schemes.push(prescription);
- }
- data[category] = {code: 0, data: {expList, schemes: [{businesstype: category, presnum: schemes.length, pres: schemes}]}};
- }
- return data;
- });
- }
|