open-power-workgroup / Hospital

OpenPower工作组收集汇总的医院开放数据
http://open-power-workgroup.github.io/Hospital
Other
6.73k stars 1.02k forks source link

【建议】关于医院信息采集和评分标准的建议(附14000多条医院网站数据) #327

Open be-a-human opened 8 years ago

be-a-human commented 8 years ago

我想做什么?

我是 Chromium 系浏览器扩展开发者之一,前段时间发现有这么一个莆田系医院信息的项目,这是一个很棒的项目。因为我有接触过百度推广(接触的是一个一年在百度推广充值900多万的医院的SEO团队,和一个一个月就能充值30万的卖风水饰物的“风水大师”),知道里面的水很深,对百度给钱就能上的婊子行为深恶痛绝,但是我从来没有想过还可以这样做,所以我发现了你们的这个项目之后非常希望可以使用这个项目的数据来帮助提升用户体验。

我遇到的问题

但是我下载了数据文件后发现医院数量过少,医院信息过于简陋,我需要用的网站信息更少,不能满足浏览器扩展自动化作业。而且我发现你们关于医院网站的认证流程有很大的改进空间。

我的解决方案

因为我要做的是在用户访问医院网站时提示用户可能存在的风险,所以我要做的大概是这么几步:

第一步:获取医院列表

我总结的快速收集医院的方法有以下几种:

  1. 利用地图API查询医院POI类型【推荐】
    • 优点:开发成本低、稳定可持续、覆盖面广
    • 缺点:需要区分重复医院(如同一间地址不同的门诊部地图上也会有标记)
    • 收集内容:名称、地址、电话、网站等
    • 可用平台:高德地图开放平台、百度地图开放平台、腾讯地图开放平台等
  2. 利用企业工商信息API查询【付费优先】
    • 优点:开发成本低、信息权威
    • 缺点:获取成本高(收费,几毛钱查询一条)
    • 收集内容:企业名称、地址、经营范围、负责人等一切注册信息
    • 可用平台:天眼查、启信宝等
    • 扩展:有技术的话也可以自己采集工商局网站
  3. 利用搜索引擎采集【可作关键词补充】
    • 优点:获取成本低、可获取百度推广站点和官方认证站点
    • 缺点:开放成本高、数据可能不够全面
    • 收集内容:医院名称、网站地址等
    • 可用平台:百度、360、搜狗
  4. 利用医疗相关网站采集【最后考虑】
    • 优点:获取成本低
    • 缺点:开放成本高、数据可能不够全面
    • 收集内容:医院名称、性质、级别、联系方式等
    • 可用平台:99健康网等平台的医院黄页

      第二步:获取医院基本信息

这一步主要就是获取医院真正的名称和医院的机构类型(我主要用来判断是公立的还是民营,有需要的可以收集负责人等信息):

  1. 查询百度信誉【推荐】
    • 优点:获取成本低、开发成本低、可快速获取该机构在百度认证的网站(有做百度推广的网站几乎可以100%收集到)
    • 缺点:详细信息不全、缺乏权威性
    • 收集内容:有百度推广、实名认证、官网认证的网站
    • 方法:百度搜索网址或名称+@v,如“北京协和医院@v”
  2. 利用企业工商信息API查询【付费优先】
    • 参考第一步里的介绍
  3. 利用医院网站反查备案主体
    • 优点:开发成本低、可同时获取网站备案信息以及同备案号网站
    • 缺点:获取成本较高(收费)
    • 收集内容:网站名称、机构类型、机构名称、备案时间、同备案号下其他网站
    • 可用平台:聚合数据等
    • 扩展:有技术的话也可以自己采集工信部网站

      第三步:获取医院网站

  4. 利用搜索引擎采集【首选】
    • 优点:获取成本低、可获取百度推广站点和官方认证站点
    • 缺点:网站收集后需要进行补充信息及甄别
    • 收集内容:网站地址、百度信誉查询关键词(通过“关键词+@v”查询地址)
    • 可用平台:百度、360、搜狗
  5. 利用医疗相关网站采集
    • 参考第一步里的介绍
  6. 利用已知医院网站、名称、备案号反查同备案网站
    • 参考第二步里的介绍
  7. 提交浏览器扩展用户访问网站【重要】
    • 优点:用户越多覆盖面越广,可以即时抓取到莆田系新网站
    • 缺点:需要先建立信息抓取流程
    • 范围:首页标题、网站名称或备案主体名称中出现疑似关键词的

      第四步:建立评分

  8. 根据机构名称查询企业负面记录【自动化】
    • 优点:权威、参考价值高
    • 缺点:诉讼记录获取成本较高
    • 收集内容:诉讼记录、失信记录等
    • 可用平台:第三方付费API、搜索引擎(如百度搜索“机构名称 被执行人”)
    • 搜索例子:周口现代妇科医院 被执行人
  9. 根据医院主体及网站备案信息【自动化】
    • 理由:由于莆田系占民营医院高达七八成,因此可以默认将所有民营医院打入冷宫
    • 优点:快速甄别风险、甄别成本低
    • 缺点:存在较大误伤可能性
    • 筛选条件:网站无备案的、非医院备案的
  10. 根据医院电话号码【自动化】
    • 理由:莆田系营销电话过多,有的被用户标记为“营销电话”或“骚扰电话”
    • 优点:识别成本低、参考价值较高
    • 缺点:覆盖面低
    • 可用平台:聚合数据、APIStore
  11. 根据不良新闻报道(包括用户举报)【人工确认】
    • 优点:参考价值较高
    • 缺点:验证成本高(如何确认这不是医闹、恶意软文、新闻制造业的作品?)
    • 可用平台:人工补充
  12. 根据相关部门的调查结果或处罚公告【人工确认】
    • 优点:参考价值较高
    • 缺点:责令整改等处理具有时效性(需要跟踪确认是一错再错还是改过自新)
    • 可用平台:工商局或相关部门公告发布平台
  13. 根据党政机关、事业单位网站标识
    • 优点:参考价值较高
    • 缺点:目前需人工查询
    • 可用平台:http://bszs.conac.cn/

      我的评分标准

由于我要做的功能是在用户访问时就就医风险进行提示而不是莆田系医院风险提示,而医院网站数万个,而且莆田系的网站每天都在增长(连医院数量都在快速增长),而我这个功能不是主营项目,我也没有调查团队去确认网上的医院的负面新闻到底是真实事件还是医闹,再或者是竞争对手的软文,所以我采用如下评分标准。

总分为5分,警戒线为3分,严重警告为2分,黑名单是0分。处于警戒线时弹窗提示并显示原因(不主动展示负面记录),存在严重警告或黑名单时拦截访问并显示原因及负面记录。

初始分5分满分,以下是加减分标准:

  1. 网站备案主体(或医院主体)存在失信记录的减 5
  2. 网站无备案减 3 分(中国大陆的正规网站都必须有备案)
  3. 网站备案的机构类型非“医院”类型减 2 分(只有公立医院的类型是医院)
  4. 电话号码被30个以上的用户标记为“营销”或“骚扰”电话的减 1
  5. 电话号码被100个以上的用户标记为“营销”或“骚扰”电话的减 3
  6. 每标记一件不良新闻事件减 0.5
  7. 被相关部门调查确认存在欺诈或其他不良事件的减 2
  8. 被相关部门责令整改的减 1
  9. 确认是党政机关、事业单位网站且被备案、电话原因扣分的加 2

注:当网站无备案服务器无记录时判断一个网站是不是医院网站是依据首页标题及网页内容。

我的第一份数据

以下是我第一次操作的步骤以及采集到的部分数据,分享给大家。这份数据只收集了百度信誉认证信息和网站信息,没有收集详细的工商信息(因为目前只找到收费API),需要企业工商信息的需要自行查询。

  1. 通过高德地图API采集全国行政区。
  2. 根据行政区在使用高德地图API抓取POI类型为医院的数据(只保存了医院名称)。
  3. 通过百度搜索在高德抓取的“医院名称”和搜索“行政区+医疗关键词”的方式抓取了百度信誉(就是网址或名称@v)的关键词以及标记有官方网站的网址,以下是例子(其中北京是省份或城市名称的变量,注意关键词间的空格):
    • 北京 人民医院”(或医院、专科医院、中心医院、妇幼保健院、总医院、军 医院、中医院等)
    • 北京 美容”(或抽脂、瘦脸、隆胸、私密整形、割包皮等)
    • 还有就是直接搜索医院名称
  4. 通过百度搜索在上一步搜索来的信誉关键词,然后抓取实名认证内容(包括名称、主体识别码、机构类型、以及所有网址和备案号、网站名称),如“www.pkuph.cn@v”,如“北京协和医院@v”。
  5. 通过腾讯电脑管家接口补充网站备案号以及备案主体。(这个接口不是公开的,不能说)

    有信誉档案的数据

数据分两部分,一部分是有信誉档案,这部分数据共有3699个医院或企业主体和13973个网站。其中可能有参杂了少数美容公司,要判断的可以自行加个判断。

以下是数据格式:

/**
  bdv       百度信誉主体识别码,直接百度搜索“BDV-709849212”可以到信誉信息
  name      百度信誉认证名称(不一定是机构主体名称)
  type      百度信誉认证类型(民营医院通常是企业、民办非企业和个体户,总是不是医院)
  desc      百度信誉认证简介
  sites     百度信誉认证网站(是一个数组,莆田系医院普遍都有好几个网站)
         // 网站字段
    name    在百度信誉认证的网站名称
    domain  域名
    url     首页
    auth    是否有百度官网认证,1是,0否
    icp     网站备案号
    org     网站主体
 **/
{
  [0]=>
  object(stdClass)#2 (5) {
    ["bdv"]=>
    string(13) "BDV-709849212"
    ["name"]=>
    string(42) "首都医科大学附属北京儿童医院"
    ["type"]=>
    string(6) "医院"
    ["desc"]=>
    string(0) ""
    ["sites"]=>
    array(1) {
      [0]=>
      object(stdClass)#3 (6) {
        ["name"]=>
        string(42) "首都医科大学附属北京儿童医院"
        ["domain"]=>
        string(10) "bch.com.cn"
        ["url"]=>
        string(14) "www.bch.com.cn"
        ["auth"]=>
        string(1) "1"
        ["icp"]=>
        string(20) "京ICP备05031057号"
        ["org"]=>
        string(42) "首都医科大学附属北京儿童医院"
      }
    }
  }
}

无信誉档案有官网认证的数据

这部分共有271个网站。

/**
  domain  域名
  url     首页
  icp     网站备案号
  org     网站主体
 **/
{
  [0]=>
  object(stdClass)#2 (4) {
    ["domain"]=>
    string(9) "trhos.com"
    ["url"]=>
    string(13) "www.trhos.com"
    ["icp"]=>
    string(20) "京ICP备11007053号"
    ["org"]=>
    string(150) "首都医科大学附属北京同仁医院(北京市验光培训中心、北京市糖尿病防治办公室、北京市糖尿病综合会诊中心)"
  }
}

数据下载

不知道为什么上传不到 github ,所以我上传到七牛云存储了。 点击下载

建议和反馈

以上就是我的需求以及我的解决思路和第一次操作。

如果这个项目可以采用我的思路的话那就真是极好的,这样我以后就可以用你们的数据。如果说这和你们要做的东西不一样,那我会自己建一个项目。

希望能帮到大家,如果大家有什么好的建议也欢迎回复。

代码如诗

最后我想说的是,我用的 PHP 几乎不存在异步的概念,如果有其他语言的猿们能助我一臂之力写一个多线程的后台查询流程那就真是极好的了!(能提供负责异步处理的服务器更好,我也不介意和你分享数据)

fakeforreg commented 8 years ago

非常棒的工作!

我们需要讨论一下,然后给你答复。

be-a-human commented 8 years ago

好的。评分标准可以忽略,这个是不同使用者可以自己去定。主要是数据采集方面,如果大家可以共用一份数据的话,那数据维护起来就更容易了。

fakeforreg commented 8 years ago

@be-a-human 我已经把你的数据,与我们的现有数据合并在一个sqlite里面了,但是具体如何展现,还在考虑。

be-a-human commented 8 years ago

大家应用场景不同展现方式不同。

我的问题简单来说就两个:

1、后期数据收集更新是否包括收集医院网站(看之前的信息是以名称和新闻报道为主)。 2、如收集医院网站是否收集备案信息,以及网站主体的不良记录(如失信被执行人信息)。

fakeforreg commented 8 years ago

@be-a-human

  1. 收集医院网站,也是我们的目标。而且,我们有理由相信,正经的医院,不会搞那么多网站。
  2. 如果能够有网站的备案信息、不良记录,肯定会更有帮助。