健康码项目笔记, python之flask框架内新增搭建api(一)

创作不易 只因热爱!!
**

热衷分享,一起成长!


这两三天我在默默付出, 朋友,请为我点个赞! 谢谢!
“你的鼓励就是我努力付出的动力”!!

缘由:

  1. 最近各处都是百年难得一遇的无情洪水灾害,相信大家都清楚, 因此,一些网络中断,导致资源无法访问. 从医疗上的电子健康码说起, 各地早就实行一码就医的方便. 可是呢,医疗系统HIS体制里有一些开发的健康码流程是:从前置机发送网络调取资源(健康码的说明也是先check再get调用),当网络中断后,就医非常不便.

  2. 医疗信息系统HIS里很庞大,提需求也经常石沉大海.开发工程回应由于开发团队不同使用的流程不同.
    在这里插入图片描述

思虑:

经过思考,默默努力, 可以仿照前置机电子健康码接口说明书内容,开发一个api,把原系统参数访问地址变更, 指向此api的地址.当远程服务器掉线后取本地资源放在api上返回. 医疗大部分的就诊患者健康码资料已存入本地运行.非常方便有就诊历史的患者.思考后的大致流程如下:

HIS系统访问前置机地址变更
取本地资源按接口内容返回
把请求向前置机发送
刷健康码
开发的api地址
处理请求
按请求调取资源
HIS系统原访问格式接收
前置机api地址
目前网络中断无法返回

执行项目开发

在原有开发的python 之 flask框架api项目基础上增添.

步骤1. 在原来python 之 flask框架的api内容上增加接口
# 原有部分代码 app.py
app = Flask(__name__)
api = Api(app)
api.add_resource(Cats, '/api/login')
# 增加如下接口api, 需按实际调用为准, 如/path/to/file/qrcheck.py并非真实, 如有需要请联系本人
from path.to.file.qrcheck import QrCheck
from path.to.file.qrget import QrGet
from path.to.file.cardget import CardGet
from path.to.file.cardregist import CardRegist
api.add_resource(QrCheck, '/path/to/file/qrcheck')
api.add_resource(QrGet, '/path/to/file/qrget')
api.add_resource(CardGet, '/path/to/file/cardget')
api.add_resource(CardRegist, '/path/to/file/cardregist')
步骤2. python 之 flask框架的route文件的开发.项目使用asyncio,以求并行同时运行. 以 /path/to/file/qrcheck.py 示例代码:
from flask import request
from flask_restful import Resource
from flask import Response
import asyncio
import urllib
try:
    import xml.etree.cElementTree as ET
except ImportError:
    import xml.etree.ElementTree as ET
    
xml_err ="<xml>luckywith4</xml>"
def response_with(xml_content):
    res = Response(response = xml_content, status=200, mimetype="application/xml")
    res.headers["Content-Type"] = "text/xml; charset=utf-8"
    return res

class QrCheck(Resource):
    def post(self, **kwargs):
        async def handle_get_localdata(): 
            # 从本地调取
            pass
        async def handle_post_request(): 
            # 从前置机远程服务调取
            pass
		loop = asyncio.get_event_loop()        
        done, pending = loop.run_until_complete(asyncio.wait(
            [handle_get_localdata(),handle_post_request()],
            return_when=asyncio.FIRST_COMPLETED
        ))
        for future in done:
            result = future.result()
        return response_with(result)
if __name__ == '__main__':
    pass

下期敬请期待
end

^**你好呀,我是一个医信行业工程师,喜欢学习,喜欢搞机,喜欢各种捣,也会持续分享,如果喜欢我,那就关注我吧!**^


往期精彩:
笔记: 迷你主机Linux平台安装, 采集盒COM连接呼吸机 (一)
笔记: 迷你主机Linux平台安装, 采集盒COM连接呼吸机 (二)
笔记: 迷你主机Linux平台安装, 采集盒COM连接呼吸机 (三)
笔记: 迷你主机Linux平台安装, 采集盒COM连接呼吸机 (四)

作者|医信工程师随笔|Carltiger_github

图片|AI|侵删

关注我,我们共同成长

“你的鼓励就是我分享的动力”

  • 27
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值