《Fabric 云存储的电子健康病历系统》(3)病历结构体API

《Fabric 云存储的电子健康病历系统》(3)病历结构体API_第1张图片

1. IPMR初始化患者病历

IPMR 初始化患者病历接口通过 initRecords()方法实现,根据接口传入的病历信息完成病历初始化并将病历 Records 记录到账本中。

  • 5 个参数:病历 ID,病历名、文件路径、拥有者和数字摘要信息;
  • 处理过程:
    step1. 读取参数后根据 stub.GetState()进行检索,假如同ID 病历已经存在则返回 Error 信息;
    step2. 创建 Records 类型变量并赋值,使用 json.Marshal()方法将新建变量序列化并写入 JSON 格式
    step3. 因自定义格式的变量需要序列化之后才能写入账本,同理,取出过程需要进行反序列化操作;
    step4. 调用 stub.PutState()将 JSON数组写入账本,并设定 recordsid 为键值存储

《Fabric 云存储的电子健康病历系统》(3)病历结构体API_第2张图片

2. QDPMR 患者病历查询接口

通过 getQueryResult()方法实现,该方法通过患者名查询患者的所有病历 Records,将病历 Records 写入 buffer 数组后结束。

  • 参数:患者名
  • 处理过程:
    step1. 执行富查询(rich search)返回 JSON 数组
    step2. 构造迭代器遍历返回数组,对 JSON数组进行解析并以键值对的形式将 key 和 value 写入 buffer 数组;
    step3. 返回buffer 数组即为指定患者的所有病历记录

《Fabric 云存储的电子健康病历系统》(3)病历结构体API_第3张图片

3. PRT 接口

PRT 患者病历交易接口可以用于修改病历的 Owner 属性,即对病历文件进行交易,传入病历 ID 和新的 Owner 名,由 changeRecordsOwner()函数实现。

  • 参数:病历 ID 和拥有者名称。
  • 处理过程:
    step1. 通过执行stub.GetState()函数取得账本的当前病历 ID 的信息 records;
    step2. 接下来将 records 反序列化为 Records 类型,使用json.unmarshal()方法进行,同时修改 Records 对象中的 Owner 参数
    step3. 将结构体对象再次序列化为JSON 格式并写入账本。
    《Fabric 云存储的电子健康病历系统》(3)病历结构体API_第4张图片

4. SPMR 查询患者病历接口

用于使用病历 ID 在账本中查询病历 Records 信息。

通过 getRecordsInfoByID()函数实现

  • 参数:病历 ID 参数。
  • 调用stub.GetState()函数判断账本中是否存在对应 ID 的病历信息,存在则返回病历 Records信息,否则提示病历不存在信息。

5. DPMR 删除患者病历接口

使用病历 ID 在账本中查找并删除病历信息,通过deleteRecordsByID()函数实现。

  • 参数:recordsID 参数。
  • 通过 stub.GetState()方法判断账本中是否存在对相应病历 ID 的信息,存在则通过 stub.DelState()方法删除账本中的记录

参考:
【1】“基于Hyperledger Fabric和云存储的电子健康病历系统的研究与实现”.西安电子科技大学.杨洲 2019.6

你可能感兴趣的:(Hyperledger,Fabric)