因为我很在意保护患者的隐私,而且我对避免患者信息数据意外泄露非常偏执,所以我决定不展示 The Viewer 的软件截图了。
打开 The Viewer 软件,首先是一个空白网页,接下来浏览器会向数据仓库发送请求以获取病人的数据——最近的验血情况、最近的扫描结果、最近的门诊预约情况等等。数据仓库返回数据之后,软件将会把数据展示到到这个空白网页里面去。
用任意的浏览器打开任意一个网页,在页面任意位置点击右键打开上下文菜单,点击 检查(Inspect) 打开一个特殊的菜单,在这个菜单中选中 网络(Network) 选项卡脚本代码大全,在这个页面里你可以查看当前打开网页的所有网络流量。
例如在网络选项卡中查看 joshcase.dev :
Network Tab
对于普通人来说,这个图真的是眼花缭乱。不过还是可以看出一些特征:图片的加载请求如 josh-case.png (放置在网页页脚上的素材)、样式表的加载请求如 main.css (存放网页结构/样式信息的文件)和正文配图 list.png 的文件加载请求。
通过多次刷新页面和探索,我终于发现 The Viewer 软件是通过一个叫 GetCompletedContent 的脚本,从所有信息仓库中获取数据。
更重要的是,当你从网络选项卡中点击特定的网络请求时,你可以查看这个请求发送了那些参数脚本代码大全,也就是说,你可以弄清楚服务器需要什么样的数据结构:
network parameters
再一次说明,这个图片不是 The Viewer 的截图,这是MailChimp网站的 joshcase.dev 请求,但你依旧可以看出来服务器期望什么样的查询字符串参数数据结构。
搞清楚这些之后,我就可以开始对 The Viewer 病理API进行逆向工程了,使用JavaScript对服务器进行轮询,查找指定病人的信息。通过研究 GetCompletedContent 我搞清楚了请求的接口和请求参数的数据结构,就可以自动将指定病人的信息拉取回来。
现在我要做的就是,像 GetCompletedContent 那样,向 The Viewer 服务器发送相似的请求:
request
使用JavaScript处理这个问题的精妙之处就在于,它在可以在医院的任何时间任何机器上执行——所有现代浏览器都可以解释并运行JavaScript。
如果你是个新手不相信我说的话,你可以试着在这个页面上的任意一个地方右键并点击 检查(Inspect) ,在弹出的菜单里找到 控制台(Console) 选项卡,拷贝下面一段代码,粘贴到控制台的输入栏里面:
alert("JavaScript will run anywhere.");
接着按下回车键。很厉害对吧?!
在我写完模拟 GetCompletedContent 请求验血结果数据仓库的脚本之后,还有一些实施的细节需要解决(比如解析返回数据并把数据格式化成漂亮可供阅读的表格这些细节)。不过绝大部分数据探测的工作就已经完成了。
这项原本需要 5 个人花费 45 分钟才能完成的工作,现在只需要 1 个人花 10 分钟就搞定了。
在未来 10 年,可能可以帮医院省下400,000澳元!
有没有觉得技术特别了不起呢?
脚本源码:
github.com/joshcase/pathology.js/blob/master/pathology.js
来源:【九爱网址导航www.fuzhukm.com】 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!