刪除 FHIR 資源 - AWS HealthLake

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

刪除 FHIR 資源

FHIR delete互動會從 HealthLake 資料存放區移除現有的 FHIR 資源。如需詳細資訊,請參閱 FHIR R4 RESTful API 文件delete中的 。

刪除 FHIR 資源

  1. 收集 HealthLake regiondatastoreId 值。如需詳細資訊,請參閱取得資料存放區屬性

  2. 決定Resource要刪除的 FHIR 類型,並收集相關聯的id值。如需詳細資訊,請參閱資源類型

  3. 使用 HealthLake region和 的收集值來建構請求的 URLdatastoreId。同時包含 FHIR Resource類型及其相關聯的 id。若要在下列範例中檢視整個 URL 路徑,請捲動至複製按鈕。

    DELETE https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Resource/id
  4. 傳送 請求。FHIR delete互動使用具有AWS 簽章第 4 版或 FHIR 授權上的 SMART 的DELETE請求。下列curl範例會從 HealthLake 資料存放區移除現有的 FHIR Patient 資源。若要檢視整個範例,請捲動至複製按鈕。

    SigV4

    SigV4 授權

    curl --request DELETE \ 'https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient/id' \ --aws-sigv4 'aws:amz:region:healthlake' \ --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \ --header "x-amz-security-token:$AWS_SESSION_TOKEN" \ --header 'Accept: application/json'

    伺服器會傳回 204 HTTP 狀態碼,確認已從 HealthLake 資料存放區中移除資源。如果刪除請求失敗,您將收到400一系列 HTTP 狀態碼,指出請求失敗的原因。

    SMART on FHIR

    IdentityProviderConfiguration 資料類型的 FHIR 上的 SMART 授權範例。

    { "AuthorizationStrategy": "SMART_ON_FHIR", "FineGrainedAuthorizationEnabled": true, "IdpLambdaArn": "arn:aws:lambda:your-region:your-account-id:function:your-lambda-name", "Metadata": "{\"issuer\":\"https://ehr.example.com\", \"jwks_uri\":\"https://ehr.example.com/.well-known/jwks.json\",\"authorization_endpoint\":\"https://ehr.example.com/auth/authorize\",\"token_endpoint\":\"https://ehr.token.com/auth/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_basic\",\"foo\"],\"grant_types_supported\":[\"client_credential\",\"foo\"],\"registration_endpoint\":\"https://ehr.example.com/auth/register\",\"scopes_supported\":[\"openId\",\"profile\",\"launch\"],\"response_types_supported\":[\"code\"],\"management_endpoint\":\"https://ehr.example.com/user/manage\",\"introspection_endpoint\":\"https://ehr.example.com/user/introspect\",\"revocation_endpoint\":\"https://ehr.example.com/user/revoke\",\"code_challenge_methods_supported\":[\"S256\"],\"capabilities\":[\"launch-ehr\",\"sso-openid-connect\",\"client-public\",\"permission-v2\"]}" }

    發起人可以在授權 lambda 中指派許可。如需詳細資訊,請參閱OAuth 2.0 範圍

    AWS Console

    1. 登入 HealthLake 主控台上的執行查詢頁面。

    2. 在查詢設定區段下,進行下列選擇。

    • 資料存放區 ID — 選擇資料存放區 ID 以產生查詢字串。

    • 查詢類型 — 選擇 Delete

    • 資源類型 — 選擇要刪除的 FHIR 資源類型

    • 資源 ID — 輸入 FHIR 資源 ID。

    3. 選擇 Run query (執行查詢)。

根據條件刪除 FHIR 資源

當您不知道特定 FHIR 資源 ID,但具有您要刪除之資源的其他識別資訊時,條件式刪除特別有用。

條件式刪除可讓您根據搜尋條件而非邏輯 FHIR ID 刪除現有資源。當伺服器處理刪除請求時,它會使用資源類型的標準搜尋功能執行搜尋,以解析請求的單一邏輯 ID。

條件式刪除的運作方式

伺服器的動作取決於找到多少相符項目:

  1. 沒有相符項目:伺服器嘗試一般刪除並適當回應 (404 找不到不存在的資源,204 找不到已刪除資源的內容)

  2. 一個相符項目:伺服器會對相符的資源執行一般刪除

  3. 多個相符項目:傳回 412 先決條件失敗錯誤,指出用戶端的條件不夠選擇性

回應案例

AWS HealthLake 使用以下回應模式處理條件式刪除操作:

成功的操作

  • 當您的搜尋條件成功識別單一作用中資源時,系統會在完成刪除後傳回 204 無內容,就像標準刪除操作一樣。

以 ID 為基礎的條件式刪除

根據 id 和其他參數 (createdAttag_lastUpdated) 執行條件式刪除時:

  • 204 無內容:資源已刪除

  • 找不到 404:資源不存在

  • 409 衝突:ID 相符,但其他參數不相符

Non-ID-Based條件式刪除

id 未提供 或使用 createdAttag或 以外的參數時_lastUpdated

  • 找不到 404:找不到相符項目

衝突情況

數個案例會產生 412 先決條件失敗回應:

  • 多個資源符合您的搜尋條件 (條件不夠具體)

  • 搭配 使用 ETag 標頭時的版本衝突 If-Match

  • 在搜尋和刪除操作之間發生資源更新

成功條件式刪除的範例

下列範例會根據特定條件刪除病患資源:

DELETE https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Patient?name=peter&birthdate=2000-01-01&phone=1234567890

此請求會刪除病患資源,其中:

  • 名稱為「peter」

  • 出生日期是 2000 年 1 月 1 日

  • 電話號碼為 1234567890

最佳實務

  1. 使用特定的搜尋條件來避免多個相符項目,並防止 412 錯誤。

  2. 需要處理並行修改時,請考慮使用版本控制的 ETag 標頭。

  3. 適當地處理錯誤回應:

    • 對於 404:精簡您的搜尋條件

    • 對於 412:讓條件更具體或解決版本衝突

  4. 準備在高並行環境中的時間衝突,其中可能會在搜尋和刪除操作之間修改資源。