# 機構與家戶組織、人員、裝置管理(權限及資安: R2)
## 病人資料應用情境
https://mos2718.github.io/MITW/2020/patient.html
## 分層管理概念
- 多層組織,由子組織自行管理其人員異動。避免根組織管理全部人員異動造成的不便
- 個人可自行更新其基本資料及所屬裝置
## 定義腳色及其可用功能(依據應用情境),如:
- 機構組織管理人、醫師、護士、個管人員、老師、學生等
-- 可分單位腳色(如**醫院開刀房醫師)及通用腳色(如醫師、老師、同學)
-- Patient portal 僅註冊服務人員,其他使用者可匿名(用帳號、密碼、email、憑證等資訊做身分驗證)
- 機構組織管理人可增修刪查機構所屬人員及其子組織,並設定其腳色
- 機構設備管理人可增修刪查機構所屬裝置(含其 IP 及 MAC address)
- 個人可增修刪查其所屬裝置、設定登入密碼、及申請憑證
- 個人可增、修、刪其聯絡資訊
- 個人可設定其職位代理人
## 建立分層管理組織
1. 建立根組織及其管理人員(跳過 gateway,由系統管理員直接在本機設定)
2. 父組織管理人員建立子組織及其管理人員
4. 子組織管理人員新增所屬人員、腳色、及孫組織
5. 組織及人員更新其密碼、基本資料、及使用的裝置
## 建立雲端醫護所需組織、人員、裝置
- 註冊服務機構、系統、及服務窗口人員(非服務人員,不須建資料)
- 註冊民眾(含家戶)組織、人員、及所屬裝置(考慮隱私,名眾可假名建資料)
## 新增組織所屬人員
- 新增人員 ID 及帳號: Person
- 新增專業腳色: Practitioner
- 新增組織所屬人員
## Portal 存取控制情境
- 機構組織管理人可增修刪查機構所屬人員及其子組織,並設定其腳色
1. 管理人新增子組織
## Portal 人員、組織、裝置、地點管理(含組織中人員權限管控)
- 機構組織管理人可增修刪查機構所屬人員及其子組織,並設定其腳色
1. 管理人新增子組織
```json
// 新增子組織
{"verb":"POST" ,
"User": {"reference":"PractitionerRole/PRid" },
"clientSystems":[{"reference": "Device/Did" }],
"constraint": [{"resourceName": "Organization",
"partOf" = "Organization/parentOrgID" }] }
```
- PractitionerRole, Devices 需先在 portal 註冊
- 並授權,以產生上述資訊. 記錄在 FHIR conscent 當中?
- 使用者使用其所屬 client 系統登入 portal,需驗證使用者及其裝置
- 傳入使用者 及 client 系統 ID,驗證用對應公鑰驗章、或 share key 驗 HMAC
- 公鑰或 share key 可存放在 FHIR person and Device 當中
- PractitionerRole.practitioner
- 檢查參考之 PractitionerRole.practitioner 是否在 login person.link.target 當中
- 檢查目前使用的系統是否在參考之 Device 當中
- 檢查 post organization.partOF 之父組織是否與上述授權檔相同
```json
// 更新子組織
{"verb":"UPDATE" ,
"User": {"reference": "PractitionerRole/PRid" },
"clientSystems":[{"reference": "Device/Did" }],
"constraint": [{"resourceName": "Organization",
"partOf" = "Organization/parentOrgID" }] }
```
```json
// 刪除子組織
{"verb":"DELETE" ,
"User": {"reference": "PractitionerRole/PRid" },
"clientSystems":[{"reference": "Device/Did" }],
"constraint": [{"resourceName" : "Organization",
"partOf" = "Organization/parentOrgID" }] }
```
- 查詢子組織
-- Get RootURL/Organization?partOf=parentOrgID
```json
// 新增子組織
{verb:"POST" ,
PractitionerRole: {"code":"orgManager",
organization: "Organization/parentOrgID",
period : "period": {
"start": "2012-01-01",
"end": "2012-03-31"
}, {star= 2022-01-01}
}
"Devices":[,],
constraint: [{resourceName: "Organization",
partOf = "Organization/parentOrgID" }] }
```
```json
// 新增子組織
{"verb":"POST" ,
"User": {"reference": "PractitionerRole/PRid" },
"clientSystems":[{"reference": "Device/Did" }],
"constraint": [{"resourceName": "Organization",
"partOf" = "Organization/parentOrgID" }] }
```
- PractitionerRole, Devices 需先在 portal 註冊
- 並授權,以產生上述資訊. 記錄在 FHIR conscent 當中?
- 使用者使用其所屬 client 系統登入 portal,需驗證使用者及其裝置
- 傳入使用者 及 client 系統 ID,驗證用對應公鑰驗章、或 share key 驗 HMAC
- 公鑰或 share key 可存放在 FHIR person and Device 當中
- PractitionerRole.practitioner
- 檢查參考之 PractitionerRole.practitioner 是否在 login person.link.target 當中
- 檢查目前使用的系統是否在參考之 Device 當中
- 檢查 post organization.partOF 之父組織是否與上述授權檔相同
```json
// 更新子組織
{"verb":"UPDATE" ,
"User": {"reference": "PractitionerRole/PRid" },
"clientSystems":[{"reference": "Device/Did" }],
"constraint": [{"resourceName": "Organization",
"partOf" = "Organization/parentOrgID" }] }
```
```json
// 刪除子組織
{"verb":"DELETE" ,
"User": {"reference": "PractitionerRole/PRid" },
"clientSystems":[{"reference": "Device/Did" }],
"constraint": [{"resourceName" : "Organization",
"partOf" = "Organization/parentOrgID" }] }
```
- 查詢子組織
-- Get RootURL/Organization?partOf=parentOrgID