亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

智能醫生:帶有人工審核的AI醫療助手,使用Permit.io重新定義權限控制

这是提交给Permit.io授权挑战的作品:AI接入控制,

我创建的东西

智医是一款由AI驱动的医疗助手,允许患者立即得到诊断和治疗建议,利用OpenAI(ChatGPT技术。但这还不是全部——该应用程序旨在通过内置的权限控制来模仿真实的工作流程,确保所有AI的建议在传递给患者前都会由持证医生审核。

这不仅仅是一次演示——它是一个现实且可扩展的解决方案,展示如何通过Permit.io实现细粒度、基于角色和属性的访问控制(ABAC)

试用版

🧪 实时前端: https://rainbow-parfait-febebb.netlify.app/auth/login
⚙️ 实时后端API: https://smart-doctor-backend.onrender.com/api/

测试凭证:

    角色      用户名       密码
    ADMIN     admin      2025DEVChallenge
    DOCTOR    doctor     2025DEVChallenge
    PATIENT   patient    2025DEVChallenge

进入全屏,退出全屏

项目仓

🔗 GitHub: https://github.com/sumankalia/smart-doctor (点击访问)

🛡️ 特性访问表

注:保留原符号"🛡️"以保持原文风格和语境。

功能权限控制

使用 Permit.io 授权 AI 应用程序 🛡️

在智能医疗平台中,授权不仅限于前端角色检查——而是通过Permit.io实施的集中化策略,与我们的后端系统紧密集成。下面是如何利用Permit在我们的智能医疗平台上实现安全保护的方法。

✅ 实时用户同步功能

一旦在 MongoDB 中创建了一个用户,就会实时同步到 Permit。

    await permitInstance.api.syncUser({
      key: user._id.toString(),
      first_name: user.firstName,
      last_name: user.lastName || ".",
      email: user.email,
    });

全屏 退出全屏

这保证每个用户都存在于许可仪表盘,并通过策略进行管理。

自动分配角色
同步完成后,我们将根据情况动态分配角色。

    await permitInstance.api.assignRole({
      role: 角色映射.医生, // 或 Admin, Patient
      tenant: "default",
      user: user._id.toString(),
    });

全屏模式 退出全屏

这使我们能够完全外部化访问逻辑——用户只能根据其角色以及资源的状态查看或执行相应操作,例如,AI诊断是否已获得批准。

操作指南:

这里有一份一步一步的操作指南,展示了智能医生是如何工作的,涵盖用户流程的每个步骤以及细致入微的权限管理。

1. 患者:提交新病例申请
登录的患者首先通过一个简单的表单来报告症状。

  • 前端将这些数据发送到后端API。
  • 后端调用OpenAI API生成诊断并制定治疗计划。
  • 然后将病例分配给工作量最小的一位医生。

![患者预览图]( https://imgapi.imooc.com/e19583680919cd9808000634.jpg)

2. AI:生成诊断 + 治疗
根据您提交的症状,后台会调用OpenAI(ChatGPT模型)并返回推荐的诊断和治疗建议。(由ChatGPT模型提供)

    const userQuery = `
          症状有:${symptoms}
          病例详情:${caseDescription}
          其他相关信息:${additionalInfo}

          请分两部分回复:

1. 可能的判断

2. 建议的治疗方案
     `;

    const chatCompletion = await openai.chat.completions.create({
          model: process.env.OPENAI_MODEL,
          messages: [
            {
              role: "system",
              content: userQuery,
            },
            {
              role: "user",
              content: `请分析以下医疗案例,并提供专业的医疗评估意见:\n\n${userQuery}`,
            },
          ],
          temperature: 0.7 ,
          max_tokens: 1000 ,
        });

    const aiResponse = chatCompletion.choices[0].message.content;

全屏模式 退出全屏

AI Response

3. 医生:查看 + 批准/拒绝
医生会收到分配给他们的新病例,并可以做如下操作:

  • 查看人工智能生成的结果
  • 批准诊断或治疗
  • 覆盖并编辑这些结果
  • 添加备注

Permit.io确保只有被指派处理该病例的医生才有权限编辑该记录。

主页面

AI建议的诊断结果

![AI推荐的治疗方案]( https://imgapi.imooc.com/f9bf3e680919cdc008000662.jpg )

4. 管理员:管理生态系统(不越界干预)
管理员可以做到:

  • 查看所有用户和病例信息
  • 重新指派医生
  • 更新病例情况

但是请注意:管理员不能修改诊断信息或治疗信息字段。此安全保护措施通过在 Permit.io 平台上使用 ABAC 策略规则来确保。

管理面板

管理员查看医学病例

5. 基于角色的用户界面
每个用户角色对应一个不同的界面:

  • 患者: 只能查看自己的病例及其对应的AI回复。
  • 医生: 只能编辑自己负责的病例的AI回复。
  • 管理员: 具有完全查看权限,但写入权限有限。

每次在涉及敏感信息的操作之前,Permit.io 的检查都会通过自定义中间件运行。

    // 中间件权限检查
    const 允许;
    if (资源 === 角色映射表.Patient || 资源 === 角色映射表.Doctor) {
      允许 = await permitInstance.check(decoded._id.toString(), 
          操作, {
              类型: "users",
              属性: {
                角色: 资源,
              },
            });
    } else {
      允许 = await permitInstance.check(
          decoded._id.toString(),
          操作,
          资源
      );
    }

    检查权限函数("create", "medical_test")

切换到/退出全屏

6. 边缘情况及安全防范

  • 如果AI诊断失败的话,医生会被提示进行手动诊断。
  • 患者不能重新编辑病例。
  • 未经授权的访问会从后台触发403拒绝访问。

AI回复的图片链接

我的旅途

这个想法源于健康科技领域中人工智能使用的增加,以及确保AI在系统设计中不越界的重要性。我想探讨:

  1. 人工智能可以提出治疗建议,但最终的决定权还是留给人类。
  2. 我们如何通过访问策略控制AI的回复
  3. 如何确保一个真正的应用程序能够让患者看不到未经批准的AI内容,同时防止管理员更改诊断结果?

我将Permit.io探索为一个完美的ABAC解决方案。它允许我外部定义策略的同时保持代码的干净和可扩展性。最大的挑战在于让Permit和AI逻辑顺畅地交流,但是一旦我将权限模块化(创建了protectcheckPermission中间件),一切就都顺利起来了。

通过 Permit.io 授权使用 AI 应用程序

这个项目展示了在医疗领域的AI权限管理的实际演示:

  • 患者 可以提交症状并仅查看 仅由医生批准的人工智能结果
  • 医生 可以审查、批准或修改 人工智能生成的诊断和治疗建议
  • 管理员 可以管理用户和分配权限,但 无法访问人工智能数据 — 这是一种以治理为先的设计。

Permit.io 如何帮助了我们

或者简单地说:### Permit.io 如何帮助

  • 使用了 Permit.io 的 ABAC 模型,并定义了资源级别的权限(例如 usersmedical_cases)。
  • 定义了角色(例如 patientdoctoradmin),并强制执行了如 readupdateapprove 等操作。
  • 添加了 checkPermission("update", "medical_case") 中间件来保护与 AI 相关的接口。

通过将AI生成与用户访问分离,并用由Permit.io驱动的访问控制门(access gates)将其包裹起来,该应用展示了AI如何在不受监控的情况下保持有用。

特别感谢大家:

特别感谢 Permit.io 建立了一个开发者友好的访问控制系统,并且组织了这次黑客马拉松!

由 Suman Kumar 用心打造
[MCP]: Model Context Protocol
[LLM]: Large Language Model
[RAG]: Retrieval 增强生成
[SSE]: Server-Sent Events

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消