买面包还是造面包厂

牙医系统软件的设计

2021-10-18

几年前女儿的诊所买了一套澳洲生成的牙医管理系统软件,这套花了相当十多万人民币的软件,功能不少,可惜不合适新加坡的环境。最重要的病人资料,身份证和出生年月日都没有。这套澳洲产的昂贵的软件在这里水土不服,最后只落得柜台做预约而已。

前些年政府要求医院、诊所要逐步实现电脑化,女儿有五间牙医诊所,要购买软件,肯定是一笔不小的开销。于是,我设想是否能自己设计一套适合本地使用的牙医软件。

有一天,一位从事软件设计的朋友来家聊天,我便将我的想法跟他谈起,征求他的意见。经验丰富的他很清楚设计一套这样的软件涉及的技术多、工作量大。他很形象地说,你女儿诊所要用的软件就好像一个人肚子饿了要吃面包,你是花钱去买面包(软件)还是自己花时间造面包厂(设计)来生产所需的面包?要设计出一套可用的牙医管理系统软件,的确不是一件容易的事。

朋友形象生动的比喻,我印象十分深刻。好奇心促使我上网去了解牙医管理系统,譬如国内常用的牙医管家,轻松牙医,艾坚牙医等等,在寻找资料的过程中,我看到了国外某大学的一篇论文,讲述如何设计基于互联网的网上预约系统,并给出了简单的例子,于是,我认真阅读了这篇论文并下载了该例程,可是例程无法工作。

事实上基于互联网的预约系统,最起码要求有数据库、网络服务器,以及服务端和客户端的编程开发工具。这些东西我都不具备,必须去寻找、去创建。

网络服务器和数据库有多种多样,如何选择?儿子在新加坡国立大学学的是电脑软件专业,对这方面的情况比较了解。我征求他的意见,按照发展趋势,他建议我网络服务器采用Nginx而数据库采用PostgreSQL。按他的建议我上网去了解Nginx和PostgreSQL,发现Nginx和PostgreSQL虽然拥有很多优点也是越来越多人采用的网络服务器系统,但是Nginx和PostgreSQL却不是最多人使用的,最多人的使用的软件却是LAMP,即是Linux系统、Apache服务器、MySQL数据库以及服务端的编程语言PHP。作为初学者,我需要碰到问题时容易找到解决方法的那种,显然最多人使用的软件,在网上更容易找到资料和解决问题的方法,因此我放弃比较优秀的Nginx和PostgreSQL,而是采用了大众化的LAMP。

这些年,我的工作基本上是与硬件电路相关的微处理器打交道,基于操作系统的软件,工作上没有需要,也没有机会去做这方面的设计工作,除了自己利用网上下载的免费工具,利用业余时间用C#编写过一些微处理器调试用的工具外,对于基于互联网的软件设计更是碰都没有碰过。不管是Nginx、PostgreSQL还是LAMP对我来说都是没有用过的、全新的,一切都得从头学起。从微处理器编程到基于互联网服务端的编程,好像研究电子的去搞宇宙的工作,差别之大就像一个在地面一个在天上,这是一项艰巨的工作,对我是个很大的挑战,也引起了我极大的兴趣。

网络服务器软件系统确定后,下一步就是选择服务器的硬件,最简单、最直接就是买台普通的台式电脑当服务器,问题是服务器通常是一天二十四小时都开不关电的,算起来一年的电费都不少,更麻烦的是普通电脑占位,家里那里去放,即使诊所要多放一台普通电脑的服务器,也有受地方限制的问题。对于普通软件工程师而言,选一台合适的服务器肯定不是个小问题,然而对于一个嵌入式电脑系统设计工程师的我来说,却是小菜一碟。经过调查比较,我决定选用一个体积像肥皂盒大小、耗电低,价钱便宜(约200多人民币)的树莓派3电脑作服务器。

我利用业余时间边学边干,点滴积累。经过近两年的积累,到我退休时牙医管理系统已初具雏形,退休后又集中时间干了几个月,这个包含了病人资料、病人预约、牙科治疗图,诊治模块、收费模块、排班模块的基本牙医管理系统终于在2019年的9月正式上线使用。

基于互联网的牙医管理系统启用后,遭到了黑客的攻击。从服务器的日记可以发现黑客不但有来自美国、英国、俄罗斯等西方国家,也有不少来自中国,总之全世界各地都有。特别是黑客的DDOS攻击,造成服务器的阻塞、瘫痪,严重影响诊所正常运作。为了解决黑客攻击问题,我将互联网(WAN)服务器改为本地网(LAN)服务器。LAN解决了黑客攻击问题,却造成了每间诊所各自独立,资源无法共享的问题,真是跨过了沟又遇上了河。经过深入的分析和全面的考虑,我决定采用云端服务器加本地服务器的模式来解决资源共享的问题,云端服务器作为各间诊所的公共备份服务器,每间诊所本地服务器又可以从云端服务器取得其他诊所的资源,从而实现资源共享。云端服务器即使遭到了黑客的DDOS攻击,也影响不到各间诊所独立的LAN服务器的正常工作。发现问题,想办法解决问题,这就是工程师。

经过二年多的使用,根据用户的反馈,不断地修正和改进,除了基本功能变得更加稳定可靠,还增加了几个有用的模块,包括短信自动召回提醒功能,发外加工跟踪系统,产品销售(POS)系统。

短信召回提醒是个十分有用的功能,它为保证稳定可靠的病人来源具到了很好作用。在新加坡大部分人都享有政府的看牙医的津贴,每年有一定数量的洗牙、补牙、做假牙的津贴,不用就会自动过期。通常人们在没有提醒的情况下,不会在意这些政府津贴,往往在不知不觉中就过期了。如果有提醒,人们便会利用政府的医疗津贴去诊所预约看牙医,洗牙、补牙、做假牙,或其他的牙齿保健服务。自从用上了自动短信召回提醒功能后,诊所看诊的病人明显比以前多了,诊所的业绩也翻了一番。

短信召回提醒功能,开始时是从网上的短信服务供应商购买短信服务,发送一条短信的费用大概是新币5分钱,诊所每一个月的短信费用大概需要400新币,约合人民币2000块,这是一笔很可观的费用。早在1999年前,我就利用微处理器控制Wavecom公司的GPRS调制解调器,自己设计了短信报警器。我利用手头现有的华为3G调制解调器和网上买来的树莓派3B微电脑,参照以前的设计经验,自己制作了一个短信发送服务器,再跟本地电信公司购买了一条无限发短信的线,每个月的费用不超过60新币,这样用自己的短信服务器每个月能为诊所省下300多新币,一年就是4000多新币,约合二万多人民币。

根据新加坡电信服务,4G启用后不久,2G服务就终止了。现在已经进入到5G时代,估计3G也顶不了多久,于是我上网去买了一个华为4G调制解调器,编写了一个4G调制解调器的驱动程序,将原来的短信服务器改用4G调制解调器,用4G调制解调器发送短信比3G调制解调器更加稳定可靠,4G预期寿命无疑比3G长的多。

这个花了我不少时间和精力建造的“面包厂”,但愿能生产出更多更好的“面包”。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注