療信息化建設是關乎民生的重要舉措,也是推進“健康中國”建設的必要環節。新致新源團隊整理了近期關于醫療信息化行業的重要資訊,供讀者參考。
一、“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小時內與您取得聯系。