前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计适用于低资源环境的医疗IT系统 | TW洞见

设计适用于低资源环境的医疗IT系统 | TW洞见

作者头像
ThoughtWorks
发布2018-04-20 11:57:02
7580
发布2018-04-20 11:57:02
举报
文章被收录于专栏:ThoughtWorks

今日洞见

文章作者/配图来自ThoughtWorks:熊节。

本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。已经本网协议授权的媒体、网站,在使用时必须注明"内容来源:ThoughtWorks洞见",并指定原文链接,违者本网将依法追究责任。

背景

ThoughtWorks(思特沃克)是一家全球知名的IT专业服务公司。创立于1993年,如今ThoughtWorks已经在全球12个国家开设了34间办公室,拥有超过3500名员工,是敏捷软件开发思想及多种企业级软件开发技术的领导企业。有三大支柱支撑着ThoughtWorks:经营可持续的业务;推动IT变革,追求软件卓越;积极提倡社会和经济公正。ThoughtWorks的使命是通过软件创造人类更美好的明天,倡导社会责任感,创造公平公正的经济环境[1]。

全球医疗业务是ThoughtWorks提倡社会和经济公正的重要体现。“全球医疗”是指在全球范围内改善医疗水平、促进医疗平等的研究及实践[2]。我们相信,医疗是每个人都有权获得的基本人权。在这个理念支撑下,ThoughtWorks全球医疗团队与政府、高校、社会组织、国际发展组织等各类机构合作,投身于改善低资源地区的医疗质量和医疗服务覆盖率。在非洲、南亚、拉丁美洲等地区,通过提供技术解决方案、工具、咨询及开源软件的专业知识,ThoughtWorks为一线医疗工作者、医疗机构和地区医疗政策管理者提供IT技术和工具支持,使他们为当地群众提供更好的医疗服务[3]。

挑战

在为非洲几个最贫困国家设计公共卫生IT系统的过程中,我们对一线医疗工作现场的情况有了更深入的了解。由于资源的局限,与一般意义上的商业IT项目相比,低资源环境的医疗IT系统建设面临一些特有的挑战。唯有充分理解这些挑战,IT团队才可能开发出适用、有用、好用、可靠且可扩展的公共卫生IT系统。下面我们将具体介绍这些低资源环境特有的挑战。

首当其冲的挑战是电力的缺乏。在我们开展工作的国家,全民电力覆盖率往往不到20%[4],尤其在城市之外的农村地区则更难获得电力。在乌干达、坦桑尼亚等国家的农村地区,整个村庄不通电的情况并不罕见。居住在这些村庄的人为了给手机充电,经常需要步行数小时到通电的村庄。即使在通电的村庄,电力供应不稳定、间歇性停电的情况也频繁发生,在使用太阳能或风能发电的农村地区这个问题更加明显。因此功能简单、待机时间长的特性手机在这些地区深受群众青睐,而在城市和企业IT项目中常用的智能手机、桌面电脑、笔记本电脑等设备则比较难以得到大范围推广。

其次,网络访问也非常受限。在我们开展工作的国家,互联网渗透率同样不到20%,一些国家互联网渗透率甚至在10%以下[5]。在乌干达、赞比亚、坦桑尼亚、肯尼亚等东非国家,由于M-Pesa等基于短信和USSD的支付方式的广泛应用,2G网络的覆盖率达到40%以上[6];而3G网络则只有在城市及近郊地区能可靠访问。尽管这些国家都在加紧进行基础设施建设,但农村地区无法获得可靠的互联网接入仍是常态。在城市和企业IT系统中常见的“随时在线”的应用程序在这些地区完全无法正常使用。

基础设施之外,用户的文化程度、专业技能及IT技能水平也很受限。以坦桑尼亚为例,每10万人中,具备中等水平以上医护技能的医疗工作者仅有36.4人(作为对比,美国的这一数字是1,436人,南非是551人)[7]。众多一线的社区/乡村医疗工作者仅受过相当于小学程度的教育和极为有限的医护技能培训,使用IT工具的经验与技能也极度缺乏。很多对于城市和企业IT系统而言司空见惯的知识及操作,对于这些社区/乡村医疗工作者而言可能成为严重的障碍。

IT项目的实施方式也对IT厂商提出了挑战。由于资金和人力受限,这类低资源环境的医疗IT项目大多从小范围、具体问题开始试点,待效果得到验证之后,再扩展到更多问题领域和更大规模的人群。从国际发展机构(例如联合国、盖茨基金会、克林顿健康倡议等)的角度,全球30多个低收入国家[8]在公共卫生领域领域有很多相通性,例如降低儿童死亡率、改善母婴保健、抗击艾滋病、疟疾和结核病等任务在很多国家是共通的[9]。作为很多项目的投资者,他们希望针对项目需求开发的IT系统不仅解决一时一地的需求,而且能以较低成本复制扩展到其他面临相似问题的若干国家。

解决方案

与多个国际发展机构和非洲国家政府所托,ThoughtWorks在过去两年中参与到数个国家公共卫生信息化战略的制订与实施中,设计和开发了多个针对社区医疗工作者的移动工作站平台。这类平台基于Android智能手机或平板电脑,为深入乡村一线的社区医疗工作者提供便利的医疗信息化工作站,利于他们更有效地提供医疗服务、开展社区卫生普查、管理药品和医疗器材。在设计开发这些系统的过程中,我们亲身体验了前述的各种挑战,并将我们在商业IT领域多年积累的经验应用于低资源环境,总结出了一些在这样的环境下开发适用、有用、好用、可靠且可扩展的IT系统的方法。

精益产品设计

“需求不明确”是IT系统建设中的常见问题,在低资源环境下则更是司空见惯。要为这些几乎从未接触过主流IT工具的用户设计怎样的系统,所有人都没有把握。基于对需求的理解深入程度,我们将一个IT系统设计开发的过程分为三个阶段:模糊期;探索期;验证期。

在东非某国的项目刚开始的阶段,项目各方对“社区医疗移动工作站”究竟应该包含哪些功能、做成什么样子都只有很模糊的想法。通过与卫生部官员的数次会议,我们得到的信息只是:这个系统需要首先覆盖社区卫生普查和孕产保健的功能,需要在离线状态下正常使用,并且要便于社区医疗工作者使用。这是“模糊期”的典型状态。这个阶段的主要任务是研究:IT团队需要通过用户研究来了解社区、社区医疗工作及社区医疗工作者,从而为系统需求分析和设计提供一个坚实的基础。

为了帮助这些文化程度不高的社区医疗工作者讲述出社区的真实情况,我们尽量避免用文字作为主要交流渠道,转而多用“可视化讲故事”(Visual Storytelling)的交流方式,用感性、真实、易于理解的图画来促发IT工作者与社区医疗工作者之间的交流[10]。我们还鼓励社区医疗工作者一起参与到故事的绘制中。在共同作画的过程中,我们看到这些习惯于在权威们面前显得内向和木讷的社区医疗工作者流露出了极大的热情,向我们做了大量详实的情况介绍。

现场访谈是获得大量具体信息必不可少的研究方法。在对一线用户进行访谈时,我们尽量不谈他们对IT系统的想法,而是聚焦于收集现场的真实信息及人们的真实感受。我们将“共情地图”(Empathy Map)打印在白纸上,访谈者依据共情地图来逐一了解受访者看见什么、做什么、如何思考、有何感受[11]。基于这些一手信息,我们再从中分析用户的痛点并设计IT系统,从而避免了过早地对用户施加影响而扭曲访谈得到的信息。

经过实地访谈和调研,IT团队对于现场的情况和挑战有了较为准确的了解,此时软件设计就进入了探索期。在这个阶段,IT团队开始针对用户的痛点设计解决方案。但怎么能及早知道解决方案是否合理、避免在错误的方向上浪费过多精力呢?探索期的关键词“原型”应运而生。

为了快速得到反馈,更为了拉近与用户的距离、培养用户对未来产品的认同感,我们在探索期采用了大量的纸质原型:我们用牛皮纸做成盒子,在上面画上界面元素,用户可以跟随界面元素的引导一步步打开纸盒子,从而完成一个业务流程的操作。相比于用计算机展现的高保真原型,纸质原型更适宜于表现产品概念、导航流程、内容、布局和功能[12]。尤其对于这些IT技能水平不高的用户,在设计早期向他们呈现纸质原型有助于他们聚焦在功能设计而不被陌生的技术分心。

经过几轮快速的原型验证,软件功能已经大体设计成型,此时IT团队就开始迭代开发,软件的设计则进入了测试阶段。同样为了快速得到反馈、避免浪费,我们不是把测试验证的工作集中在项目晚期,而是在每个为期两周的迭代结束后立即让用户试用最新的功能。为了保证试用过程高效聚焦,我们在每次试用时都会给用户设定明确的目标和指令。例如某次试用的指令可能是:

目标:登记一名孕妇 步骤:

  1. 登入移动工作站;
  2. 找到当前走访的家庭;
  3. 找到怀孕妇女的姓名;
  4. 将该妇女标记为“正在怀孕”,并记录估计的受孕时间。

通过观察用户实际操作软件,我们能更加直观地发现软件设计中存在的问题,尤其是对社区医疗工作者而言不友好的用户体验。在一次现场测试中,我们发现Android系统原生的日期控件在同一个界面上呈现了太多可以操作的元素,会让这些缺乏IT经验的社区医疗工作者感到困惑而不敢操作。于是我们将系统中所有需要输入日期的地方都改为使用自定义的、年月日分别输入的控件,用户在输入时只需要使用Android的数字键盘,操作变得流畅了很多。

试用软件之后,我们会对用户做满意度调查。我们绘制了一个“满意度雷达”,其中的维度是诸如“在手机上输入文字”、“阅读手机上的信息”、“手机给你日常工作提供的帮助”等相当具体的主题,用户按照其满意程度分别打分。经过多次试用,我们就能看到满意度提升的趋势,从而真正做到根据用户的反馈来指导软件设计和开发。

为了应对变化日益剧烈的商业环境,精益创业等方法论都强调“构建-度量-学习”的快速反馈循环[13]。在设计开发低资源环境的医疗IT系统时,我们发现精益创业的理念同样适用。通过因地制宜地选择和创造工具,ThoughtWorks全球医疗团队得以掌握现场的真实情况,并能快速而频繁地验证软件设计是否合理,从而开发出真正适用于低资源环境与人群的IT系统。

敏捷软件开发

精益的产品设计理念实施起来离不开技术的支持。至少,每个迭代都构建出包含最新功能的软件给用户试用并反馈,这个实践就对软件交付团队提出了很高的要求。交付团队不能沿用传统的瀑布式交付方法,而必须采用迭代式的交付方法,每个迭代都交付出可工作的软件,围绕着可工作的软件而非文档来开展测试和讨论[14]。为此,需求分析、项目管理的实践都需要以迭代交付为核心来组织。在ThoughtWorks的项目中,需求被分解为独立有价值的“用户故事”,相关的故事又被按照优先级组织到迭代计划中,从而保证每个迭代交付出的是最重要、最具价值的功能集合[15]。

为了支持频繁的反馈和调整,质量需要被内建到软件交付的整个流程中,这样才能保证随时都能获得可用的软件。测试驱动开发是一个来自于极限编程(XP)的实践,软件开发者首先根据需求编写测试用例,然后再编写产品代码使测试用例通过[16]。以这样的方式开发出来的软件,每个功能都有详尽的测试用例覆盖,质量更有保障;同时测试用例又能发挥“活文档”的功能,使得对功能做调整时有迹可循。积累起来的测试用例会被纳入持续集成环境,每当有新的修改被提交到代码仓库,持续集成服务器就会自动执行所有测试用例,以确保没有任何现有功能被破坏[17]。经过持续集成流程产出的软件已经有充分的质量保障,只需经过简单的人工检查即可放心交给用户试用。

一种怀疑的观点认为,测试驱动开发和持续集成等来自极限编程的技术实践仅适用于资源较为充裕、团队较为成熟的大型企业IT环境,在社会创新等资源局限性大的环境下则不适用。经过在非洲多个国家开发公共卫生IT系统的经历,我们发现这些关注质量内建的软件开发实践在低资源环境下更显价值。在ThoughtWorks全球医疗团队于非洲、南亚、拉丁美洲实施的多个项目中,测试驱动开发与持续集成被证明有效地降低了软件质量、可修改性、可维护性等方面的相关成本。正如制造业早已证明过的,在生产过程中内建质量、始终生产出高质量的产品,反而是最经济的做法[18]。

整个系统的设计开发过程涉及到多套彼此隔离又非常类似的运行环境:开发团队内部用的测试环境;给用户试用的环境;验收测试环境;培训环境;生产环境等。我们采用“基础设施即代码”(Infrastructure as Code)的实践,将环境的开通、配置和管理工作全部以脚本代码的形式自动化,并对基础设施代码进行配置管理和持续集成,从而将环境管理的成本降至最低[19]。在大多数情况下,只需要一条命令,就可以在亚马逊的云计算平台上搭建起整套系统的运行环境。

对于政府、国际发展机构等服务于大量人口的组织来说,IT解决方案不能只局限于一时一地的问题,必须具有可扩展性。每个项目设计开发出的IT系统,既要能向上扩展以更深入地解决问题,又要能向外扩展以复制到更大的人群[20]。在设计开发这些系统的过程中,ThoughtWorks全球医疗团队与自由开源软件(FOSS)社区紧密合作,不仅采用成熟的开源软件解决方案,而且在征得合作各方同意的前提下将新开发的软件也贡献给开源社区,从而使软件更有可能向上和向外扩展。我们参与开发的OpenMRS已经在十余个国家为低资源地区的医院提供电子病历乃至全面的医疗信息化服务[21],OpenLMIS在莫桑比克、坦桑尼亚、赞比亚、贝宁等非洲国家被用于管理医药物流和基层乡村医疗点的库存[22],这都是借力和参与开源社区带来可扩展解决方案的好例子。

小结

为了在低资源地区有效实施公共卫生IT系统,需要借用商业IT领域成熟的实践经验,并根据当地情况加以调整。ThoughtWorks全球医疗团队采用精益产品设计方法,将产品设计分为模糊期、探索期、验证期三个主要阶段,在各个阶段将重心分别放在研究、原型和测试,并借助敏捷软件开发的实践来保障质量、持续交付,使IT系统能在快速迭代的节奏中不断演化生长,同时又与开源软件社区紧密合作,从而得到既适用于当地环境、又具备可扩展性的医疗IT解决方案。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 思特沃克 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 挑战
  • 解决方案
    • 精益产品设计
      • 敏捷软件开发
      • 小结
      相关产品与服务
      持续集成
      CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档