业务表
HIS | |
---|---|
问题
-->护理交班
疑问字段:
交班护士现在取的签名人,有待考量
缺少字段:
patients里缺少现状,背景,评估,建议,
patients里的患者状态statusNo不能只传一个,否则无法回显,或者一个状态对应patients里的一条,需要讨论
状态缺少 明日手术
未交班的接口/ts-pfs-nur-ipt/queryNurseHandoverStay缺少startShiftDate,endShiftDate入参
费用
0:原始记录
1:被红冲后的原始记录
2:冲正记录(也就是红冲的那一条负数量的记录)
3:取消冲正记录(把红冲冲回来的那一条记录(正记录))
4:被取消冲正记录(原始记录被红冲又被取消冲正后的状态)
bug 页面登记
- 模板管理-协定处方缺少响应式
- 模板管理-处方模板左侧树缺少滚动条
- 质控管理-质控规则库缺少响应式 (表格无响应式)
功能
修改记录, 要求签署前不存在修改记录, 则会导致, 签署前, 不需要赋值修改记录栈, 切换病历时, 修改记录栈不赋值又会有问题, 需要接口介入
如果不管这个,修改记录栈, 在切换时, 应该需要重新赋值
记录申请修改状态, 是申请修改, 则在点击修改记录时, 或者病历编辑时, 推送最新的修改记录
nativehandle="${obj.NativeHandle}" 编辑器.NavigateByUserTrackInfo(+obj.NativeHandle);
controlDom.medicalRecordViewPatientInfo=globalState.patientInfo;
controlDom.medicalRecordViewVisitInfo=globalState.visitInfo;
病历
xxx 文件夹 存 业务活动记录 业务活动记录又相当于一个分类存文档段, 数据源/组等 数据组又是数据源的一个分组 也就是 xxx 文件夹>业务活动记录>数据组>数据源 xxx 文件夹>业务活动记录>其他
skywalking
带上时间, 当行数据 (服务名,耗时)跳转到慢sql日志进行查询
权限管理-
人员管理-点人头 取消再勾选其他的,保存会让两个都勾选
skywalking的旧qiankun配置
mount(props) {
app.config.globalProperties.qiankunParentNode = document.getElementById(process.env.VUE_APP_CONTAINER).parentNode;
// 设置主应用下发的方法
// ElementUi.Select.directives.Clickoutside._onMouse() //启动ui框架的鼠标按下和松开事件
global.appLoading = true;
const loading = document.getElementById('loading');
loading ? (loading.style.display = 'none') : '';
Object.keys(props.fn).forEach(method => {
app.config.globalProperties[`$${method}`] = props.fn[method];
});
window.$goLogin = props.fn.goLogin; // 注册返回到登录
global.userInfo = props.data.userInfo;
global.software = props.data.software;
if (!localStorage.getItem('token')) {
localStorage.setItem('token', global.userInfo.token);
localStorage.setItem('THPMSCookie', global.userInfo.token);
}
const lineRoutes = props.data.lineRoutes;
const qkRouters = [];
for (const v of lineRoutes) {
// 遍历路由
let url = v.alink ? v.alink.split('?')[0] : '';
if (
url !== '#' &&
url !== '/' &&
url.indexOf(props.data.baseRoute) == 0 &&
url.indexOf('editor-web/bi/biEditor') == -1
) {
url = '/' + url.split(props.data.baseRoute)[1];
let _dir = url;
if (url.indexOf('_') > -1) {
_dir = url.split('_')[0];
}
//兼容中医附一老菜单
const _dirArr = _dir.split('/');
const same = _dirArr.slice(-2);
if (same[0] == same[1]) {
_dirArr.splice(-1, 1);
_dir = _dirArr.join('/');
}
//需要缓存的集合
const aliveRoutes = [
'/intg/processManagement', //编排管理
'/apiResources/apiOverview', //api网关
'/intg/link', //集成链路
'/access/supplier-manage' //供应商管理
// '/intg/overview'//集成概况
];
const keepAlive = aliveRoutes.includes(_dir);
const d = {
name: v.id,
path: url,
component: resolve => require(['@/views' + _dir], resolve),
props: true,
meta: {
firstEnter: true,
keepAlive,
title: v.menuname, //页面标题
canMultipleOpen: true //支持根据参数不同多开不同页签
}
};
if (v.redirect !== undefined) {
d.redirect = v.redirect;
}
qkRouters.push(d);
}
}
global.appLoading = false;
//监听主应用下发用户信息
window.axiosPromiseArr = [];
let routePath = '';
props.onGlobalStateChange((state, prevState) => {
//更换主题
if (state.action == 'changeTheme') {
setThemeColor(state.color);
}
//切换路由清空axiosPromiseArr数组
if (state.routePath != routePath) {
routePath = state.routePath;
if (window.axiosPromiseArr.length > 0) {
window.axiosPromiseArr = [];
}
}
});
// 设置通讯
app.config.globalProperties.$onGlobalStateChange = props.onGlobalStateChange;
app.config.globalProperties.$setGlobalState = props.setGlobalState;
mountApp(props);
//主应用主题传递
let themeColor = null;
if (props.fn.getTheme) {
themeColor = props.fn.getTheme();
} else {
//兼容老版本
require('./assets/css/element-variables.scss');
}
if (themeColor) {
setThemeColor(themeColor);
}
},
1 类型
1对象:对象选择只能选择开始节点定义的对象,对象有是否集合的开关,
2全局变量:只能选择全局变量属性
3常量:常量选择配置的常量列表
4自定义:自定义可以修改参数名称和配置参数值)
2 参数编码
3 参数值(如果类型为对象或者全局变量或常量时,则不让修改,为自定义参数时可以修改)
一体化运维
实时日志: 从打开页面开始实时输出的日志
查看/预览: 从点击的时候,服务器已经写入的日志
安装部署
待优化:
赤霄不能与 mysql 装同一台服务器,需要做互斥功能
排查错误
- 如果 404,
- 先看是否是前后端分离项目(看包结构)
- 如果是前后端分离,就看 nginx 配置和前端目录是否存在
- 如果服务挂了
- 去对应服务器看服务进程是否存在
ps -ef|grep 服务名的关键字(模糊匹配)
- 不存在就看错误日志
cat 错误日志目录
- 找到错误原因,改好后重启服务
systemctl restart 服务名
- 去对应服务器看服务进程是否存在
- 如果 404,
初始弹窗
- 选择环境, 架构, 操作系统, 安装的目标客户(项目),
- 根据弹窗存在本地的数据
- projectCodeInfo, 只用了projectCode (项目编码) 和licenseKey (产品授权码, 一体化集成用)
- projectCode 项目编码
- systemOperate 系统架构
- architecture 操作系统
- DeployEnvironment 安装环境
- ModeIndex 部署模式
- remark 备注
- 查询上一次记录存在本地的数据
- 第二步的信息
- DataSourceList 数据源配置取值 deployPlanContent. DatasourceDeployConfig
- ServerList 服务器配置 deployPlanContent. ServerDeployConfig
- 第三步的信息
- ServerResourceConfiguration 产品服务配置 取值
deployPlanContent. ServerResourceConfiguration
- dataList 所有要安装的产品中间件数据库的产品信息 取值
deployPlanContent.productDeployConfig
- 各个中间件信息 取值遍历
deployPlanContent.middlewareDeployConfig
- ServerResourceConfiguration 产品服务配置 取值
- 第二步的信息
第一步
- 根据 globalconfig 拿到相关依赖,判断依赖是否存在,并且依赖的依赖是否存在
- 调用版本号接口,判断插件是否需要更新,并与插件建立连接
- 下载更新插件
- 点下一步
- 判断插件是否需要更新,
- 插件更新 sh 脚本 (未等待更新成功),
- 判断依赖列表中是否都有versionPackagePath
第二步
- 配置服务器
- 执行系统调优 (isOpt) 根据是否数据库服务器 (isSql) 取反, 传给插件进行处理
- 导出模板,导出的是空文件
- 安装并测试钩子,
- 先判断本地是否有对应的钩子,
- 没有就右下角弹出钩子的下载进度, 钩子下载完毕后, 组装数据
hostName=serverPath+ serverName
(用于后续展示) - 有就插件把参数传给后端, 后端进行系统调优, 服务器互访(为了方便联调)等操作, 并探测服务器是否能够联通 (钩子是根据架构和操作系统区分的,接口做的,取默认版本或者第一个)
- 没有就右下角弹出钩子的下载进度, 钩子下载完毕后, 组装数据
- 先判断本地是否有对应的钩子,
- 点击下一步
- 校验信息是否填写完毕
- 校验钩子版本是否是最新的
- 单台服务器, 校验系统性能调优是否选择“是", 否则提示
第三步
- 配置中间件,数据库, 根据中间件/数据库的 code 码分别存值
- 配置产品,存到 ServerResourceConfiguration
- 点下一步
- 校验中间件, 数据库, 产品, 自定义变量的数据是否填写完毕,
- 保存部署记录
- 将部分依赖数据库的中间件改造为产品, 存在middleToProductList 中, 在middlewareOrProductFormat 中处理
第四步
- 读取 ServerResourceConfiguration,serverList,dataSourceList,dataList
- 点下一步
- 按照installSql(), middleware, installProduct() 的顺序排序进行安装, 默认按表格顺序, middleware 使用 sort 函数进行特殊处理, 解决部分依赖关系
- 计算安装时间,
- 调用
/getInstallTime接口
, 强依赖productCode 字段, 根据packageSize,predictInstallTime(预估安装时间,也就是上一次安装用间),downloadPackageTime
计算安装时间 - 调用
/upload/isPackageArr
接口判断本地是否有包,有包才算remainder
(预估下载时间),downloadPackageTime
(预估组包时间,调用预下载打包时后端存储)
- 调用
第五步
- websocket 连接建立完毕, 调用speed 函数, speed 函数调用installDownloadProgressText 函数, 根据下载 redis 的时间评估所有产品的安装时间
- 0 preDownloadLocalFile 判断本地是否有包
- 5 10 预下载 15 20 打包, 25 下分片 30 合包
- 35 处理包逻辑
- 如果是产品/数据库 调用插件处理包逻辑
- 如果是中间件, redisColony.js redis 下载逻辑: 上传 redis 日志
- 45 非redis集群上传 redis+它的日志 到服务器
- 50 redis集群 (redis 且高可用模式) 上传 redis 主/从/哨兵 + 他们的日志到服务器
- 65 中间件改产品
- 65-90 uploadProduct.js 产品下载逻辑: 上传产品数据库文件 + (lvs/微服务/nginx) 与他们的日志
- 如果预下载失败,点更改版本,调用
/preProject/deploy/plan/version/${id}
获取最新的versionPackagePath
再预下载 - 如果安装失败,弹框重新安装或继续
- 高可用模式下, 安装完毕后把 nginx 刷到 lvs 里去,
- 产品安装完毕, 调用updateVersionInstallTime 更新预计安装时间
安装完成, 上传插件生成的日志 (安装的时候滚动的那个日志)
安装
ctrl+p搜install.js
arrange/components/components/minxins/install.js
选择产品界面逻辑:
产品清单依赖模块列表的dataList数据移除了,查询的时候,就会把产品清单对应的产品勾选取消,但是仅查询的时候会进行清除,因此需要将当前列表的数据的show改为false
globalconfig里会返回serviceList,这是微服务列表,用来组装产品的包,会放到db_config的files里
确认安装逻辑:
install.js组装安装前所需数据,并进行安装
添加中间件所需步骤:
在store/install.js中添加中间件信息,和设置的mutation
在middleware文件夹中添加新文件组装成安装必须的数据
在installTable.js中组装确认安装中显示的数据
在middlewareList.vue中添加服务器资源中显示的个性化中间件,中间件组件放在middlewareComponents文件夹中
在middlewareList.vue外面一层的index.vue中添加sessionStorage.removeItem('seata')
如果涉及数据库,需要在install中将它添加进产品,现在已经处理,需要在中间件vue组件中添加middle.toLowerCase()}_mysql_db_host的数据,参考seata
installTableStep.js中的sort方法排列安装顺序(已移除,换为表格顺序datalist)
判断包需要更新的逻辑:
需要packageId,Id,版本号,versionRandom一致才不会更新,否则就会去云中台尝试拉取新的包
组装安装信息
先在installTable.js中组装安装的数据,再去confirmInstall.vue的checkFn中进行下载安装和预估安装时间
Content.vue saveConfig保存配置文件中等同的信息
如果需要新增一个中间件需要同时在
index.vue的destroyed //清空中间件的缓存
utils/installTable/middleware文件夹 //存储中间件配置,用于生成配置文件
utils/installTable/installTable.js//安装数据和提供给外部的数据
modeIndex //对应安装模式 1简易 2高可用
saveMiddlewareList //强依赖omp产品(一体化运维) ,对应produces
installMiddleware //用于组装[安装部署-确认安装的中间件表格]:port对应端口,code对应编码,url对应下载地址,host对应传递给,都必须
utils/installTable/installTableStep.js
sortFn //用于排列中间件的优先级,马上会统一到produce.js中
store/index //存中间件信息,同时本地化存储
produce.js //排列产品和中间件的顺序,用于处理依赖关系
//其他操作
lastPlan //查询上一次部署记录,存在本地
middlewareComponents //中间件组件,可以判断是否是集群或单机
堡垒机使用
//找到对应服务器后
//切换到根目录
cd /
//切换到云中台目录
cd /data/middle/base-env/nginx/html/SHARE_RESOURCE
//切换到一体化运维目录
cd /usr/local/nginx/html/omp
//退回到父目录进行备份
//复制,原目录还在
cd ..
cp -r SHARE_RESOURCE SHARE_RESOURCE_bak_0522
//移动,原目录不在了
mv SHARE_RESOURCE SHARE_RESOURCE_bak_0522
mkdir SHARE_RESOURCE
//进入云中台目录
cd SHARE_RESOURCE
//删除当前目录下的所有文件
rm -rf *
//上传文件
rz
//解压到当前目录
unzip
SSO
登录界面,用resource1
login-form.js是登录界面的template和js
mobile-form.js是移动端的登录界面的template和js
layout.html是正常登录界面
bjca.html是北京CA的
统一认证的菜单管理,资源id就是配按钮权限的,对应按钮的id
一套编码规则,指定哪些机构隶属于同一个集团,查机构即为查集团下所有机构数据
?
一个集团下,多个机构,一个机构多个院区,可能出现出现多个收费项目,如何处理
方案:按机构分类
需要转换机构为集团
以机构->院区->业务域做树
解析接口,获取接口参数
es 搜索
redis 缓存
脚本升级 (脚本文件,文件中包含sql命令之类的,后端解析执行)
服务升级 (后端的新版本传上去)
云中台
负责安装部署 安装就是把dist文件放到服务器去
选择安装产品
传入服务器信息(excel)
什么都搞完
执行安装命令装中间件之类的
(下载到本地的目录是根据exe插件决定的,同时exe可以上传资源到服务器(可配置))
一个包包含
nginx配置
前端包
服务器文件
全局配置
`