首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >坚持决定智能合同项目的工作

坚持决定智能合同项目的工作
EN

Stack Overflow用户
提问于 2022-04-20 17:46:04
回答 1查看 43关注 0票数 0

所以我正在做一个项目,在智能合同的帮助下,基本完成医疗保险索赔过程。它的工作原理是:

  1. 用户注册到保险公司运营的网站上。
  2. 通过输入相关医院、保险金额和包含待核实账单的pdf文件提出索赔。
  3. 医院利用该网站根据提供的信息批准/拒绝索赔。保险公司
  4. 根据提供的信息使用该网站批准/拒绝索赔。
  5. 任何人提交、批准/拒绝、支付索赔时,都会发出事件。H 210G 211

这是我的第一个ethereum/solidity项目,我想不出如何把它整合在一起。

这是一项索赔的结构:

代码语言:javascript
复制
struct Record {
        uint id; // unique id for the record
        address patientAddr;
        address hospitalAddr;
        string billId; // points to the pdf stored somewhere
        uint amount; 
        mapping (address => RecordStatus) status; // status of the record
        bool isValid; // variable to check if record has already been created or not
    }

我的一些问题是:

  1. 如何将记录链接到特定用户?由于一个用户可以使用多个元钱包。
  2. 是否可以用id获取与特定记录链接的所有事件,这样我就可以向用户显示与记录一起发生的所有审批/拒绝?
  3. 用于医院,是否有更好的方法获取关联记录,而不是从智能合同中获取所有记录,然后在前端过滤?

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-20 21:15:00

要将记录链接到特定用户,需要添加如下所示的映射(我假设您有一个用户ID):

代码语言:javascript
复制
mapping(uint => Record[]) recordsByUserID;

然后,您将能够通过以下方法获得知道用户id的记录数组:

代码语言:javascript
复制
Records userRecords[] = recordsByUserID[user_id];

关于事件日志,它实际上有点简单,因为我们有indexed关键字,让我向您展示一个示例:

代码语言:javascript
复制
event Approved(uint indexed userId, uint indexed recordId);

使用这样的事件,您可以使用用户id和记录id查询所有事件。

关于第三个问题,我建议您使用图形https://thegraph.com/en/。它基本上是通过以非常简单的方式为所有事件建立索引来创建您自己的GraphQL后端。然后,您可以运行您的graphql查询,并使之高效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71944044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档