药品流向数据清洗之医院名称匹配原理

一、前言

不同的商业流向平台导出的药品流向数据格式千差万别,其中医院名称(终端)叫法不统一,使得数据处理起来变得非常麻烦。把千奇百怪的医院名称转换为标准的医疗机构名称,也就是所谓的数据清洗。当然,数据清选还包括产品名称,规格等字段的处理,甚至还包括计量单位转换。如果采用纯人工处理,工作量将会非常巨大。在[琪乐药品流向数据查询管理系统]:https://www.qipanet.com/project/279.html中有提到系统支持数据清洗,那么系统的数据清洗具体是怎么实现的呢?本文将以医院名称为例,做一个简单的处理过程介绍。

image-20231010003038105image-20231010003038105

golang获取最新行政区划(省市区)信息

一、背景

乐琪药品流向数据查询管理系统(三)功能篇中有提到过系统支持自动更新行政区划信息,那怎么将省、市、区县信息按需随便更新呢?当时在网上找了很久,找到了一些公开的资料或者开源的小项目,有的很久没维护,有的是区域信息错漏百出,总之没找到适合我们使用的,靠别人的都不太靠谱。既然找不到,那就自己造个轮子吧!反正自己项目也是需要用到的。

二、原理

在==民政部==官网上(xzqh.mca.gov.cn),可以查询到各省行政区划信息,但是却不提供文件下载,需要一个个手动查询。3202的今天,竟然不给人下载数据,有点理解不了。抽查了几个近年有变更的区域,发现数据还挺准的,毕竟是国家级网站,还是有一定的权威性,比那些阿猫阿狗的付费接口精准多了。

抓包分析了下发现查询接口还是比较简陋的,于是做了个简单的爬虫模块,丢到quartz里做定时任务,就实现了定时更新行政区划信息,整个过程还是比较简单的。

mysql字段值为空时,判断不等于的问题

mySql中,要查询某字段值a不等于xx的记录,正常情况下用a<>'xx'来判断。
==但是,当字段a中存在null的记录时,查询结果将会有问题!==
因为mysql中,不等于是不包含字段值为null的记录,需要再加上 a is null。

比如:

select * from tb where a<>'xx' or a is null;

gva提示权限不足的解决办法

gva(gin-vue-admin)使用的是casbin来做权限控制,对于手工新增的api,非常容易出现权限不足的情况。解决的方法:

  1. 要检查api管理有没对应的api,url及相关请求参数是否有问题。
  2. 要在角色管理中相应的角色---api勾选对应的接口
  3. 实在不行再检查数据库中casbin_rule表是否对应的规则

这里再给个手工创建api的步骤:

  1. 在api包里对应的服务模块写好接口实现,比如:

这才是真正的js获取任意两个日期间的所有月份

这才是真正的js获取任意两个日期间的所有月份

js setFullYear与setMonth的坑

系统上线后,突然收到妹子的反馈,销售汇总查询报表页面显示的月份与实际销售月份不一致!我随即登上系统,按妹子的查询条件,查询数据,然后再查询实际销售数据,果然如妹子所说的,数据有问题,难道逻辑出错?然后我再导出报表对比,数据没问题,那好办,应该是前端展示错了。

为了再印证一下判断,浏览器F12开发者模式,抓了一下包,返回的数据正常,那么这回肯定是前端的锅了。话说前端也是我写的 :laughing:。很快定位到getMonthBetween,之前偷懒使用CV大法从网上抄来简单改改就用了,还好没变成自主创新