两个 FHIR 服务器之间的资源标识符
Resource Identifiers between two FHIR servers
我们的场景是有一个 EHR 系统正在与使用 FHIR 的设备传感器合作伙伴集成。在这种情况下,两家公司都将拥有独立的 FHIR 服务器。他们每个人都有不同的患者和组织记录,并带有自己的标识符。首选项是传感器 FHIR 服务器将 EHR 标识符映射到它自己的这些资源内部标识符
EHR 想要将患者分配给带有传感器 FHIR 服务器的设备。
第 1 步:首先,EHR 将 @GET 给定组织的设备资源列表,其中当前未从传感器 FHIR 服务器分配患者,例如
/api/Device?organization.identifier=xyz&patient:missing=true
这里我假设组织标识符是 EHR 系统的组织标识符,因为此时 EHR 系统不知道传感器系统组织标识符。
此呼叫的回复将是一组设备:
...剪断...
"owner": {
"reference": "http://sensor-server.com/api/Organization/3"
},
...剪断...
问题 2:所有者组织引用是否具有来自搜索的标识符或传感器 FHIR 服务器已知的 internal/logical ID,如上面的代码片段所示?
第 2 步:EHR 系统的临床医生从列表中选择一个设备,将其分配给 EHR 系统中的患者
第 3 步:EHR 系统现在将向传感器 FHIR 服务器发出 @PUT /api/Device/{id} 请求,以将患者资源分配给设备资源,例如
{
"resourceType": "Device",
"owner": {
"reference": "http://sensor-server.com/api/Organization/3"
},
"id": "b4994c31f906",
"patient": {
"reference": "https://ehr-server.com/api/Patient/4754475"
},
"identifier": [
{
"use": "official",
"system": "bluetooth",
"value": "b4:99:4c:31:f9:06",
"label": "Bluetooth address"
}
]
}
问题 3:患者资源应该使用什么资源 URI/identifier?我假设它是 EHR 系统的,因为 EHR 系统不知道传感器系统患者标识符。但是请注意,组织引用是对传感器 FHIR 服务器中的 URI,而患者引用是对 EHR 系统的 URI——这听起来很有趣。
第 4 步:EHR 可以在传感器 FHIR 服务器上发出 @GET /api/Device/{id} 并取回设备资源,例如
{
"resourceType": "Device",
"owner": {
"reference": "http://sensor-server.com/api/Organization/3"
},
"id": "b4994c31f906",
"patient": {
"reference": "https://sensor-server.com/api/Patient/abcdefg"
},
"identifier": [
{
"use": "official",
"system": "bluetooth",
"value": "b4:99:4c:31:f9:06",
"label": "Bluetooth address"
}
]
}
问题 4:我们是否希望看到对包含 EHR FHIR 服务器绝对 URI 的患者的引用(因为它在步骤 3 中的@PUT 上)或 would/could 传感器 FHIR 服务器有将其修改为 return 使用其内部逻辑 ID 对其 FHIR 服务器中资源的引用?
我没有看到问题 1,所以我假设它是第一个示例前面的 "assume" 句子。如果 EHR 正在查询设备传感器服务器并且设备传感器服务器上的组织包括 EHR 已知的业务标识符,那么这是合理的。不过,您需要某种业务流程来确保发生这种情况。
问题 2:设备所有者元素将使用资源引用,这意味着它指向目标组织的 "id" 元素。将资源 ID 视为主键。它们通常由存储数据的服务器分配,但在某些体系结构中,它们可以由客户端设置(客户端使用 PUT 而不是 POST 创建记录)。在任何情况下,您都不能指望它们是有意义的业务标识符 - 根据大多数数据存储最佳实践,它们通常不应该是。如果如我所料,您的场景涉及多个可能与 "device" 服务器通信的 EHR 客户端,则资源 ID 不可能与所有 EHR 的业务 ID 一致。 (这是说“不 'xyz' 可能不会是 '3' 的很长的路要走)
问题 3:如果 EHR 有自己的服务器,EHR 客户端 可以 更新 "sensor" 服务器上的设备以指向 URL在 EHR 服务器上。这是否合适取决于您的架构。如果您希望其他 EHR 识别患者,那么您可能希望 "sensor" 服务器也托管患者,并让 EHR 通过业务 ID 查找患者,然后引用 "sensor" 服务器的 URL。如果不是,那么指向 EHR 服务器的 URL 就可以了。
问题 4:当您执行 "GET" 时,收到您在 POST 上指定的相同数据是正常的。服务器更改数据(包括可能更新引用)是合法。但这可能会混淆很多客户端系统,因此通常不推荐也不典型。
我们的场景是有一个 EHR 系统正在与使用 FHIR 的设备传感器合作伙伴集成。在这种情况下,两家公司都将拥有独立的 FHIR 服务器。他们每个人都有不同的患者和组织记录,并带有自己的标识符。首选项是传感器 FHIR 服务器将 EHR 标识符映射到它自己的这些资源内部标识符
EHR 想要将患者分配给带有传感器 FHIR 服务器的设备。
第 1 步:首先,EHR 将 @GET 给定组织的设备资源列表,其中当前未从传感器 FHIR 服务器分配患者,例如
/api/Device?organization.identifier=xyz&patient:missing=true
这里我假设组织标识符是 EHR 系统的组织标识符,因为此时 EHR 系统不知道传感器系统组织标识符。
此呼叫的回复将是一组设备:
...剪断...
"owner": {
"reference": "http://sensor-server.com/api/Organization/3"
},
...剪断...
问题 2:所有者组织引用是否具有来自搜索的标识符或传感器 FHIR 服务器已知的 internal/logical ID,如上面的代码片段所示?
第 2 步:EHR 系统的临床医生从列表中选择一个设备,将其分配给 EHR 系统中的患者
第 3 步:EHR 系统现在将向传感器 FHIR 服务器发出 @PUT /api/Device/{id} 请求,以将患者资源分配给设备资源,例如
{
"resourceType": "Device",
"owner": {
"reference": "http://sensor-server.com/api/Organization/3"
},
"id": "b4994c31f906",
"patient": {
"reference": "https://ehr-server.com/api/Patient/4754475"
},
"identifier": [
{
"use": "official",
"system": "bluetooth",
"value": "b4:99:4c:31:f9:06",
"label": "Bluetooth address"
}
]
}
问题 3:患者资源应该使用什么资源 URI/identifier?我假设它是 EHR 系统的,因为 EHR 系统不知道传感器系统患者标识符。但是请注意,组织引用是对传感器 FHIR 服务器中的 URI,而患者引用是对 EHR 系统的 URI——这听起来很有趣。
第 4 步:EHR 可以在传感器 FHIR 服务器上发出 @GET /api/Device/{id} 并取回设备资源,例如
{
"resourceType": "Device",
"owner": {
"reference": "http://sensor-server.com/api/Organization/3"
},
"id": "b4994c31f906",
"patient": {
"reference": "https://sensor-server.com/api/Patient/abcdefg"
},
"identifier": [
{
"use": "official",
"system": "bluetooth",
"value": "b4:99:4c:31:f9:06",
"label": "Bluetooth address"
}
]
}
问题 4:我们是否希望看到对包含 EHR FHIR 服务器绝对 URI 的患者的引用(因为它在步骤 3 中的@PUT 上)或 would/could 传感器 FHIR 服务器有将其修改为 return 使用其内部逻辑 ID 对其 FHIR 服务器中资源的引用?
我没有看到问题 1,所以我假设它是第一个示例前面的 "assume" 句子。如果 EHR 正在查询设备传感器服务器并且设备传感器服务器上的组织包括 EHR 已知的业务标识符,那么这是合理的。不过,您需要某种业务流程来确保发生这种情况。
问题 2:设备所有者元素将使用资源引用,这意味着它指向目标组织的 "id" 元素。将资源 ID 视为主键。它们通常由存储数据的服务器分配,但在某些体系结构中,它们可以由客户端设置(客户端使用 PUT 而不是 POST 创建记录)。在任何情况下,您都不能指望它们是有意义的业务标识符 - 根据大多数数据存储最佳实践,它们通常不应该是。如果如我所料,您的场景涉及多个可能与 "device" 服务器通信的 EHR 客户端,则资源 ID 不可能与所有 EHR 的业务 ID 一致。 (这是说“不 'xyz' 可能不会是 '3' 的很长的路要走)
问题 3:如果 EHR 有自己的服务器,EHR 客户端 可以 更新 "sensor" 服务器上的设备以指向 URL在 EHR 服务器上。这是否合适取决于您的架构。如果您希望其他 EHR 识别患者,那么您可能希望 "sensor" 服务器也托管患者,并让 EHR 通过业务 ID 查找患者,然后引用 "sensor" 服务器的 URL。如果不是,那么指向 EHR 服务器的 URL 就可以了。
问题 4:当您执行 "GET" 时,收到您在 POST 上指定的相同数据是正常的。服务器更改数据(包括可能更新引用)是合法。但这可能会混淆很多客户端系统,因此通常不推荐也不典型。