聊聊技术驱动互联网+医疗三个争论

前段时间和一个医生朋友吃饭,聊到他最近几个月开始接触病历夹,觉得超级好用。我问他哪里好用,他给我讲述了他,做为多点执医的工作,要经常到处跑,使用OCR和语音录入快速整理病历,有效跟踪病人的经历。这里有个背景交代一下,作为一个技术工匠,我自己不是一个很擅长推销的人。所以身边好朋友即使知道我在做什么,也知道我的性格,如果他们自己没有发现优势,是不会推荐他们用的。这次和我这个朋友吃饭,他夸的我自己都有点不好意思。但今天回想起来,心里却是觉得美滋滋的,一种功夫不负有心人的感觉。做为工匠,我理解最重要的是对“完美”的追求。在病历夹过去的2年时间里,身为技术的负责人,在语音识别和图片识别方面投入了巨大的精力。从寻找合作商,到研习友商和国内、国际上的方法,再到如今,一步一步在公司一群兄弟的“打骂”中,一点点优化系统。从最开始大量的人工识别,全病历识别到如今,经历2.5次大规模的系统更迭,几十个迭代上线,杏树林的识别系统已经初步实现了自动化分类分拣、中转流程自动化、以病历信息安全为基础的碎片化处理、信息的预OCR处理+分角色人工录入校验的一体化系统。这一系列的工作,不是一蹴而就的,也不是靠纸面能想出来的。它是一种工程技术和识别科学技术相结合的体系化工程。它是一种从实践到优化再到实践到优化持续不断的过程。可以说,强大的健康医疗类数据处理能力,在成立5年后的今天,已经成立杏树林站在大数据风口上的重要核心力量。因为这样的能力,我们那个月处理几千万字符的医疗健康数据。因为这样的能力,我们积累了中国可能少有的动态标准化医疗数据库,希望有朝一日成为国内最大的标准化数据库。因为这样的能力,我们为数据分析和研究打下了坚实的结构化数据基础,并且在持续的算法和人工清洗中,让数据称为进行精准化医疗基石。这里必须多说一句,感谢陪我走过这艰苦日子兄弟们,一起加班加点工程师、把我主持的一个个系统说的体无完肤数据分析师、争执争吵不停的算法工程师们。

说了些自夸的话,主要想顺着这个话题聊聊技术驱动医疗这个事情。互联网的发展,让越来越多的人们认识到技术在现代社会发展中起到的重要作用,工程师文化在成为了越来越多企业津津乐道的话题。那么针对医疗,是否真的能再次摇动起信息技术驱动的大旗让医疗进入新阶段吗?

  • 互联网+医疗的门槛-医疗信息化vs信息化医疗
    见过不少的HIS系统(Hospital Informatioin System),也曾经以前作为咨询师参与过朋友HIS的系统分析工作。就我所看到的,大量的医疗信息化系统,都是基本上完全照搬的现有医疗的实际工作方法或者工作模式。更多的人把计算机信息化当作了服务于原始工作的一种手段和工具。所以,曾经有一段时间,不光是医疗领域,在很多领域都流行一个词,叫做信息化或者数字化。而HIS也是在这段时期应运而生。但HIS本身,过分强调将已有医疗进行数字化,强调还原所谓的“医疗习惯”,因此造就了一系列其实很严重的数据结构。

    如上图,数据因为不符合关系型数据的存储,造成了大量医学统计上的困难。这种怪异的表格设计,从人类认知理解上并没有太大问题,但是作用到机器上就会出席比较大的麻烦。为什么会造成这种现象呢?在笔者看来,就是所谓医疗信息化在作祟。信息技术应该是一门重要的学科,它的重要作用是帮助人们重新认识这个世界。用机器的方式对世界进行组织和计算,这里面虽然会产生冗余,但是因为机器的大规模自动化应用,将是的大量数据的集体计算能力得到非常大的提升。

    所以笔者提出了信息化医疗的理念,这也是为什么说信息技术驱动医疗。原因在于,信息的信息化技术更加强调改造一种旧有的方法和工作模式,通过大量机器的参与,大幅度的提升旧有模式的工作效率。因此,在提到移动医疗的门槛时,笔者经常会说,这里的最重要门槛是使用新时代的信息技术方法,对医疗工作过程,方法进行重新梳理和重新定义,帮助医疗系统寻找方法进行优化。而不是遵从现有医疗方法,找一个电子化的道路,这样是不可能解决问题的。

  • 互联网+医疗的创新-业务创新vs技术创新vs技术化创新
    以Google为首,创立了新的数据分类检索的搜索算法。以Facebook为首,创立了新的人与人的连接算法。以Apple为首,创立了新的人与机器的交互技术。这几件事情,是笔者认为具有跨时代意义的技术发展,他们可以说是真正的技术创新。当然正在到来的无人机远程图像传输技术、AR/VR技术等,也可能正在成为具有划时代意义的技术提升。

    但是有不少人说,不能所有公司都围绕着技术本身来进行创造性工作。是的,各行各业也都需要许多的业务创新。但是如今,在互联网的时代,任何的创新,或者说基础创新工作,还是有章可循的。这个章,就是对技术改变传统方法的总结和实践。用这套新的方法,来指导创新。因此笔者强调技术化创新,并不是认为互联网时代的引领者一定要做什么前无古人的新技术,也不是传统模式里面寻找新的业务增长点,而是从技术发展中,寻找使用革命性的技术,对领域进行创新改造。在这个过程中,实现业务价值,引导领域效能提升。因此,笔者认为,用现代化技术寻找医疗领域的增长点,是创新的关键。

  • 互联网+医疗的明天-大数据vs数据分析
    笔者最近出席一些论坛,也看了不少文章,发现有个词现在被反复提及“大数据”。这里笔者Quote一句最近特别喜欢的话。

    Big Data is like teenage sex:
    Everyone talks about it, nobody really knows how to do it,
    everyone thinks everyone else is doing it, so everyone claims

    为什么这么说?笔者还不敢说自己对“大数据”有多么深的造诣,但是就已有的技术理解而言,“大数据”不等于“大量数据”这是两码事。大数据是一种根据大量数据的统计结果进行分析的方法。举个例子来说,百度用大数据对地图两点之间距离进行统计分析,预测百度到家的送餐时间。这其中百度大数据使用了很好的大样本情况下的统计学方法。这套方法,其实在医学领域早就已经有所使用,但是这里面有一个重要的问题。现代医学有一个重要的概念,叫做循证医学,其核心思想是医疗决策(即病人的处理,治疗指南和医疗政策的制定等)应在现有的最好的临床研究依据基础上作出,同时也重视结合个人的临床经验。

    这个临床依据怎么来,就成了现代医学的最重要课题。于是现代医学研究,包括药理分析,开发出了一大套排除干扰,单一化的统计方法来完成数据的分析工作。这里很重要的一个词,叫排除干扰。而恰恰是这个词,和大数据的模糊化统计理念有出入。所以,有不少人说大数据是医疗的明天,这点笔者很难认同。原因恰恰是技术驱动互联网+医疗。因为如果是驱动,就要看看被驱动本体到底是什么。如果如笔者所说,大数据是一套统计方法论的话,那么除非医疗统计方法论出现了革新,否则很难说大数据是医疗明天这样的事情。

    那么明天到底是什么,在笔者看来要技术驱动,就要驱动信息化的医疗自身工作,那就是研究数据分析的过程,这一块儿虽说很难,但却是可以、也值得解决。从这个角度而言,也是笔者所引导杏树林努力实现的目标。

总结下来,回到文章一开头写的。最近的信息技术互联网,可能由于某滴、某信的快速发展变得有点浮躁,好像今天做了投资,明天就能有几千万的用户,后天就能继续融资几亿,周而复始,大家就觉得技术驱动了。笔者眼里的技术,是一个持续话提升和解决的事情。人工智能这个词从上个世界70年代提出,经历了20年的起伏,10年的低潮,如今又慢慢随着技术的提升重新进入了“代表未来”的词语。如果一定要问,技术的发展模式,在笔者看来,是踏踏实实的,做好一个又一个优化,把现在需要10个人的事情,自动化起来,变成2个人。这就是技术的发展模式,来不得半点“大跃进”,来不得半点虚假。而是踏踏实实,一步一个脚印的去优化,去改造,不盲目遵从,也不妄自菲薄。这就是技术驱动互联网医疗的核心。只要有了这个核心,大部分争论其实都是伪命题而已。做好事,让医疗真的提升,才能让我们的兄弟姐妹父母子女更多人看到病,看好病。

关于文字集与编码

写Python2的人,很多人都见过下面这行Error

1
2
3
4
5
6
Traceback (most recent call last):
File "/Users/Jack/Documents/ApricotForestDoc/2_product_rnd/redspiderlily/mailfetcher.py", line 35, in <module>
if is_reply_mail(subject):
File "/Users/Jack/Documents/ApricotForestDoc/2_product_rnd/redspiderlily/module/mailutil.py", line 46, in is_reply_mail
return ("回复" in subject_.lower()) or ("re:" in subject_.lower())
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

上一次聊到Python3升级的一个重头就是unicode编码。所以这次想重点就聊两句字符编码。说实话就是在此之前自己也有些算不清楚。所以还是深入的跑到wiki上研究了一番,分享供参考。

ASCII,全称American Standard Code for Information Interchange,是一个字符编码标准。使用0-127(2^7)的数字代表不同的英文字符,这里包括大小写字母,空格,特殊字符等。这是一个大家都比较熟悉的字符集标准,可以看看下面图中的内容。这里不做赘述。

但是,ASCII因为标准内含有的有限,带有音标的字符‘é’就无法很好的表述,更别提汉字了。到了1980年代,计算机技术发展,那时候大家已经开始使用字节(byte)来作为计算机基本计数单位。1byte=8bit(2^8=256),所以可以表述的字符变多了。那个时候开始出现了实用128-255这些数字表示发音单词。所以直到今天,你去看word里面的字符表,Latin依然可以看到这个顺序关系,大体就是这个原因。

再之后,当世界各地的语言发展出了各自不同的字符集体系,比如中国简体(GBK,GB18030),中文繁体(Big5,以前有个特别扯的名字叫做大五码),法语(Latin1),日语等等。本来各种语言字符集各自写互不干扰,倒也相安无事。但是,世界大融合嘛,于是问题来了。有人需要在中文里写上一段日语,就像这样 ++“日本語にほんご”++ 。于是问题就来了,怎么才能在同一个文件里现实不同的字符集的字符内容呢?1980年,人来开始尝试解决这个问题,并制定了一个新的计算机工业标准用以规范的处理、表示和编码全世界主要文字。这个标准叫做Unicode(全称是The Unicode Standard)。目前,Unicode标准是8.0,已经包含了全世界已经有超过12万个字符,覆盖129种现代和历史上的语言种类。在这里面需要说明一个额外的概念叫做Universal Coded Character Set (UCS,也叫做ISO 10646)。按照Wiki对于Unicode和UCS的说法,目前两套字符集应该是完全相同的。同一个数字在两个字符集里所代表的字符应该是相同的。但是Unicode的外延要多一些。USC仅仅是一个字符集,而对应的Unicode同时还规范了校对、标准化、表示顺序的算法等。就如同本文提及对Unicode的定义一样,Unicode出来包括了字符集,还有表现和处理方法的部分。因此Unicode应该说是一个更加广泛含义上的标准。

理论上说,Unicode字符集或者UCS有110万字符点数可以被分配,目前时机分配成16个Plane,其中Plane0,被叫做BMP(Basic Multilingual Plane),一共65536个,其中绝大部分是中文(Chinese),日文(Japanese)和韩文(Korean),三者合称CJK。

这里需要特别提一下Chinese Simplified(GBK,GB18030),自从2000年以后,中国政府规定,所有在中国售卖的软件产品必须支持Chinese Simplified(GB18030)字符集。因此在我国,就出现了一个神奇的事情,就是Unicode和Chinese Simplified双字符集并行的问题。

有趣的是,笔者大概调研了几大中文网站的编码如下:

URI 字符编码
https://www.taobao.com/ Unicode(UTF-8)
http://www.jd.com/ Chinese Simplified (GBK)
http://bj.meituan.com/ Unicode(UTF-8)
https://www.baidu.com/ Unicode(UTF-8)
http://cn.bing.com/ Unicode(UTF-8)
http://www.sohu.com/ Chinese Simplified (GBK)
http://www.qq.com/ Chinese Simplified (GBK)
http://www.sina.com.cn/ Unicode(UTF-8)

感觉上各个大厂也是自说自话,不是不是很一致要遵守政府规定或者不遵守规定。这么说来,国家对这块儿在申请xxx备案的管理也不是很严格。

话有点扯远了,咱们再回来。目前Unicode字符集共设定16个Plane(数字从0x000000-0x10FFFF)对应(2^16+2^20)对应(1,114,112)。刚刚说的Plane0,基础语言集定义是从0x000000-0x00FFFF(2^16)。其他的大家可以查,Plane1和2用了一些,其他基本上用的很少。因此总共来说目前分配的字符大约是12万。

但是这样庞大的数字和计算机的比特(byte)之间并不统一,把一个Unicode字符串转换成Byte的过程,这里引入了一个叫做Encoding,编码的概念。1992年,为了兼容不同处理器和C语言,人们引入了一个编码标准,这就是大家广泛知道的UTF-8。截至2016年5月份,在WWW上的统计,UTF-8的使用率已经达到86.9%,对比GB2312(0.8%)。同时W3C也把UTF-8作为XML和HTML的推荐编码。

下面我们来阐述一下UTF-8的实现原理(同时可以结合下图来看):

如果是7位以内表述的字符表数字,就只占用一个自己,表现为(0xxxxxxx),这样刚好和ASCII码的描述相一致,这样就不会造成原有ASCII的识别错乱,特别是针对C语言的strlen()和strcopy()。从第8位,也就是十位数的256开始,采用两字节表述模式(110xxxxx 10xxxxxx),最多可以表示11个bit位,也就是2^8(256)到2^12-1(4095)。以此类推。是不是一种很有趣的编码模式 :)

下面看一个栗子。以杏树林的“杏”字为题。

所以总结一下,Unicode和ASCII是一个字符集的概念,他们是随着电信发展而产生的编码本。只不过Unicode有多包涵了表示和处理部分,范围会更广泛。为了让计算机能读懂编码,适应计算机的计算,我们有了诸如UTF-8类的编码方法。

值得参考的一系列词条出处
https://docs.python.org/3/howto/unicode.html
https://en.wikipedia.org/wiki/Character_encoding
https://en.wikipedia.org/wiki/Unicode
https://en.wikipedia.org/wiki/Universal_Coded_Character_Set
https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane
https://en.wikipedia.org/wiki/UTF-8

升级Python3几个小总结

最近,主要是想集中把这次的改造写完,早日上线。这次主要干了两件事情。第一是升级Python3,这里面顺带写一点学习总结。算是个misc文章吧。下一篇主要是想聊聊没有后台的系统到底是如何搭建以及为什么要做这个实验。

OK,先说这次Python3升级吧。想了很久了,受制于各种阻力,总是担心升级会出问题。但是Python3既然已经嚷嚷了这么多年。而且还是有越来越多的系统在往Python3上迁移,所以还是用用看。至少知道坑在哪里,以后会遇到哪些问题。

总结一下本次修改较多的几个部分:

  • Print语法:Python3最有名的一个表征就是print的括号问题。在Python2里面是没有的,在3里加上了()这个语法。所以导致从2向3升级的过程中print,成了修改最多的语法之一。

  • Pip2(Python2)和Pip3(Python3),一般来讲,如果之前装的是2的,升级到3时候Python和Pip两个命令依然表示的是2,如果要是使用3.x的话,需要加入pip3或者python3,来作为命令开头。为了简单期间,或者用env来定义。还有一种就是在bash_profile里面增加python的alias

    1
    2
    alias python='python3'
    alias pip='pip3'
  • MySQL-python包的使用。这个很讨厌,因为目前这个包还不支持Python3。不过也没什么着急的,换一个呗。PyMySQL这个是Python官方对于MySQL的支持包。对于基本的增删改查操作,用法基本上是一样的。只不过要特别注意的是连接时要加入“charset=”utf8””来实现对中文的支持。这个在MySQLdb里面好像是默认,至少我当时没有设置。

    1
    db = pymysql.connect(host=host, port=int(port), user=username, passwd=password, db=database, charset="utf8")
  • 关于unicode,这里说道大头了哈。因为绝大多数人对于Python2中文支持都是一个噩梦。文字,被在--之间转换。但在Python3里面,很重要的一点是对中文做了很好的支持。消除了unicode这一层环节。所以现在就可以比较明确的说“中文.encode(‘utf-8’)”就是解码环节,无需再顾忌其他。

  • 也正是因为这个unicode的转变,其实造成了Python2里面很多原始代码都要进行一系列的和字符集相关的变化。比如一个buildin的函数open,在以前2的时代,是不需要对字符集进行指定的(话说,其实也是因为那个时代就没有什么字符集)。现在要特别说明打开字符集类型才可以进行有效的读写操作。

    1
    open(filename, 'w', newline='', encoding='utf-8')
  • 另外很赞的一点是,Unittest对Python的支持非常好。我自己实际用了unittest2和mock两个库。基本上都没有出现什么相关的修改。非常赞!所以说测试还是要加哦,很不错滴。

这次升级,确实花了些时间,处理问题。但确实得到了不少有益的实践。总结下来是两点吧

  1. 单元测试很重要。整个过程中,升级后的第一件事情就是运行单元测试,其中大量的错误,但是不可怕,一个一个的改就好了。因为我的程序设计web、邮件、数据库等多方通讯,没有单元测试,效率会大打折扣,而且还有可能遇到因为网络问题而导致的联调失败
  2. Python2到3的升级并不可怕,主要问题恰恰是来自于unicode这块儿的改变。只要记好了字符集utf-8这件事情。你会发现大量问题,都和这个有直接关系。

IT背景的人想做移动医疗应该怎么做准备?

刚好在回答一个知乎话题,但是觉得挺值的分享一下的,供有兴趣的童靴,尤其是开始关心业务的童靴参考

IT背景的人想做移动医疗应该怎么做准备?我觉得其实最重要的就是同理心。IT技术是一个用作所有行业皆可的东西,但是正因为他的“干什么都行”,也就决定了如果不是爱自己所做的产品或者方向的话,也很难把一个行业做好做好。前几天,碰到一个做女性社区的CTO,聊起来说自己的团队不喜欢和产品一次思考,不喜欢往前跨一步去为用户考虑。当然我们也交流了许多执行层面的方法,但我问他了一个我很看重的话题,就是“作为一个男人来讲,你对帮助身边的女性解决她们(比如化妆、美甲等)的问题是否有兴趣”。他沉默,没有给我一个明确的答案,其实我大概也能猜的出来,至少我自己不是很有兴趣吧。那我说,如果作为技术的最高负责人,你对所做的业务没有力图改变的兴趣,那很难说你的技术团队能真正感兴趣于为用户提供服务。不如做点技术的事情,让团队先对技术产生兴趣吧,虽然这件事的投入产出比相对比于前者有点低,但也算是一种选择。

就我而言,对医生的同理心感受从很小就有了,各种因素不多说了。总是医生和技术人员一样,是工匠文化的典型代表,说深一点是Geek文化的典型代表。为啥?因为技术人员可以自己写各种好玩的应用,做Demo,但是脱离了业务,其实技术本身什么也不是。同理,医生也一样,你看医生自己可以做实验,研究片子,研究药理等等吧,但是本身医生离开了病人,其实也什么都不是。无论医生宣称自己有再高的成就,如果他没治好一个病人,恐怕没人相信。同理,一个技术人员无论宣称自己有在高的技能,做出fancy的页面,通过高压力的测试,外人也很难确信他所做的工作有多牛。说“医生是把患者背过河”,其实技术也一样“是把一个个严峻痛苦中的业务背过河”。说的好像有点高尚,但这就是医生,这就是技术。技术领域有活跃的Geek,也有混口饭吃的,甚至被迫从事这个行业的普通人。同理,医生领域也一样,只不过他们有两个更加对应的名字“神医”和“庸医”。

所以,我深信医生和技术在工匠文化的表现上是如此的一致。也是因为此,我相信,既然Github,Stack Overflow,Heroku,Amazon Cloud成就了一批又一批技术,让技术迈向新的台阶,那么我相信医生也可以有属于自己的医疗自动化存储、研究、交流、服务平台。所以,我做了病历夹,就像Github一样让医生存储自己的“代码”,让感兴趣的人互相交流,做了诊疗圈,让医生可以互相提问实现能力提升。我还会做更多,做更多让医生这群工匠变得更加方便的事情,成就更多医疗领域的Geek。我解决不了每个医生的工作问题,但我相信通过我的努力,能够让更多人知道、辨别什么人是好医生,是爱医疗这门学科的医生。这就好像我们现在招聘必看面试者的Github和博客账号一样。

如果这个问题是在问要不要投身于医疗这个行业,那么请准备好同理心,和真的想要颠覆一个行业去解脱那些痛苦中的医生们,让好医生获得人们更广泛的尊重,得到本来就应该属于他们的名誉和利益,让庸医无地自容。因为帮助了他们,也就帮助了作为患者的我们自己。这里多举一个身边的例子,我的一个同事,好兄弟,家里姨妈因为胃痛去了一家医院,医生针对胃炎给了些药打发回家了。偶然的机会,姨妈陪兄弟的妈妈检查癌症,于是在子女的要求下,自己也做了个检查,结果发现是早起胃癌,好在发现的早,应该无大碍。我们每个人,不可能每天去医院挂专家。但是如果这类庸医变得越来越少,我想至少他能想到让这位姨妈去做个检查;如果这类庸医变得越来越少,也许我们的兄弟姐妹父母子女会多一分生存的机会。

说回到话题,如果关注点不在医疗这件事情,也没什么对错的;那就关注在技术本身,医疗领域里面好玩有趣的技术也很多,比如和很多其他行业类似的用户体验方面,数据处理方面等等,可以做出很多不错的方面事情。但至于具体是不是要投入移动医疗,或者什么其他行业,那就没有什么特别的了。

准备Design Thinking

为了周五的演讲,开始准备Design Thinking方面的材料。以前虽然参加过,也做过不少相关workshop,但是真的说到理论的学习确实非常有限的。这里做一些学习总结。同时,我想考虑找人聊一聊,比如海生,看看他能不能给我推荐几个这方面的人进行一些学习。那么现在开始,关于Design Thinking。

知乎上有一片著名的文章,https://www.zhihu.com/question/21481878/answer/30543958。

我的学习就从这里开始(我要说明的是,这不是一片摘抄,而是一个对比,自己也曾经参与了大量产品设计方面的实际工作,所以感觉这样的对比可能更佳有效)下面是我做的关于Design Thinking方案的幻灯片,和大家一起分享

回顾北极星之病毒增长

上周做了一次关于北极星的回顾,一直想写也忘记了。今天提起来,其中印象比较深的部分还是在讨论这次送iPhone活动的成效。

复盘的结果是这样的:总的来讲,本次活动的成效还是比较好的,收获了大量的新用户注册。但是,如果说病毒效应的话,这次活动并不算事一个很好的病毒效应传播。从数据上看,并未达到预期的增长效果。

总结复盘,看了一下这篇知乎上的文章,我认为说的非常棒。
http://www.zhihu.com/question/20901811

“在facebook出现之前,有sixdegrees, Friendster, Myspace之类的社交网站,有一本书上说:facebook之所以能打败Friendster之类是因为用到了病毒式传播。如下图, 病毒式传播开始一般是线性增长,到到达临界点(Critical mass),然后以指数方式增长,直到饱和点。如果没办法到达临界点,一段周期后,就废了。”

觉得这一段话比较准确的说明了病毒式增长的方法和意义。下面这张图是原文中的曲线表述。这个图形,和我们自己的活动图形还是颇为相似。但是如何界定什么是“Saturation”饱和点,什么事“Critical mass”这个问题上,我还是有些困惑。关于我们图形里的第二个波峰,是哪一个点,还不是很清楚。我的感觉是,还需要一、两个活动,进行持续观察,寻找图像之间的拟合系数。通过这种曲线拟合关系,也许可以寻找到医疗互联网的一些有意思的数据。也就是这大约280万医生的市场运作数据。

希望大家每一个人和我一样,每周对数据关注一点点。作为一家互联网公司,数据驱动,才是核心。身为精英文化,目前的我不完全认同“无脑强运营”的文化,更加倾向于精英就是努力寻找对的事情,用数据说话,把方向找准。都说互联网没有对错,只有试一试。我觉得这是对的,但应该在数据驱动前提下完成的。而不是试了,然后呢?再是下一个。中国的互联网大量资本注入,已经不允许我们万事浅尝辄止,应该可以精细剖析。这也是现在所谓精细化运营的重要体现。

品味苹果的盛宴,移动医疗能尝到什么?

WWDC,全称“苹果世界开发者大会”,是苹果公司面向全球开发者的一场盛会。今年的WWDC’15,吸引了来自全球5000人参与,为期一周时间。大会从开发者功能出发,讨论在多媒体、图像与游戏处理、系统架构、应用架构、设计和部署五方面内容。不得不说,每年6月的WWDC,是开发者的一次饕餮盛宴,也是苹果展现最新技术的巨大舞台。

本年WWDC’15的特别之处在于,苹果在健康领域的两大功能再次被提及——就是它的HealthKit和ResearchKit。那么对于移动医疗而言,我们能做点什么?苹果创造了新的机遇还是毁灭了什么?通过Keynote,HealthKit,ResearchKit以及Watch的几个session,笔者做了如下的一些小结:

Keynote-智能再生:

从2010年开始看WWDC的感觉,笔者认为本届最大的亮点是——智能。无论是Craig在OSX上高调的搜索“上周处理的文档”,还是Siri的日程提醒,一直到后来的苹果音乐推出的个性化推荐,都在这一点上给人比较深刻的印象。那么对于医疗健康而言呢?IBM在Watson上的“失败”并不是一无是处,至少它证明了在医疗领域计算机不能替代人类完成系统性决策任务,但是可以很好的给人帮助辅助决策。在笔者的走访中,关于计算智能化,目前主要还是海外的一些公司在做,比如FlatironHealth,被谷歌投资致力于癌症数据标准化与数据分析,实现辅助癌症诊断。当然,国内互联网公司许多也在从事这样的事情,但是目前成果还非常有限。以2014年的中国互联网融资报告中所提及的数据为例,在所有的不完全统计中,总数达14亿美金的医疗投资中,仅有一家是大数据分析的公司。当然这并不是说其他类别的公司不做智能,但是根据笔者所闻,确实很少。更多的公司还只是玩玩概念,说说而已。

HealthKit与ResearchKit-更加完善的数据和医疗研究方法论:

关于本次WWDC,苹果在HealthKit和ResearchKit两个演讲可谓可圈可点。作为两个以医疗为突破点的iOS生态模块,前者更加偏向大众健康管理部分,后者偏向医疗研究。

关于大众健康部分,iOS希望打造一整套与个人健康信息相关的数据服务系统,从各个层面为人们展现出更丰富的数据资料。过去的HealthKit数据指标项涵盖了身体量度,健身,医学指标,营养睡眠,核心生命体征五大模块。本次除了饮水量,UV紫外线外,还增加了一个重要的生殖模块,重点关注女性健康方面,包括基础体温、白带、排卵等。这确实又是一个大领域,在中国,过去“大姨吗”,“美柚”都算在此耕耘过。可见以数据类型(数据指标项)为基础,HealthKit通过数据链描述人的方面做得越来越趋近与完整。

不过,HealthKit的发展对于医疗互联网从业者来说并不十分有利。其中的重要原因在于,苹果对HealthKit的使用场景做了严格的限制。尤其在数据的使用上,iOS系统基本上就是将数据占为己有。这对以数据为中心的应用而言完全是不可接受的。让很多应用服务的发展少了不小的想象空间。可以说,没有了数据,上文中提到的智能化就很难建立。当然换个角度说,这也是互联网向物联网转型的一个发展模式。HealthKit最大的收益者莫过于智能硬件类生产厂商,无需再花费繁重的软件研发费用,把自己工作更多的集中在硬件制造领域,创造更加符合人使用习惯的外部设备。其实也不光是苹果的iOS,医疗作为全世界最大的资本市场,每年的硬件成本是相当高昂的。软硬结合的发展,让这个领域的公司有了更多合作与互补。例如,在心脏病领域,心电的实时监控已经是被广泛认定合理的诊断方法。将数据合理、快速的回传到医生的信息端,会大大方便医生的诊疗工作。

关于医疗研究部分,笔者深以为,这是移动互联完为医疗创造的最大价值之一。将医疗研究,从有限的人数,拓展到了互联网更加广泛的人群;将以问卷为中心的主观描述,变为可以持续收集的客观数据;使参加者得到更多反馈。这几句总结很精妙的描述了移动医疗的价值所在。举个随访的例子,很多人都觉得随访就是聊天,是医生和患者间的即时通讯。其实不然,随访是医生对患者进行跟踪诊断的最主要手段。医生通过对患者的不断随访,通过数据指标,调整用药和药量。其重要作用是明确写在医疗教科书里的。那么移动医疗要解决的,当然不是怎么让医患聊天的问题,而是如何让医生以最有效的方式,帮助患者进行诊疗调整。这其实也是一种研究。苹果的iOS系统确实在这方面做了很系统化的努力,包括主动式活动(如问卷调查),被动式活动(传感器采集数据),知情同意书,展示面板。这方面非常值得同业移动医疗人学习的。同时,苹果也在“医药与软件合作”、“表单处理”、“数据安全”、“参与者权利”四个方向提出了相当明确的参考意见。

Watch-依然值得期待的玩具

关于AppleWatch,其实是本届WWDC’15的重头戏,在所有267个演讲中,17个明确以Watch为主讲内容,还有若干把Watch作为重点工作进行描述,这对于以讲代码研发为主的WWDC而言是非常少见的。本次苹果在手表方面大幅增加其自身的运算能力,新版本的WatchOS也终于摆脱了对iPhone的完全从属地位。这给了软件研发着更多的空间。目前绝大多数关于Watch的研发,虽然许多在说医疗健康领域的话题,但大体还是集中在一些和个人健康指标相关的收集与展示上,没有太大突破。笔者认为,这主要与AppleWatch目前的传感器数量和计算能力有关。纵观所有Watch类应用,无外乎提醒(日程提醒)、提醒(消息通知),还是提醒。在纯展现的大背景下,确实能思考的东西是有限。所以,在医疗健康市场上,除了数据收集,唯一能看到的产品就是用药提醒类的应用。这就回到了最开始的话题,关于智能,其实苹果已经说的很明确了,以Siri为代表的语音计算,已经开始帮助人们解决传统的输入和输出问题。那么接下来的医疗市场,围绕此而展开的智能计算,应该会成为新的热点。但至于具体是什么,笔者也在思考,同时也在等待苹果给出更好的输入和输出解决方案,甚至可能不是语音,而是生物电传感或其他什么,谷歌不是很好的解决了听骨传音这个问题么,也许下一个创新就在这里。但不管怎么说,目前的手表市场还依然算是玩具,我们都相信这里巨大的商业价值,但还需踏踏实实的创新脚步。

苹果的盛宴还在继续,每年的这个月总是会让人感觉很兴奋。希望能从中获取到一些灵感。技术在一次次颠覆着我们的思考模式。在使用全新的方法,去完成过去耗费庞大人力物力才能完成的事情。而如果认为所谓全新的方式,是把一些过去的东西电子化,以及搬移到移动设备上,那便是大错特错了。无论是Keynote诠释的智能化计算,HealthKit描述的关于医疗健康指标的定义,还是ResearchKit里对于数据采集收集方法的突破创新,抑或是AppleWatch这个有可能颠覆人类“文字依赖”的革命,所有的一切都在告诉我们,移动医疗改变的必然对传统“计算”、“沟通方式”、“输入”和“输出”方面的革新。而这四个方面,恰恰就是每一个从业人可以思考的。

王哲,2015-6-20

欢迎关注我的微信

代码也是一种诗

只是为了记住那些你曾经非常容易忽略的。这里也没有什么不一样,只是安静的土地,再来喧嚣

1
2
3
4
5
6
python manage.py syncdb
python manage.py test
python manage.py migrate
python manage.py runserver
python manage.py inspectdb
python manage.py startapp service

为什么说技术颠覆传统医疗

http://server.it168.com/a2015/0519/1729/000001729986.shtml

最近一直在做移动医疗创业,作为一个创新公司的技术负责人,一方面需要努力与团队研发更有价值的产品功能,另一方面还需要关心业务的发展。毕竟,没有业务,技术只是玩具。看了许多移动医疗方面的文章,大多从纯业务角度去划分医疗的阶段(如诊前、诊中和诊后),并以此出发去考虑移动互联网能做些什么,以及如何评价一个创业公司。

这种方法固然很好,但还有另一个事实被忽略了,那就是互联网从它诞生的那一刻就不是适应,而是改变,通过让人变得更为高效或者更为舒适,去改变人们过去的旧有习惯。举个例子,大约2年前,每个人还习惯于招手打车,那个时候,“有事儿”,“出门”,“找出租车多的大街”,“招手打车”。现在的习惯是什么呢?“有事儿”,“找车”,“车到”,“出门”,“上车”。所以,只要新方法足够方便,习惯并不是一成不变的。归根结底,新的技术让一切改变了。

回到互联网这个话题里,我们来看看最近几年的哪些移动技术改变了人们的生活习惯。

1) 高效移动计算能力-让计算成本变低
自从2007年的谷歌G1,应该说是移动计算的一个里程碑,安卓系统的推出,让人们发现原来手机不仅仅是一个为个体资源服务的小盒子,而是一个可以联系从本地到远程的计算资源。

其实很多人认为移动的发展是因为使用了碎片时间,这个说法没有错,但是碎片时间以前没有么?当然不是。根本问题是,计算资源提升了。这里要澄清一点的,“计算”不只是机器的事情,也需要人不断的进行输入、调整和验证输出结果,才能完整的实现真正意义上的计算。以前计算只能放在办公室里,然后下班回家,现在你可以时时刻刻的通过移动设备对需要计算的资源进行输入,实际的计算有可能是手机端,也有可能通过手机上传到远程服务器端完成,但不管怎样,任何计算都有机会时时刻刻被发起,或者经过调整被再次发起。这就是移动计算带给人类的革新。

2) 移动多媒体通讯-让沟通成本变低

说到沟通,其实归根结底是个沟通两端展示的问题。展示的效率,展示的形式,决定了沟通效果的好坏。 “文字”的发明让沟通可以实现远程而非必须面对面。电信的发明远程的传播效率更加便捷。而如今,通过移动设备的多媒体通信,让人们不再需要时间和空间的约束。与此同时,多种媒体的传输使得这种沟通变得更加容易理解。一张图片、一个视频可能胜过万语千言。也正是因为展示的快捷和易于理解,成本变低的结果,我们用同样的代价,可以获得更多的沟通,那么随之带来的,包括信息更加透明化,更加海量化也就水到渠成了。

3) 多种辅助设备-让收集成本变低
上面提到谷歌,接下来可想而知少不了苹果,笔者看来这家公司的伟大,不仅仅在于他发明多少很牛很炫酷的东西,而是他降低了各种辅助设备的成本,并把他们集中在了一台移动设备上。无论是陀螺仪、加速计、还是血氧传感器的引入,都大大增加了人们在它上面的想象空间。因为从那以后,人们有机会利用更加低廉的成本,收集更加广泛的信息。

正是因为上述所言的变化,使得人们有机会寻求新的改变,用这样的技术去创造新的生活习惯。如果我们意识到移动技术在过去八年时间里成功改变了人们的许多生活习惯;如果我们认为医疗群体也是一个有生活的人群,那么移动技术也一定会类似的,在这三个维度上改变传统医疗,使医生改变旧有习惯。更为高效或更舒服地从事工作。

从公司医疗业务同事那里,笔者不断尝试了解尽可能多的信息,寻找可能带来的改变。医疗会第一个想到“看病”,看病是什么,要“收集信息”,“制定方案”,“随访结果”,“调整方案”。只要是医疗,一定涉及这几个话题,这是循证医学的根基,无论诊前,诊中还是诊后。这也是几乎绝大部分技术型工种的工作方法(比如开发“收集需求”,“架构设计”,“结果测试”,“重构”)。于是乎,我们这回倒着说,从最后一条开始:

3) 多种辅助设备-让收集成本变低

现在不少人在这方面做努力,其中最典型的创新,就是大量硬件、软件的简易医疗设备的。过去医院、医疗单位、药厂研究机构等收集病历,简直是一项无比繁冗复杂的工作,如今只需要用收集拍摄一下,就会收集起来,自动识别成病历数据。

硬件方面,一个皮肤科常用的探测仪,动辄几千、上万,还操作极其复杂。笔者自己从“华强北”花36块钱买了一个高倍放大镜,配搭上自己的手机摄像头,把照出来的效果问了几个医生,还真不错。

再比如对帕金森的诊治和判断,一直是医疗界的难题,尤其是如何形容,让许多医生非常痛苦。后来开始有专注病例采集的应用,使用视频来进行数据采集,大大方便了对于帕金森病患阶段的描述。前不久,苹果又利用ResearchKit的工具包,开发了通过记录患者手握手机的抖动幅度,来进行临床描述的方法。

可以说,收集信息成本的降低,让越来越多的医生可以不再需要购买昂贵的医疗设备进行初级临床数据收集。这里笔者特别强调初级的概念,因为高级医疗是一个非常需要精准的专业领域。降低的成本主要用来帮助更广泛的个人、地县级医院或社区医院的医生从事医疗判断,完成初级筛查,这是现在在中国存在的很严重的社会问题。

2) 移动多媒体通讯-让沟通成本变低
机缘巧合,前两天和一位医生朋友聊到一个很有趣的话题,emoji,就是我们常见微信里的那种表情图标。他说因为这个事情,让他避免了一个险些出现的医患关系问题。当时的情况是两个人通过医患沟通的软件,谈话有点僵,大概是病人没有遵医嘱,所以出现了些问题。在郁闷之时,他误点击了一个女儿不知何时装进软件的一个很欢快的表情,发了出去,此后神奇的事情发生了,患者也回了一个表情,一来二去,两个人的谈话竟然转入了互相理解的环节。最近很流行一句话,“你懂的”。其实图像在许多时候可以表达出语言或者话语无法描述的内心含义,让许多的沟通解释变成了浮云。

再举一个例子,笔者和产品经理一起看到用户反馈,说到患者教育有多么痛苦,几个小护士不停给患者打电话,累得半死不说,因为频繁打扰到患者的生活,患者既记不住,也不领情。于是我们尝试在移动设备里添加了一个被津津乐道的功能,医生可在设备上进行简单的配置,剩下的交给系统,然后自动发送到患者的移动设备上。患者可以在任何时间看到这些精心制作的文字、图片、影音信息,并填写反馈信息,从而得到了非常好的效果。

1) 高效移动计算能力-让计算成本变低
说到移动计算能力,在互联网这个时代,更多的人会想到大数据分析和数据整合。是的,医疗的大数据分析需求是非常大的,而且广泛的,这也是笔者目前专注的重点。但其实现实世界远不仅于此。以我们近期主导的一次搜索引擎改造为例,最传统的医生若想提升自己的研究水平,需要到病案室去,利用各种检索方法,搜寻到自己想找的“诊断”,“药典”或者“病历”资料。后来图书馆里有了电脑,查询变得稍微方便了一点。不过今天,技术的发展,让医生可以随时随地在手机上查找想要的东西,高效的搜索引擎,通过对海量数据的索引,完成目标的获取,并返回给医生的移动终端,这个过程可以在家里、地铁上、回家的路上、或者某个餐馆里。

最后,如果一定要个总结,那就以笔者做博士研究时导师说过的话作为结语:创新无非两种,一种是跳跃性的,突破进展,第二种是延续性的,遵循规律踏实下来探索。前者虽然伟大,创立了诸如相对论等的伟大理论,而后者才是世界上绝大多数成果的来由,不断促进着社会前进。同理我想说,所谓颠覆是一点一滴的创新的汇集;所谓创新本身,尤其是移动互联网的创新,也没有那么难,还是可以从一些规律里面寻找创新点,结合业务去探寻。作为一家创新互联网公司的技术团队,我们继续努力了解医疗与医生的每一滴渴求,从技术出发降低他们的工作难度,这就是我们的技术颠覆传统医疗之路。

python_db_basic

有些东西就是放下来记录一下,关于python的。这两天病了,忽然觉得这个事情总是对着有一种箭在弦上不得不发的感觉,所以说什么也要把这几块儿技术上的东西完成。搞完这个,应该可以踏踏实实的看看公司下一步的内部管理要如何做了,现在开始有点疲态的感觉,可能是因为平台接二连三的事故。不过这个我倒是不担心,毕竟一直在运行,一点点小聪明还是可以搞定的,只是,眼看,需要一个系统行的计划了,新的一个半年计划应该要搞一下出来了。

这个title叫python db basic,其实名字不好,主要是记录一下几个主要的命令,如何继续完成我的这个小玩具。

1)Python DB,超简单的东西,Djangle框架和RoR框架一样,基本上对于简单应用就是记住几行命令

在Models里面建立好class

在命令行里面运行,并生成migration脚本

1
python manage.py makemigrations

在命令行里面运行,并生成数据库的内容

1
python manage.py syncdb

在view里面用class直接产生新的obj,然后obj.save()就可以了

2)一个微信的小东西
ngrok用来做本地调试,却是好用截个图,剩下的自己查吧

王哲,CTOin杏树林
紧张的时候,静下来写一写条目,来看看哪些在做,哪些要做,哪些没做