PbIdea功能库用于新医保项目快速入门

PbIdea功能库用于新医保项目快速入门

  • 什么群体适合使用PbIdea?

需要强大的功能库可以便捷、高效完成开发任务,并且没有追求“pb源码”和“pb原生功能实现”这些“洁癖”的pb程序员。否则,现在就可以return。

二、什么是新医保项目?

国家医保局制订《 医疗保障信息平台定点医药机构接口规范》,统一医保标准。各省在此基础建设医保平台,所有医保定点机构开发系统对接此接口。

三、pb用于新医保项目开发有哪些痛点?

Pb主要用于传统基于数据库的CS开发,由于其架构出现比较早,它的基础功能着重于数据库方面,在网络、系统、基础功能等方面几乎没什么功能。具体到新医保方面来说它缺乏的功能有:

  1. 访问webapi必要的httpclient功能,虽然可以使用基于com接口的xmlhttp访问http,但该接口单一,与其他功能配套使用时非常不方便。
  2. Json,强大方便的数据交换格式。
  3. Openssl库功能,用于各种加密、解密、散列算法、base64、HEX转换等各种数据签名及加密解密功能。
  4. 文件传输的zip加解压
  5. 个别省份特殊的加密解密或签名算法,例如甘肃的华为算法。
  6. utf8、utf16、ansi字符集编码转换。
  7. 大文件处理(几百M的txt文件导入)。
  8. 基于国密的算法sm2 sm3 sm4功能。

四、PbIdea可以解决以上痛点吗?

是的,以上前点PbIdea可以完全解决,而且方便、高效。

目前PbIdea已经广泛应用于pb开发各个领域的应用系统。不仅仅是新医保,各种webapi相关的现代应用,不管是客户端还是服务端,均可以使用pbidea实现。

五、所需要的基础知识储备

不要说你的项目进度有多紧张,你的时间有多宝贵。如果你连一些基础知识都没有,而且以各种理由拒绝学习,只想做个“伸手党”,那么到这里你可以return了。

1、HTTP协议。菜鸟教程等着你:HTTP 教程 | 菜鸟教程

2、json。菜鸟教程等着你:JSON 教程 | 菜鸟教程,至少要弄清楚什么是对象,什么是数组,什么是字符串。如果你弄不清楚这些,那就继续看菜鸟教程,直到看明白为止。

3、一些常见名词术语:SM3、sha/MD5是取散列值,base64是编码与解码,SM2、rsa是非对称加密解密和签名,SM4、des/aes是对称加密解密。不要把这些统统都叫做“加密”。正确表述,显得有知识有文化有技术有力量。

六、走近/进PbIdea

首先假设你已经有了五中的基础知识储备,如果没有,那么请return到五,完成你的知识储备。

接下来,到群(群号:624409252)共享“大自在”目录里下载pbidea最新版本。解压到任意目录,子目录9指这里面的项目是PB9的DEMO,子目录100是指这里面是pb10-pb2021的DEMO。Pb8请到群里下载专门的pb8的DEMO。更早的版本不确定能支持,自己试吧。

(一)uo_httpclient/uo_curl

这两个对象都用于访问http/https接口。首先打开这个对象研究一下那些函数,以及函数的调用参数,也许你需要的某个功能,就在某个参数里面。

Uo_httpclient hc

Hc = create uo_httpclient

………初始化

Hc.request(……)

然后判断 hc.response.httpcode = 200是成功的,否则自己百度对照相应代码意义。如果为0,说明访问根本就没发起,本机上就失败了。

代码为200说明成功,此时请示数据在hc.response.data里面,blob类型。从接口取来的任何内容都在hc.response.data里面。

注意:你的世界不是只有字符串,这里面全是二进制数据,当然可以是字符串,也可以不是字符串。如果获取的是zip文件,直接把hc.response.data写入为文件就行:

Uo_file file

File = create uo_file

File.blobtofile(hc.response.data,”my.zip”)

Destroy file

如果接口回传给你的是JSON,直接使用hc.response.json对象即可。

如果接口回传给你的是xml,直接使用hc.response.xml对象即可。

Pbidea已经为你自动处理好这些数据。尤其是不必要去徒劳地搞什么UTF8编码转换,你只要记得:Pbidea已经为你自动处理好这些数据,包括编码转换

(二)uo_json

目前为止史上功能最强大、使用最便捷、效率最高的json对象,没有之一。

1、什么是对象?

{“a”:”this is a“},特点是大括号括起来。

2、什么是数组?

[1,2,3,4] [“aa”,”bb”,”cc”] [{“a”:”aa”},{“b”:”bb”}] 特点是中括号括起来

如果你把JSON数组,理解为uo_json json[]这样的pb对象数组,就请自己面壁去吧。

3、什么是字符串?

{“a”:”{\“hello\“:\”baby\“}“} 键 a下面的值,由\进行转义的那个部分的值”{\“hello\“:\”baby\“}“,它是一个字符串,它的处理需要把这个字符串取到字符串变量里,再进行parse解析成JSON对象 。

4、{ } , [ ],这样一对空的是什么?

即使是空的,它也是JSON对象和JSON数组。希望不要再说“如何添加或脱中外面那对中括号“这样的笑话。不要看它空着就看不起它,它辈份高。Json.SetObject() 、json.SetArray()都可以生成空的对象或者空的数组。

5、强大的set/get函数

往json里添加数据,使用set,从json里取数据,使用get。不管JSON是多少层,是对象还是数组,都可以使用set/get完成你所需要的功能。

举例一:

json.set("name","机构名称")

json.set("addr","机构地址")

{

      "name": "机构名称",

      "addr": "机构地址"

}

举例二:

json.set("/input/data/name","机构名称")

json.set("/input/data/addr","机构地址")

结果

{

    "input": {

        "data": {

            "name": "机构名称",

            "addr": "机构地址"

        }

    }

}

String ls_name

json.get("/input/data/name",ref name)

即可取得name值

举例三:

int i

for i = 1 to 10

  json.set("/input/data/" + string(i - 1) + "/name","机构名称" + string(i))

  json.set("/input/data/" + string(i - 1) + "/addr","机构地址" + string(i))

next

结果

{

    "input": {

        "data": [

            {

                "name": "机构名称1",

                "addr": "机构地址1"

            },

            {

                "name": "机构名称2",

                "addr": "机构地址2"

            },

            {

                "name": "机构名称3",

                "addr": "机构地址3"

            },

            {

                "name": "机构名称4",

                "addr": "机构地址4"

            },

            {

                "name": "机构名称5",

                "addr": "机构地址5"

            }

        ]

    }

}

String ls_name

json.get("/input/data/0/name",ref ls_name) 可取得第一项的“机构名称1“

json.get("/input/data/2/name",ref ls_name) 可取得第三项的“机构名称3“

从数组里取数据,索引号是从0开始,0代表第一项,1代表第二项……

所有按路径取值,必须以“/“开始!!!

6、百问不厌的一个问题:上传字节数组

这里做终极回答,以后不再回答这个问题:

json.set("/input/fsUploadIn/in","mydata.zip",json.SetBytes)

json.set("/input/fsUploadIn/filename","mydata.zip")

即可生成医保要求的[10,20,-159,42,-10,.....]这样的数据。

(三)下载医保数据

接口下载zip文件数据,而且文件还那么大,几百M,utf8编码,pb根本无法处理,怎么办?

1、下载不是问题,咱有 uo_httpclient/uo_curl,request后数据在uo_httpclient.response.data里面。不要管文档上写的那些“流“啊什么的,那都是JAVA流X写的,你就当它是传过来的一坨数据就行了,就象那一坨什么似的就行了

2、zip不是问题,咱有 uo_zip。Uo_zip.open(uo_httpclient.response.data);uo_zip. Extract(“我的目录”)。加载数据,解压就完事。

3、几百M的utf8编码的txt文件,咋办?小case!!!

Uo_datawindowex.dwImportFile(dw_1,1,100,1,“文件名”,true,true)

轻松就搞进datawindow。

什么,从头开尾你说我没进行过utf8转码?你想多了吧,什么都要我来utf8转码,那还叫什么高效、便捷?

最后,从知乎抄来一小段文字,供参考:

提问问题,你是有求于人的那一方,定然要有一定的态度我这里遇到了一个问题,【问题描述】,我曾经试着:【思路细节】,但是不能得到解决,报错如下:【错误截图】,请问该怎么解决?一定的文字叙述加上出错截图,这是必要的,当然,不要废话连篇,内容要尽量精简而且非常重要的一点,不要一有问题就去问,要先自己去思考解决,baidu也挺万能的,实在自己解决不了的时候,再去进行求助不过在QQ群问问题有一个大问题,有些只知一二的萌新也会出来bb赖赖(并不是贬低他们),只是这个时候要合理听取建议,三人行必有我师,不过也会有真正的大佬会帮忙的。

                                                               大自在 QQ群:624409252

                                                                        2021年12月12日

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值