我有一个名为 MedicalFile 的资产,其中包含对组织的引用。参与者 HealthCareProfessional 也属于一个组织。
现在我想定义一个 ACL 规则,限制医疗保健专业人员只能查看 MedicalFile 与其组织连接的医疗文件。
我想出了以下规则:
rule OrganisationMedicalFilePermission {
description: "An organisation may updates a medical file which they have permission from"
participant(h): "nl.epd.blockchain.HealthCareProfessional"
operation: ALL
resource(m): "nl.epd.blockchain.MedicalFile"
condition: (m.organisations.includes(h.organisation))
action: ALLOW
}
当我使用 Loopback 调用 RESTful API 时,这会导致一个空数组。我已获得医疗保健专业人员认证。
资产及参与者:
asset Organisation identified by id {
o String id
o String name
o String city
o String zipCode
o String street
o String houseNumber
o String houseNumberExtra optional
o OrganisationType organisationType
}
asset MedicalFile identified by bsn {
o String bsn
--> Patient owner
--> Patient[] mentors optional
--> Organisation[] organisations optional
o Visit[] visits optional
o String[] allergies optional
o Treatment[] treatments optional
o Medicine[] medicine optional
}
participant HealthCareProfessional identified by bsn {
o String bsn
o String firstName
o String namePrefix optional
o String lastName
--> Organisation organisation
}
我的问题是是否可以创造一个条件来验证这个问题。如果没有,我有什么选择?
这是一个好问题;下面有一个更新的 ACL,我已经使用它进行了测试网上游乐场.
这是更新后的规则:
rule LimitAccess {
description: "An organisation may updates a medical file which they have permission from"
participant(h): "nl.epd.blockchain.HealthCareProfessional"
operation: ALL
resource(m): "nl.epd.blockchain.MedicalFile"
condition: (
m.organisations.some(function (organisation) {
return organisation.getIdentifier() === h.organisation.getIdentifier();
} )
)
action: ALLOW
}
The some
函数是扫描关系数组的关键部分。还要注意使用getIdentifier()
函数,而不是尝试直接访问标识符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)