疗信息化建设是关乎民生的重要举措,也是推进“健康中国”建设的必要环节。新致新源团队整理了近期关于医疗信息化行业的重要资讯,供读者参考。
一、“2024全国智慧医保大赛”正式启动
4月23日,国家医保局举办发布会,宣布正式启动“2024全国智慧医保大赛”。本次大赛由国家医疗保障局主办,由重庆市医疗保障局、重庆市大数据应用发展管理局、重庆两江新区管委会、重庆市科学技术研究院联合承办。
在赛程安排方面,本次大赛包括初赛、复赛、决赛、颁奖四个阶段。大赛最终将评选出一等奖、二等奖、三等奖及优胜奖若干名,并初定于9月在重庆颁奖。目前,大赛各项筹备工作正有序推进。
大赛官网:
https://www.chs-ihssc.cn/
二、“第七届智慧医疗创新大赛”于4月启动全国报名
4月22日,智慧医疗创新大赛组委会正式发布关于举办“科创中国”技术路演-智慧医疗专场暨“第七届智慧医疗创新大赛”的通知。大赛于4月启动全国报名,拟于9月“2024第二届数字健康创新大会”同期召开全国总决赛项目路演。
大赛由全国31个省市、40余家行业协会/学会联合主办,,面向全国各级医疗卫生机构、企事业单位、科研院所、创新团队和海外人才,共设立31个省市分赛区。
报名网址:
www.shic.org.cn
三、“2024第五届公立医院后勤建设与管理大会”将于6月在深圳召开
4月19日,据悉,关于召开“2024第五届公立医院后勤建设与管理大会”的通知正式发布。本届大会由《中国医院院长》杂志和中国医药物资协会智慧医疗分会等单位联合主办,联合部分省市医院协会和相关后勤专委会等机构协办,智慧医卫(北京)信息技术研究中心承办,拟定于6月28日-30日在广东深圳召开。
会议同期活动包括:优秀论文征集评选、2024医院后勤建设与管理优秀案例评选、图书《医院后勤建设与管理实用案例精编》征文、会议展览。
报名通知:
https://mp.weixin.qq.com/s/UcebXlyBhFS_YR-khVTVuw
四、《北京市支持创新医药高质量发展若干措施(2024年)》出台
4月17日,北京市医疗保障局等九部门联合发布了关于印发《北京市支持创新医药高质量发展若干措施(2024年)》的通知,文件中明确提出鼓励医疗健康数据赋能创新。
具体包括:推动形成一批单病种主题数据库;探索实现数据“可用不可见、可控可计量”的分布式安全流动;扩大住院和门诊电子病历在医疗机构之间的共享应用范围;探索医疗健康数据与商业健康保险的信息共享机制等。
官方文件:
https://ybj.beijing.gov.cn/zwgk/2020_zcwj/202404/t20240417_3620553.html
五、中国健康产业新质生产力发展主题会议将于5月在京举行
4月8日,据中国财富网,由中国财富传媒集团和北京经济技术开发区管委会联合主办的“2024中国健康产业新质生产力发展主题会议”将于5月25日-26日在北京举行。
会议将围绕“新科技、新动能、新赛道”主题,开展主旨演讲、政策解读和高端对话。据悉,会议期间还将开展“人工智能+健康产业”高端对话,对大健康产业创新成果进行重点展示,对“创新引领新质生产力发展优秀企业”进行表彰等,
报名通知:
https://www.cfbond.com/2024/04/08/991044544.html?category=10005
六、《海南省深化医药卫生体制改革2024年重点工作任务》正式印发
3月25日,健康海南建设(爱国卫生运动)委员会印发了《海南省深化医药卫生体制改革2024年重点工作任务》,明确提出加强“三医”数据联通共享。
推动数字疗法等智慧健康技术产品在基层推广应用。持续开展数据治理与应用活动,组建省三医数据中心,制定海南省健康医疗大数据应用相关规范,完善5G远程诊疗管理制度;促进“三医”政务、业务等有关信息互通共享等。
官方文件:
https://wst.hainan.gov.cn/swjw/rdzt/hnsshyy/tzgg/202404/t20240408_3640018.html
七、“2024中国医院信息网络大会”将于5月在南京举办
3月8日,中国医院协会正式发布关于召开“2024中国医院信息网络大会(CHIMA 2024)”的通知。本次大会拟定于5月16日—19日在南京国际展览中心召开,同期还将举办中外医疗信息技术和产品展览会。
本次大会主要内容包括:主题演讲、拓导课和分论坛、论文宣讲、案例路演、信息安全攻防演练对抗、新技术与新产品展览、全委会、其他。
报名网址:
http://2024.chima.org.cn
作为国内医疗信息化的先行者,新致新源积极响应国家十四五“普惠数字化”要求,在目前行业所面临的挑战下,结合中国国产操作系统的未来趋势,于2022年正式推出国内开源医疗OpenHIS解决方案,通过整合医疗全体系、全链条资源,提供全方位医疗服务的网络平台:OpenHIS.org.cn。
新致开源医疗产品功能地图
新致开源标准化解决方案
我们欢迎多元化合作方式,包括但不仅限于开源产品协作开发、信息化产品协作落地、行业活动合作举办、医疗客户合作共享、医疗客户产品需求协作支持等方式。欢迎联系我们咨询合作!
uang!在刚刚过去的双十一期间,你的钱包是不是又小了很多?其实有很多的朋友是直接通过手机来进行购买的,甚至身边的好几个同事都是通过手机流量抢到了秒杀的手机和鞋子,简直是逆天了。这还要得益于现如今联通的“沃”4G网络的套餐优势。纵使是不停的刷手机,逛淘宝,看测评,也不会超出无限流量的范围。
这不,最近我也被安利,办理了一张联通的4G套餐卡。其中,同时让我关注“上海联通”微信公众号,最近联通11.11狂欢节又有重磅活动放送,橙色炸弹、福袋狂欢任你抢。活动主链接:http://openwx.soji.so/index.php?s=/addon/ShltH5/Index/double/id/10005.html
NO.1:福袋拆拆拆,拆到你手软
拆福袋活动堪称是此次上海联通主力活动,凡是在11.9-11.15期间点击活动主页链接天赚到拆福袋页面的朋友,都能够每日开启一次运气福袋,选取中意的礼物,同时将活动分享后最多每日能够拆福袋4次,分享超过10次就能够开启至尊福袋,可见很诱人。
简单说一下,运气福袋礼品包含以下:
1~10G随即全国流量日包
各种抵用券:笔者已知最大抵用券可以在合约计划中抵扣现金4999元
橙豆红包:最高288橙豆
可使用的前提就是你不是账户不是欠费停机、销户或黑名单才行。
No.2:商城半价狂欢,让你看到就心动
商城链接请看这里:https://file.10010sh.cn/member-center/storeIndex
橙豆红包你领到多少?在双11期间(截止日期为11月18日,并且以后每个月18号都会是会员日),联通橙豆会员能够参与商城5折兑换活动,流量包、视频会员等福利,通过商城兑换就可以拿到手,关键是5折,这一波操作很值得拥有。
No.3:充值立减,话费任性。
每个月都在为充值话费而担忧,现在橙市会员能够享有很多优惠政策。如下图所示:
据了解,在11月16日至18日期间,每天早上的10点18分,16日发放一万张,17日发放5000张,18日发放5000张满100减15优惠券,用心去抢很容易得到。
被同事安利之后,就从来没有错过每一次机会,你觉得如何呢?可以的话就快来参与好了。
上次课我们开发到了显示商品详情
有点击"添加到购物车"的按钮
但是没有反应,我们完成添加购物车的功能就能实现这个效果了
打开mall-order-webapi模块
业务逻辑中一些基本的注意事项
持久层要按上面分析的业务逻辑,开发多个方法
mapper包创建OmsCartMapper接口,编写代码如下
@Repository
public interface OmsCartMapper {
// 判断当前用户的购物车列表中是否包含指定sku商品的方法
OmsCart selectExistsCart(@Param("userId") Long userId,@Param("skuId") Long skuId);
// 新增商品到购物车表中
void saveCart(OmsCart omsCart);
// 修改指定购物车商品的数量的方法
void updateQuantityById(OmsCart omsCart);
}
对应的Mapper.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.tedu.mall.order.mapper.OmsCartMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="cn.tedu.mall.pojo.order.model.OmsCart">
<id column="id" property="id" />
<result column="user_id" property="userId" />
<result column="sku_id" property="skuId" />
<result column="title" property="title" />
<result column="main_picture" property="mainPicture" />
<result column="price" property="price" />
<result column="quantity" property="quantity" />
<result column="gmt_create" property="gmtCreate" />
<result column="gmt_modified" property="gmtModified" />
<result column="bar_code" property="barCode"/>
<result column="data" property="data"/>
</resultMap>
<!-- 声明一个全字符sql片段 -->
<sql id="SimpleQueryFields">
<if test="true">
id,
user_id,
sku_id,
title,
main_picture,
price,
quantity,
gmt_create,
gmt_modified
</if>
</sql>
<!-- 判断当前用户的购物车列表中是否包含指定sku商品的方法 -->
<select id="selectExistsCart" resultType="cn.tedu.mall.pojo.order.model.OmsCart">
select
<include refid="SimpleQueryFields" />
from
oms_cart
where
user_id=#{userId}
and
sku_id=#{skuId}
</select>
<!-- 新增购物车信息 -->
<insert id="saveCart" useGeneratedKeys="true" keyProperty="id">
insert into oms_cart(
user_id,
sku_id,
title,
main_picture,
price,
quantity
) values(
#{userId},
#{skuId},
#{title},
#{mainPicture},
#{price},
#{quantity}
)
</insert>
<!-- 根据购物车id修改数量 -->
<update id="updateQuantityById" >
update
oms_cart
set
quantity=#{quantity}
where
id=#{id}
</update>
</mapper>
创建OmsCartServiceImpl类实现IOmsCartService接口
实现其中方法,先实现新增购物车的方法即可
需要注意,我们在业务逻辑层中需要使用用户的信息
要单独编写一个方法获取用户信息,
@Service
public class OmsCartServiceImpl implements IOmsCartService {
@Autowired
private OmsCartMapper omsCartMapper;
@Override
public void addCart(CartAddDTO cartDTO) {
// 获取当前登录用户的userId
Long userId=getUserId();
// 查询这个userId的用户是否已经将指定的sku添加到购物车
OmsCart omsCart=omsCartMapper.selectExistsCart(userId,cartDTO.getSkuId());
// 判断查询结果是否为null
if(omsCart!=null){
// 不等于null,表示当前用户这个sku已经添加在购物车列表中
// 我们需要做的就是修改它的数量,根据cartDTO对象的quantity属性值添加
omsCart.setQuantity(omsCart.getQuantity()+cartDTO.getQuantity());
// 调用持久层方法修改数量
omsCartMapper.updateQuantityById(omsCart);
}else{
// 如果omsCart是null 会运行else代码块
// 去完成购物车对象的新增,先实例化OmsCart对象
OmsCart newOmsCart=new OmsCart();
// 将参数cartDTO的同名属性赋值给newOmsCart
BeanUtils.copyProperties(cartDTO,newOmsCart);
// cartDTO对象中没有userId属性,需要单独赋
newOmsCart.setUserId(userId);
// 执行新增
omsCartMapper.saveCart(newOmsCart);
}
}
@Override
public JsonPage<CartStandardVO> listCarts(Integer page, Integer pageSize) {
return null;
}
@Override
public void removeCart(Long[] ids) {
}
@Override
public void removeAllCarts() {
}
@Override
public void removeUserCarts(OmsCart omsCart) {
}
@Override
public void updateQuantity(CartUpdateDTO cartUpdateDTO) {
}
// 业务逻辑层获得用户信息的方法,因为多个方法需要获得用户信息,所以单独编写一个方法
// 这个方法的实现是SpringSecurity提供的登录用户的容器
// 方法的目标是获得SpringSecurity用户容器,从容器中获得用户信息
public CsmallAuthenticationInfo getUserInfo(){
// 获得SpringSecurity容器对象
UsernamePasswordAuthenticationToken authenticationToken=(UsernamePasswordAuthenticationToken)SecurityContextHolder.
getContext().getAuthentication();
// 判断获取的容器信息是否为空
if(authenticationToken!=null){
// 如果容器中有内容,证明当前容器中有登录用户信息
// 我们获取这个用户信息并返回
CsmallAuthenticationInfo csmallAuthenticationInfo=(CsmallAuthenticationInfo)authenticationToken.getCredentials();
return csmallAuthenticationInfo;
}
throw new CoolSharkServiceException(ResponseCode.UNAUTHORIZED,"没有登录信息");
}
// 业务逻辑层中大多数方法都是获得用户id,所以编写一个返回用户id的方法
public Long getUserId(){
return getUserInfo().getId();
}
}
创建OmsCartController
@RestController
@RequestMapping("/oms/cart")
@Api(tags="购物车管理模块")
public class OmsCartController {
@Autowired
private IOmsCartService omsCartService;
// 新增购物车信息的控制层方法
@PostMapping("/add")
@ApiOperation("新增购物车信息")
// 判断当前用户是否具有普通用户权限ROLE_user
// sso模块登录时,会在用户的权限列表中添加ROLE_user权限
@PreAuthorize("hasRole('ROLE_user')")
// cartAddDTO参数是需要经过SpringValidation框架验证的
// @Validated就是激活框架验证功能,如果cartAddDTO不满足验证要求,会自动运行
// 统一由异常处理类中的BingingException异常处理
public JsonResult addCart(@Validated CartAddDTO cartAddDTO){
omsCartService.addCart(cartAddDTO);
return JsonResult.ok("成功添加到购物车");
}
}
先注意sso模块application-test.yml的地址和端口号(密码有两个)
也要注意order模块application-test.yml的地址和端口号
都保证正确的前提下
启动 leaf passport order
sso:10002
order:10005
先访问10002登录获得JWT 用户名jackson密码123456
先登录看到JWT 然后复制JWT
转到10005 order模块 文档管理->全局参数设置->添加参数
参数名:Authorization
参数值:Bearer [粘贴JWT]
然后刷新当前10005的界面
然后进行发送请求即可成功!
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
SpringSecurity框架登录后,一定会有一个权限列表
在userDetails对象中
我们登录用户的这个对象的值可能是
{"authorities":["ROLE_user"],"id":1,"userType":"USER","username":"jackson"}
sso模块前台用户登录时,会authorities属性中添加ROLE_user权限
而后台管理用户登录时会向authorities属性中添加下面属性
["/pms/product/read","/pms/product/update","/pms/product/delete"]
所以想要在控制器运行前判断权限时就可以使用下面的写法
@PreAuthorize("hasAuthority('ROLE_user')")
hasRole判断是专用于判断当前用户角色的指令
hasRole会自动在我们判断的内容前添加ROLE_
@PreAuthorize("hasRole('ROLE_user')")
开发持久层
OmsCartMapper添加方法如下
// 根据当前用户id查询购物车列表
List<CartStandardVO> selectCartsByUserId(Long userId);
OmsCartMapper.xml添加对应内容
<!-- 根据用户id查询购物车信息 -->
<select id="selectCartsByUserId"
resultType="cn.tedu.mall.pojo.order.vo.CartStandardVO">
select
<include refid="SimpleQueryFields" />
from
oms_cart
where
user_id=#{id}
</select>
开发业务逻辑层
OmsCartServiceImpl业务实现
返回值支持分页结果,按分页条件查询
// 根据用户id分页查询当前用户的购物车列表
@Override
public JsonPage<CartStandardVO> listCarts(Integer page, Integer pageSize) {
// 获得用户id
Long userId=getUserId();
// 执行查询前设置分页条件
PageHelper.startPage(page,pageSize);
// 执行分页查询
List<CartStandardVO> list=omsCartMapper.selectCartsByUserId(userId);
// 实例化PageInfo对象获得分页信息后将它转换为JsonPage返回
return JsonPage.restPage(new PageInfo<>(list));
}
下面开发控制层,调用方法进行测试
OmsCartController添加方法如下
// 分页查询当前用户购物车中的信息
@GetMapping("/list")
@ApiOperation("分页查询当前用户购物车中的信息")
@ApiImplicitParams({
@ApiImplicitParam(value="页码",name="page",dataType="int",example="1"),
@ApiImplicitParam(value="每页条数",name="pageSize",
dataType="int",example="5")
})
@PreAuthorize("hasRole('ROLE_user')")
public JsonResult<JsonPage<CartStandardVO>> listCartByPage(
// 当控制器参数可能为空,当空时,我们要给它赋默认值时,可以用下面的格式
@RequestParam(required=false,defaultValue=WebConsts.DEFAULT_PAGE)
Integer page,
@RequestParam(required=false,defaultValue=WebConsts.DEFAULT_PAGE_SIZE)
Integer pageSize
){
// 控制层调用业务逻辑层代码
JsonPage<CartStandardVO> jsonPage=omsCartService.listCarts(page,pageSize);
return JsonResult.ok(jsonPage);
}
启动nacos\seata
启动leaf\sso\order模块
测试http://localhost:10005/doc.html
删除购物车的持久层
我们删除购物车的功能支持同时删除一个或多个购物车中的商品
基本思路就是将一个要删除的购物车商品的id数组传入到Mapper中进行删除
在OmsCartMapper接口中添加放方法
// 根据购物车的id删除商品(支持删除多个商品)
int deleteCartsByIds(Long[] ids);
对应的mapper.xml
<!-- 根据id删除购物车信息 -->
<delete id="deleteCartsByIds">
delete from
oms_cart
where
id in
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>
删除购物车的业务逻辑层
OmsCartServiceImpl添加方法
// 按ids数组中的id值删除cart表中信息
@Override
public void removeCart(Long[] ids) {
// 删除是包含返回值的
int rows=omsCartMapper.deleteCartsByIds(ids);
if(rows==0){
throw new CoolSharkServiceException(ResponseCode.NOT_FOUND,
"购物车中没有您要删除的商品");
}
}
开发控制层代码
OmsCartController
@PostMapping("/delete")
@ApiOperation("根据用户选择的购物车商品删除(支持批量)")
@ApiImplicitParam(value="删除购物车的id",name="ids",required=true,
dataType="array")
@PreAuthorize("hasRole('ROLE_user')")
public JsonResult removeCartsByIds(Long[] ids){
omsCartService.removeCart(ids);
return JsonResult.ok();
}
开发清空当前登录用户购物车的功能
<delete id="deleteCartsByUserId">
delete from
oms_cart
where
user_id=#{userId}
</delete>
@Override
public void removeAllCarts() {
}
清空购物车功能
Mapper接口
// 删除当前用户购物车中所有内容
int deleteCartsByUserId(Long userId);
mapper.xml
<!-- 删除当前用户购物车中所有内容 -->
<delete id="deleteCartsByUserId">
delete from
oms_cart
where
user_id=#{userId}
</delete>
OmsCartServiceImpl
// 清空当前登录用户购物车
@Override
public void removeAllCarts() {
Long userId=getUserId();
int rows=omsCartMapper.deleteCartsByUserId(userId);
if(rows==0){
throw new CoolSharkServiceException(ResponseCode.NOT_FOUND,"您的购物车中没有商品");
}
}
OmsCartController
// 根据用户id清空购物车
@PostMapping("/delete/all")
@ApiOperation("根据用户id清空购物车")
@PreAuthorize("hasRole('ROLE_user')")
public JsonResult removeCartsByUserId(){
omsCartService.removeAllCarts();;
return JsonResult.ok("购物车已清空");
}
修改购物车商品数量
开发业务逻辑层
因为前面我们已经完成了修改购物车数量的持久层,所以不需要再编写了,直接从业务层开始
// 修改购物车商品数量的方法
@Override
public void updateQuantity(CartUpdateDTO cartUpdateDTO) {
// 持久层中已经包含了修改数量的方法,但是参数是OmsCart
// 将本方法的cartUpdateDTO参数值赋值给OmsCart再调用持久层方法即可
OmsCart omsCart=new OmsCart();
BeanUtils.copyProperties(cartUpdateDTO,omsCart);
// 调用持久层实施修改
omsCartMapper.updateQuantityById(omsCart);
}
控制层OmsCartController
// 修改购物车数量
@PostMapping("/update/quantity")
@ApiOperation("修改购物车数量")
@PreAuthorize("hasRole('ROLE_user')")
public JsonResult updateQuantity(@Validated CartUpdateDTO cartUpdateDTO){
omsCartService.updateQuantity(cartUpdateDTO);
return JsonResult.ok("修改完成");
}
重启order测试清空和修改购物车数量的功能
学习记录,如有侵权请联系删除
*请认真填写需求信息,我们会在24小时内与您取得联系。