来源:HIT专家网 作者:解放军总医院信息科 郭旭
近年来,“低代码”一词在医疗信息化行业频频现身。究竟什么是低代码,它的出现背景是什么?在医院信息系统建设运维中适合开展哪些应用?对用户而言,低代码技术还存在哪些不足?
1.什么是低代码开发技术
在传统的应用开发过程中,程序员的主要任务是编写软件代码以实现业务需求。如果有一项技术能够在保证业务需求完成度不变的情况下,减少软件开发人员的工作量,甚至将这一工作从开发人员部分转移到用户身上,无疑将会大受欢迎。这正是低代码开发技术产生的初衷。
1.1.定义
低代码(Low-Code),顾名思义,就是不用写代码或用很少量代码达到大量代码的功能。2014年,著名研究机构Forrester为解决软件开发过程中存在大量重复性工作的问题,提出了低代码的概念——利用很少或几乎不需要写代码就可以快速开发应用,并可以快速配置和部署的一种技术和工具。
在客观世界中,代表系统复杂性的熵不会凭空消失,所以为实现代码量“少即是多”的美好愿望,基于低代码技术的各类开发工具应运而生,目的是将复杂性转移到工具内部,向开发者提供更简单的开发环境。
低代码开发平台(Low-Code Development Platform,LCDP)就是这样一组基于可视化图形界面与参数化配置方式进行应用开发的工具,相比于传统的集成开发环境(Integrated Development Environment,IDE),具备人工编码量更少、专业性更低、学习曲线更平滑、开发效率更高等优点。
从2015年起,微软、谷歌、亚马逊等国外巨头企业纷纷入局低代码开发;2018年,国内的腾讯、百度、阿里巴巴等互联网企业也先后推出了各自的低代码平台;2020年后,更多向大型企业提供信息化服务的软件开发商开始尝试采用低代码开发平台打造技术门槛更低、开发效率更高的新模式。目前,已有的低代码技术应用案例涵盖了通信、金融、制造、政务、能源、交通等行业。
1.2.核心功能
低代码开发平台的主要作用是降低应用开发的准入门槛,让开发者利用图形化界面,通过拖拉拽操作,以“搭积木”的方式快速开发软件应用,减少重复的基础搭建工作。
低代码开发平台的提供的核心功能包括以下几点:
第一,可视化设计器。通过图形界面进行设计、创建和定制各种应用程序元素的工具,包括表单设计器、工作流程设计器、门户设计器、规则设计器、用户界面设计器和数据可视化设计器等。
第二,核心引擎。这部分是低代码的关键技术,通过对核心引擎复杂性的封装,达到简化开发流程、提升开发效率的目的,主要包括流程引擎、规则引擎和表单引擎等。
第三,快速应用创建。通过一系列开发与运维工具实现更高效率地开发完整应用或增量迭代,提供所有应用在开发运行过程中所需的通用能力,包括业务建模、组件管理、应用管理、用户与权限管理等。
第四,适配微服务与云原生。低代码开发平台通常具备DevOps一体化的能力,包括自动化打包、配置、发布等功能,生成基于微服务架构的可扩展应用,并且能够方便地部署到云原生环境中。
1.3.应用场景
软件工程通常将一个应用软件的生命周期划分为分析、设计、开发、测试、部署、运维等阶段,低代码开发平台在各个阶段也都能发挥作用。
在分析阶段,低代码开发平台可以提供可视化工具帮助系统分析人员定义需求,实现快速原型设计以验证概念,通过可拖拽组件的方式搭建流程图或用户界面草图,来帮助理解与讨论。
在设计阶段,通过可视化的界面进行建模,创建数据模型和领域模型等,准确描述各类模型定义及相互关系;通过内置可拖拽的组件进行前端用户界面设计。
在开发阶段,低代码开发平台具备数据报表能力,支持各类数据报表可视化设计,直接对接底层数据库;具备前端组件库与二次开发能力,使得开发者无需具备丰富的前端知识,也可快速生产业务组件,实现页面模块的拆分、逻辑的复用;它还具备模型驱动和API驱动能力,通过对接底层数据库或前后端API服务接口等,可快速生成数据与业务模型、标准场景页面及对应的服务,提升研发效率。
在测试阶段,通过可视化环境配置管理,低代码开发平台帮助测试人员迅速搭建测试环境;通过自动生成的可视化测试流程与测试脚本,全程追踪测试进度与测试结果。
在部署阶段,低代码开发平台提供一键式部署能力,实现云平台快速部署;提供应用管理能力,实时监控应用运行状态。
在运维阶段,低代码开发平台提供仪表监控面板保证对应用性能和用户活动的可视化管理,各类维护与升级操作可直接在可视化界面上操作,降低用户操作难度。
2.低代码在医院的主要应用场景
2.1.作为成熟的HIS开发工具
当前阶段,在医疗数字化领域,特别是医院信息系统(Hospital Information System,HIS)中,由于其涉及范围广、业务流程复杂、系统间缺少互操作标准,市场上几乎没有低代码开发平台能够支撑广义HIS软件的全生命周期开发。但是我们看到,目前已经有很多低代码开发工具,在部分业务场景“华丽登场”。
2.1.1.办公类应用
医院中有很大一部分管理工作具备相似的需求——填报表单、流转审批和抄送归档,其特点是模型独立、流程明确、规则简单。低代码开发平台搭建这类办公自动化应用可谓如鱼得水。
首先,平台内置大量表单模板,简单的办公类需求只需要对模板进行少量扩展即可;其次,模板即模型,平台可以根据模板生成前台原型页面,相当于先立好了一个靶子,避免开发过程中甲乙双方“空对空”地交流,确保需求沟通质量与准确性;再次,平台可以根据模板生成后台服务和数据库表结构,通过一键部署功能实现整个应用的快速上线;最后,低代码开发平台提供了对本平台”原生“应用的监控和管理,使得运维人员能够无缝对接快速上手。
例如,新冠流行期间的疫情防控填报系统、医院日常公文流转系统和医护人员请销假管理审批系统等,均可通过这种方式搭建实现。
2.1.2.报表类应用
各类报表是医院日常管理运营必不可少的数据支撑,通常每所医院都会根据上级考核标准和自身特色需求进行大量报表定制工作。随着医院对高质量发展的追求,及各类行业监管、纪检审计等工作需要,都对报表的精细化程度与灵活性、实时性提出了更高的要求。
低代码开发平台在面对上述非事务性的数据查询统计需求时,提供了可视化的表格编辑界面,类似于Excel的数据透视表,用户可以自定义复杂的行列表头、字段绑定、显示格式、关联图表,以及数据汇总计算公式等内容,配合数据访问适配层实现对各类数据库的支持,降低了开发门槛,提高了效率,解决了报表生成与打印中的个性化与灵活性问题。
例如,医院的医疗质量监控报表和各类运营日报、周报、月报等均可以通过这种方式搭建。
2.1.3.门户与大屏类应用
医院在不同的场景下,需要应用能够展示出不同的门户与大屏信息,满足不同层级用户对数据的需求。
低代码开发平台提供了组件化可拖拽的大屏设计器,用于构建和管理医院及各类应用的门户与大屏。低代码开发平台预置了模块、卡片、列表、表格、图表等各类组件,允许用户自定义页面的布局、样式和内容,包括添加、移动或删除各种组件,用户可以根据需求配置门户和大屏的外观和功能,使其适应特定的业务流程或需求,最终实现所见即所得。
例如,医院门户网站、各类工作站门户、院长驾驶舱大屏、智慧运营大屏和智慧运维大屏等场景,都可以通过这种方式搭建。
2.1.4.集成平台
集成平台通常为医院信息系统提供开放接入、协议转换和服务编排等功能,而且大多数商业集成平台已经具备可视化的操作界面,具备完备的API接口访问和连接能力。从某种程度上讲,集成平台本身就可以看作是低代码开发平台的一部分。实际上,很多集成类的低代码开发工具就提供了API开发能力,支持从零开始,通过可视化与配置方式定义API输入输出的数据对象,实现基于数据模型或遗留系统的API开发。
2.1.5.二次开发
HIS作为一个巨大复杂的企业应用,很难抽象出一模一样的模式,一般HIS软件供应商在完成核心业务系统开发后,还需要进行客户定制化适配与改造。这个阶段要完成的工作包括医院特色业务流程定制开发、硬件适配、打印与报表格式定制、与三方系统集成、系统参数配置与字典初始化等内容。
传统开发模式下,这个阶段的工作主要由HIS软件供应商的实施团队完成,医院信息科进行指导与辅助。基于低代码开发平台,信息科人员能够充分发挥主观能动性,在技术水平达不到传统编码开发要求的条件下,依然能够深度参与其中,能力强的信息科甚至能主导整个定制化开发过程。
此外,一些边缘业务,特别是对完成时间节点要求高的应用,医院可以借助平台自行开发,不必凡事都要找乙方。可以说,低代码开发平台为医院软件开发和运维工程师提供了实现“自主可控”的巨大空间。
2.2.作为传统HIS开发平台的补充
在HIS核心业务系统开发过程中,由于流程复杂、遗留系统众多、生态环境匮乏,现阶段仍以传统开发方式为主,低代码开发平台还无法完全替代Visual Studio Code、Eclipse、IDEA等传统IDE。
但实际开发中,两者并不是非黑即白、水火不容的关系,很多低代码开发技术能够帮助开发人员大幅提高效率,其输入结果(通常是代码)可以作为传统开发工具的输入。低代码开发平台通过用户友好的图形界面,完成建模、编排等操作,可视化元素背后对应一套领域特定语言(Domain Specific Language,DSL),并且DSL支持到传统IDE及编程语言的单向或双向映射,如下图所示。
在上图中,假设我们采用领域驱动设计的经典模式开发HIS,在设计阶段,通过可视化建模,一方面可以完成限界上下文的划分,领域模型、领域事件、领域服务的建立,由模型生成DSL代码,再由DSL生成Java、C#、C++等编程语言代码,供后续开发阶段直接使用;另一方面可以完成数据模型创建,生成Schema和表等数据库对象的描述,再通过适配器实现各类SQL方言,支持在不同数据库中直接执行。在开发阶段,将领域模型和服务作为标准化组件,通过可视化拖拽等方式,进行应用层的服务业务流程编排,同时完成应用服务层的API管理工作;在前端开发过程中,支持通过可视化的拖拽方式将UI元素和复杂组件进行组合与布局,搭建前端表单和页面界面,甚至可以提供运行时设计(Design at runtime)让用户自行完成操作。无论前端还是后端,用户都可以在设计开发完成后通过一键发布功能,将应用推送到基础设施层中进行持续部署。在整个开发过程中,低代码开发工具依赖标准化“组件”,在组件之上进行开发部署,为软件开发和运维人员提供了极大便利。
3.几点思考
3.1.不足
低代码技术具备两方面作用,一方面为程序员减负,能够降低程序员很多重复性工作,减少人工编写的代码量;另一方面降低开发门槛,将一部分开发工作交由非专业技术人员(通常是系统用户)完成,帮助用户自主完成新需求的开发。
但我们也应该看到,和其他技术一样,软件工程领域没有“银弹”,低代码开发技术也不例外。
第一,面对软件开发过程中业务和技术两个方面,低代码开发平台在一定程度上能够解决技术复杂性的问题,但在业务复杂性上,还有赖用户自身的领域知识与专业素质解决。且大多数低代码平台对于分布式事务的支持有限,同时缺少业务维度的监管工具,对于由多个异步服务组装而成的业务缺少完整流程管理手段。例如,有的低代码开发平台提供了建模工具,并且内置了一部分医疗行业通用的领域模型,但对模型的定制化扩展和对领域服务的流程编排,仍需要具备丰富经验的领域专家介入才能完成。
第二,低代码开发平台依赖的组件化的核心技术,一定程度上能够支撑单表或简单关联关系的多表操作;对于一般的业务需求,可以通过流程引擎、规则引擎完成。但面对非常复杂的业务以及高度定制化的场景时,通过可视化组件进行拖拽反而事倍功半,不如编写额外的代码进行实现更容易。换言之,低代码平台存在片面追求提高应用开发效率,却造成用户使用效率降低的情况。
例如,使用低代码工具拖拽一个工作站的前端登录界面,外观基本符合要求,但对于需要极高操作效率的医护人员而言,低代码搭建出的应用能用但未必好用。诸如按回车键进行登录、如果用户名未填写则输入焦点定位到用户名文本框、如果口令未填写则定位到口令文本框、如果用户名不存在则跳转到用户名文本框并全选所有字符、如果口令不存在则跳转至口令文本框并清空所有字符、如果无使用权限则展示提示信息、如果错误三次则锁定输入或增加验证码等细致入微的交互,大部分情况下仍需要手写代码。
第三,由于低代码开发平台存在片面追求提高开发效率的可能,其搭建的应用与开发人员完全手工编码并优化的应用相比,在性能上可能会有差距。究其原因,一是低代码开发平台必须考虑跨平台与兼容性,会增加适配层,进而增大开销;二是低代码开发平台面向组件搭建,为保证稳定性,组件间必须保证隔离,进而放弃了大量数据关联性。例如,低代码组件生成的医疗质量管理监控大屏,通常由一组可视化组件搭建而成,每个可展示的组件都关联到后台一个独立的模型或一条独立的SQL语句,组件的原子化特性决定了彼此之间很难关联;但在手工编写代码时,一些计算的中间结果可以多次复用,类似于计算机体系结构中缓存的概念,减少了“重复”命令执行次数以提高效率。
第四,低代码开发平台提供了一键部署运行的能力,但底层技术方案对用户而言很可能是黑盒,应用运行模型完全依赖平台自身,在软件供应商层面不具备可替代性,用户存在被锁定的风险。例如,医院选用了某个低代码开发平台开发的产品,同时基于该平台也自建了一些应用,当在商务合作上出现问题的时候,由于底层技术不同,就很难再以较小代价平滑迁移到另一个平台上。
3.2.展望
2021年Forrester发布的《中国低代码平台现状》中提到,中国公司的商业及技术决策者中,58%的人正在采用低代码平台和工具来创建软件,16%的人已将低代码创建软件列入计划。
当前,面向医疗行业的全套低代码开发平台虽未完全成熟,但已经存在部分场景基于低代码开发工具成功落地的案例。在HIS加速整体升级换代的大趋势下,通过上级部门、医院、厂商等多方共同努力,我们相信,随着低代码组件更加丰富、建模能力进一步增强、领域特定语言持续完善、AI技术加持下由自动化向智能化发展、平台开发标准与生态逐步健全、医疗数字化模型与流程标准不断统一,低代码开发平台在医疗行业必将掀起新一轮云原生、领域驱动、全栈信息技术创新的应用热潮。
【作者简介】
郭旭,硕士,毕业于国防科大和清华大学,解放军总医院信息科工程师,主要兴趣是大型企业信息系统架构和云计算技术的研究与应用。从事HIS软件开发工作十余年,自主研发医院多项核心业务子系统,带队完成多所大型三甲医院HIS整体切换项目。现任软件开发组组长,负责新一代HIS软件开发与管理工作。
【责任编辑:陈曦 版式:明超】
评论前必须登录!
注册