臺灣長期照顧實作指引(TW LTC IG)
1.0.0 - STU 1.0.0
臺灣長期照顧實作指引(TW LTC IG), published by 經濟部產業發展署. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/Lorex/TWLongTermCare_IG_Build/ and changes regularly. See the Directory of published versions
本模組對應《衛生福利部 支付審核系統 API 規格說明書(照管平台)v2.2.1》,將長照服務提供單位(含系統商)與衛生福利部支付審核系統(以下簡稱支審系統)之間的申報與審查介接,以 HL7 FHIR R4.0.1 標準重新表達,供實作者以 FHIR 資源進行支付審查相關的資料交換。
本模組的設計原則比照臺灣健保事前審查實作指引(TWPAS)的作法,採「先建邏輯模型、再對應 FHIR 資源」的兩階段路徑:
apply_info、case_svc_records、查詢 A/查詢 B 之回覆明細等),逐欄轉為 FHIR Logical Model,保留規格書原有的中文欄位名稱、英文欄位名稱、型態、長度與必填規則,讓熟悉原規格書的實作者可直接對照閱讀。Mapping,指出各欄位實際落到哪一個 Profile 的哪一個 element;再以 Bundle 打包申報交易、以 ClaimResponse 與 Task 表達審查回覆與交易處理結果。採用此路徑的理由是:支審系統的電文結構是既成事實,短期內不會為了 FHIR 而改動;邏輯模型讓「規格書欄位」與「FHIR element」之間保有一層可追溯的對照,既不必扭曲原規格書的欄位語意,也不必在 FHIR 端新增大量非標準的 Extension。實作者可先以邏輯模型確認資料齊備,再依 Mapping 頁籤將資料落入對應 Profile。
本模組於申報端(Claim、Task)的所有識別碼(服務紀錄識別碼 objid、交易序號 trans_no、支審年月 writeoff_yyyymm、核銷案號 case_no、總表版次 doc_ver、簽證編號 acc_num)一律以 identifier 的具名切片(slice)承載,並以 identifier.system 區分,不另行新增 Extension。審查回覆端(ClaimResponse)因 ClaimResponse.item、error、addItem 三個 BackboneElement 於 FHIR R4 均無 identifier 元素,其逐筆服務記錄之識別資訊須以 Extension 承載,詳見下方「設計決策說明」第五節。
規格書共定義七支 API,依業務流程可分為三個階段:申報(FeeApply、ObjDel、appCompletionNotice)、查詢(查詢 A、查詢 B) 與 異動(appCancel、CancelResultResponse)。
FeeApply,每個交易序號每次最多申報 5,000 筆個案服務紀錄。每筆服務紀錄具唯一識別碼(objid);識別碼不存在時於支審系統新增,已存在時則更新。ObjDel 針對 objid 刪除。appCompletionNotice,依案件編號通知縣市承辦人員收件審查。執行後支審系統不再受理該案件之服務紀錄申報及異動。appCancel 撤回本月該來源系統別所申報之服務紀錄;未傳入縣市代碼與核銷案號時為整月全撤,傳入時則限定該核銷案號。承辦人已收件處理者不允許撤回。CancelResultResponse 取消查詢 A 之 API 執行結果資料中某一交易單的處理結果回報。| # | API(URL) | 中文名稱 | 方向 | 傳送資料之 FHIR 表達 | 回覆明細之 FHIR 表達 |
|---|---|---|---|---|---|
| 一 | ……/FeeApply |
服務記錄申報 | 單位 → 支審 | LTCBundleFeeApply(內含多筆 LTCClaimFeeApply) | 無回覆明細;檢核錯誤以 LTCOperationOutcomeFeeAudit 表達 |
| 二 | ……/ObjDel |
服務紀錄刪除 | 單位 → 支審 | LTCTaskFeeAudit(code = ObjDel,input[objid] 逐筆列出要刪除之識別碼) |
無回覆明細 |
| 三 | ……/appCompletionNotice |
申報確認通知 | 單位 → 支審 | LTCTaskFeeAudit(code = appCompletionNotice,input[cityCd]、input[caseNo]) |
無回覆明細 |
| 四 | ……/appResultQuery(query_type = A) |
(查詢A)服務單位各分案審核狀態查詢 | 單位 → 支審 | 查詢參數:支審年月、交易序號、查詢類別 | LTCBundleFeeAuditStatus(內含 LTCTaskFeeAudit 與 LTCOperationOutcomeFeeAudit) |
| 五 | ……/appResultQuery(query_type = B) |
(查詢B)分案審核明細查詢 | 單位 → 支審 | 查詢參數:支審年月、交易序號、查詢類別、縣市代碼、核銷案號 | LTCBundleFeeAuditResponse(內含 LTCClaimResponseFeeAudit 與 LTCOperationOutcomeFeeAudit) |
| 六 | ……/appCancel |
撤回服務記錄 | 單位 → 支審 | LTCTaskFeeAudit(code = appCancel,選填 input[cityCd]、input[caseNo]) |
無回覆明細 |
| 七 | ……/CancelResultResponse |
取消交易單處理結果回報 | 單位 → 支審 | LTCTaskFeeAudit(code = CancelResultResponse,input[cancelTransNo],並以 partOf 參照原交易單) |
無回覆明細 |
七支 API 共用的傳輸封套(unitNo、requestDt、sourceSystem、apdata、checksum)與回覆封套(rtncode、responseDt、errmsg、result、checksum、rtnSeq)屬傳輸層機制,於本 IG 中不另建 FHIR 資源表達;rtncode 之取值另建 支付審查-API 回覆結果代碼,供實作者於傳輸層對照使用。
| API/區段 | 規格書欄位 | FHIR 資源與欄位 | 本 IG Profile |
|---|---|---|---|
| FeeApply/apply_info | 支審年月 writeoff_yyyymm |
Claim.identifier[yyyymm].value |
LTCClaimFeeApply |
| FeeApply/apply_info | 交易序號 trans_no |
Bundle.identifier.value;並複寫於 Claim.identifier[transNo].value |
LTCBundleFeeApply、LTCClaimFeeApply |
| FeeApply/apply_info | 服務記錄筆數 records、申請個案數 cases |
由 Bundle.entry 中 Claim 之筆數、不重複 Claim.patient 之數量推得,不另設欄位 |
LTCBundleFeeApply |
| FeeApply/apply_info | 服務紀錄金額 amount(本批次申報總金額) |
由 Bundle.entry 中各 Claim.total 合計推得,不另設欄位 |
LTCBundleFeeApply |
| FeeApply/case_svc_records | 識別碼 objid |
Claim.identifier[objid].value |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 個案身分證字號 idn |
Claim.patient → Patient.identifier |
LTCClaimFeeApply、LTCPatient |
| FeeApply/case_svc_records | 服務日期 svc_dt、起訖時段 start_hh/start_mm/end_hh/end_mm |
Claim.item.servicedPeriod.start/.end |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 照顧組合代碼 gov_item_cd |
Claim.item.productOrService(綁定長照服務項目 ValueSet;A 單位個案管理服務紀錄之 AA00 已收錄於 臺灣長照服務項目代碼,須以 coding 承載方能觸發 invariant ltc-feeaudit-3 之條件必填檢核) |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 服務類別 svc_fee_tp(1 補助、2 自費) |
Claim.item.category |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 單價 price |
Claim.item.unitPrice |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 數量 amount |
Claim.item.quantity |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 該筆服務紀錄之申報金額(單價 × 數量) | Claim.total(另 Claim.item.net 為該筆服務明細之小計) |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 照顧服務員身分證字號 svc_user_no1~svc_user_no5 |
Claim.careTeam.provider → Practitioner.identifier |
LTCClaimFeeApply、LTCPractitioner |
| FeeApply/case_svc_records | 服務提供單位(申報單位) | Claim.provider → Organization |
LTCClaimFeeApply、LTC Organization |
| FeeApply/case_svc_records | 服務項目 svc_item(AA00/AA03 必填,可複選) |
Claim.supportingInfo[svcItem].code |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 服務對象 svc_people(可複選) |
Claim.supportingInfo[svcPeople].code |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 服務重點 svc_point(可複選) |
Claim.supportingInfo[svcPoint].code |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 服務內容 svc_content、追蹤服務適應與介入情形 svc_trace、各項服務目標及整體計畫目標達成情形 svc_goal、整體計畫的適切性及需求異動 svc_suitable |
Claim.supportingInfo[svcContent/svcTrace/svcGoal/svcSuitable].valueString |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 專業服務復能目標達成情形 svcc_goal_type |
Claim.supportingInfo[svccGoalType].code |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 專業服務復能目標 svcc_goal、指導對象 svcc_content_target、服務內容 svcc_content、指導建議摘要 svcc_suggest |
Claim.supportingInfo[svccGoal/svccContentTarget/svccContent/svccSuggest].valueString |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 提供專業服務單位 svc_unit(AA03 必填) |
Claim.supportingInfo[svcUnit].valueString(內容為 C 單位之單位代碼) |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 出發地 addr1、目的地 addr2(BD03/DA01) |
Claim.supportingInfo[addrFrom/addrTo].valueReference → Location(地點名稱/地址置於 Location.name/Location.address) |
LTCClaimFeeApply、LTC Location Fee Audit Place |
| FeeApply/case_svc_records | 出發地/目的地經緯度 addrlat1、addrlng1、addrlat2、addrlng2 |
前述 Location.position.latitude/.longitude |
LTC Location Fee Audit Place |
| FeeApply/case_svc_records | 車號 car_no、駕駛員 driver(BD03/DA01) |
Claim.supportingInfo[carNo/driver].valueString |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 里程數 milage(BD03/DA01 必填) |
Claim.supportingInfo[milage].valueQuantity(建議單位公里 km) |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 社區式服務交通接送服務使用類型 bd03_type(BD03 必填) |
Claim.supportingInfo[bd03Type].code |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 臨終日照顧 last_svc、訪視/服務未遇 missed_visit、陪同施打 COVID-19 疫苗 apply_covid19、是否申報 AA03 apply_aa03、是否申報 AA09 apply_aa09 |
Claim.supportingInfo[lastSvc/missedVisit/applyCovid19/applyAA03/applyAA09].valueBoolean(Y 對應 true、N 對應 false) |
LTCClaimFeeApply |
| FeeApply/case_svc_records | AA10 申報狀態 aa10_status |
Claim.supportingInfo[aa10Status].code |
LTCClaimFeeApply |
| FeeApply/case_svc_records | 備註 remark |
Claim.supportingInfo[remark].valueString |
LTCClaimFeeApply |
| API/區段 | 規格書欄位 | FHIR 資源與欄位 | 本 IG Profile |
|---|---|---|---|
| 查詢B/回覆明細 | 核銷案號 case_no |
ClaimResponse.identifier[caseNo].value |
LTCClaimResponseFeeAudit |
| 查詢B/回覆明細 | 總表版次 doc_ver、版次時間 ver_dt |
ClaimResponse.identifier[docVer].value、ClaimResponse.created |
LTCClaimResponseFeeAudit |
| 查詢B/回覆明細 | 簽證編號 acc_num |
ClaimResponse.identifier[accNum].value |
LTCClaimResponseFeeAudit |
| 查詢B/回覆明細 | 承辦人員 audit_man、承辦審核意見 audit_reason |
ClaimResponse.extension[auditSummary].auditMan、ClaimResponse.disposition(ClaimResponse.requestor 於 FHIR R4 之語意為提出申報之服務提供方,不可用以表達審查機關之承辦人) |
LTCClaimResponseFeeAudit |
| 查詢B/回覆明細 | 服務記錄筆數 records、個案數 cases、核定個案數 approve_case_num、核定服務記錄數 approve_record_count、分案已處理之單號 trans_nos |
ClaimResponse.extension[auditSummary] 之對應子元素 |
分案審核統計與承辦資訊 Extension |
| 查詢B/回覆明細 | 申請核銷金額 amount |
ClaimResponse.total,total.category = submitted |
LTCClaimResponseFeeAudit |
| 查詢B/回覆明細 | 核定金額 approve_fee |
ClaimResponse.total,total.category = approveFee |
LTCClaimResponseFeeAudit |
| 查詢B/回覆明細 | 政策鼓勵金額 a_svc_fee |
ClaimResponse.total,total.category = aSvcFee |
LTCClaimResponseFeeAudit |
| 查詢B/回覆明細 | 核增金額 inc_in_acc |
ClaimResponse.total,total.category = incInAcc;核增原因 inc_in_reason 以 ClaimResponse.processNote.text 表達 |
LTCClaimResponseFeeAudit |
| 查詢B/回覆明細 | 核減金額 dec_in_acc |
ClaimResponse.total,total.category = decInAcc;核減原因 dec_in_reason 以 ClaimResponse.processNote.text 表達 |
LTCClaimResponseFeeAudit |
| 查詢B/回覆明細 | 分案暫付金額 temp_payment_fee、暫付申請狀態 temp_payment_status |
ClaimResponse.total,total.category = tempPaymentFee;狀態以 ClaimResponse.extension[auditSummary].tempPaymentStatus 表達 |
LTCClaimResponseFeeAudit |
| 查詢B/approve_records | 審核通過服務記錄(識別碼 objid、來源系統別 source_system、交易序號 trans_no) |
ClaimResponse.item,識別資訊以 item.extension[recordRef] 承載(item.itemSequence 於 R4 為 positiveInt,僅為本資源內之流水序號) |
LTCClaimResponseFeeAudit、服務記錄識別資訊 Extension |
| 查詢B/approve_records | 單價 price |
ClaimResponse.item.adjudication,category = price |
LTCClaimResponseFeeAudit |
| 查詢B/approve_records | 自付額 copayment |
ClaimResponse.item.adjudication,category = copayment |
LTCClaimResponseFeeAudit |
| 查詢B/a_svc_records | A 碼加成資料區(A 碼 a_gov_item_cd、單價 price、所加成之 ref_objid/ref_source_system) |
ClaimResponse.addItem.productOrService、addItem.adjudication(category = price)、addItem.extension[recordRef] |
LTCClaimResponseFeeAudit、服務記錄識別資訊 Extension |
| 查詢B/err_records | 錯誤服務記錄(識別碼 objid、來源系統別 source_system、交易序號 trans_no、錯誤碼 err_code、錯誤原因 err_message) |
ClaimResponse.error.extension[recordRef]、error.code(綁定支付審查錯誤代碼)、error.code.text |
LTCClaimResponseFeeAudit、服務記錄識別資訊 Extension |
| 查詢B/回覆明細 | 總表/清冊下載路徑 temp_payment_doc_url、case_summary_notice_url、case_svc_list_url、case_svc_list_excel_url、case_a_svc_list_url、case_a_svc_list_excel_url、case_err_list_url、case_err_list_excel_url |
ClaimResponse.extension[docUrl](子元素 docType + url),逐份文件一筆 |
清冊文件下載路徑 Extension |
| 查詢B/回覆明細 | 縣市代碼 city_cd |
ClaimResponse.insurer → 受理本分案之縣市主管機關 |
LTCClaimResponseFeeAudit |
| API/區段 | 規格書欄位 | FHIR 資源與欄位 | 本 IG Profile |
|---|---|---|---|
| 共用 | API Function function(FeeApply、ObjDel、appCompletionNotice、appCancel、CancelResultResponse) |
Task.code |
LTCTaskFeeAudit |
| 共用 | 支審年月 writeoff_yyyymm、交易序號 trans_no |
Task.identifier[yyyymm].value、Task.groupIdentifier.value |
LTCTaskFeeAudit |
| 查詢A/webapi_process_info | API 執行狀態 status(0 待處理、1 處理中、3 錯誤、4 處理完成) |
Task.status(依序對應 requested、in-progress、failed、completed) |
LTCTaskFeeAudit |
| 查詢A/case_infos | 核銷狀況 status(0~6) |
Task.businessStatus |
LTCTaskFeeAudit |
| 查詢A/webapi_process_info | 批次處理結果 batch_proc_result、處理筆數 batch_proc_num、成功筆數 batch_succ_num、失敗筆數 batch_err_num |
Task.output[batchProcResult/batchProcNum/batchSuccNum/batchErrNum] |
LTCTaskFeeAudit |
| 查詢A/webapi_process_info | 分案異常資料 exception_records(objid、err_code、err_message) |
Task.output[exceptionRecords].valueReference → OperationOutcome |
LTCTaskFeeAudit、LTCOperationOutcomeFeeAudit |
| 查詢A/webapi_process_info | 服務紀錄刪除成功資料 delete_records |
Task.output[deleteRecords].valueString(逐筆 objid) |
LTCTaskFeeAudit |
| 查詢A/webapi_process_info | 服務紀錄刪除失敗資料 delete_exception_records |
Task.output[deleteExceptionRecords].valueReference → OperationOutcome |
LTCTaskFeeAudit、LTCOperationOutcomeFeeAudit |
| ObjDel/case_svc_records | 識別碼 objid(要刪除者) |
Task.input[objid].valueString |
LTCTaskFeeAudit |
| appCompletionNotice/city_info | 縣市代碼 city_cd、案件編號 case_no |
Task.input[cityCd].valueString(0..1)、Task.input[caseNo].valueString(0..*)。規格書之 city_info 為「縣市代碼 → case_no_info(多筆案件編號)」之巢狀結構,而 FHIR R4 之 Task.input 不支援巢狀 part,故本 IG 規定一個縣市一筆 Task,涉及多個縣市時依縣市拆分為多筆 Task,各 Task 共用同一交易序號(Task.groupIdentifier) |
LTCTaskFeeAudit |
| appCancel/cancel_info | 縣市代碼 city_cd、核銷案號 case_no(選填) |
Task.input[cityCd].valueString、Task.input[caseNo].valueString |
LTCTaskFeeAudit |
| CancelResultResponse | 所要取消結果回報之交易序號 cancel_trans_no |
Task.input[cancelTransNo].valueString,並以 Task.partOf 參照原交易單 Task |
LTCTaskFeeAudit |
| 共用 | 檢核錯誤代碼 err_code、錯誤原因 err_message |
OperationOutcome.issue.details.coding、issue.details.text |
LTCOperationOutcomeFeeAudit |
本模組以三個層級對應規格書的三種粒度:
trans_no):規格書明訂「每個交易序號每次申報最多 5000 筆個案服務紀錄」,交易序號即是一次申報的批次邊界,也是後續查詢 A 之 API 執行結果、撤回與取消結果回報所依據的單位。FHIR 中最貼近「一次傳輸的資料集合」語意的是 Bundle,故以 LTCBundleFeeApply 承載一次申報交易,並將 trans_no 放在 Bundle.identifier。records(服務記錄筆數)與 cases(申請個案數)為統計值,可由 Bundle 內 Claim 的筆數推得,不另設欄位以避免資料重複與不一致。objid):規格書規定「每筆服務記錄有唯一的識別碼(objid)」,且申報之識別碼不存在時新增、已存在時更新,objid 即是可獨立新增、更新與刪除的最小業務單元。FHIR 的 Claim 正是「向給付方請求費用」的請求資源,一筆服務紀錄即一次請款主張,故以一個 LTCClaimFeeApply 對應一個 objid,並將 Claim.item 收緊為 1..1(一筆服務紀錄僅一個照顧組合代碼)。這樣的粒度使 ObjDel 的刪除、查詢 A 的分案異常回報,以及查詢 B 的逐筆審核結果都能精確指向單一資源。case_no):支審系統的審查作業是以「分案」為單位進行,一個核銷案號涵蓋一個縣市對一家服務單位在一個支審年月的所有服務紀錄,並產出單一份總表、單一組核定金額與清冊。查詢 B 的回覆明細正是以核銷案號為主鍵。故以一個 LTCClaimResponseFeeAudit 對應一個核銷案號,分案層級金額放在 ClaimResponse.total,逐筆服務紀錄的審核結果放在 ClaimResponse.item 與 ClaimResponse.error。需留意的是,Claim 與 ClaimResponse 在此並非一對一:一個核銷案號的 ClaimResponse 會回應多筆 Claim。這與 FHIR 規範相容(ClaimResponse 不強制 request 為必填),且忠實反映支審系統「以分案為審查單位」的實際運作。另因 FHIR R4 基底之 ClaimResponse.patient 為 1..1,Profile 不得放寬基數,故一個涵蓋多位個案的分案,須以代表個案填入 patient,實際個案數由 ClaimResponse.item 逐筆表達。
規格書「表1:支付碼必填欄位一覽表」定義了大量隨照顧組合代碼(gov_item_cd)而異的條件必填欄位:申報 AA00 需填服務項目、服務對象、服務內容;申報 AA03 需填服務項目與提供專業服務單位;申報 BD03、DA01 需填出發地、目的地、車號、里程數;申報 C 碼需填專業服務復能目標相關欄位。這些欄位共約 28 項,若逐一建為 Extension,將產生 28 個非標準的結構定義,且每個都只在特定支付碼下有意義。
FHIR 的 Claim.supportingInfo 正是為此設計的元素——其定義即為「支持此次請款所需的額外資訊,內容隨情境而異」,並提供 category(資訊類別)、code(代碼值)與 value[x](值)三個欄位供結構化承載。採用 supportingInfo 具備下列優點:
category 的代碼系統(支付審查-服務紀錄補充資訊類別)集中管理,新增支付碼時只需擴充 CodeSystem 而不需改動 Profile 結構;category 的多筆 supportingInfo 實例。實作注意事項:FHIR R4 的 Claim.supportingInfo.value[x] 型別僅允許 boolean、string、Quantity、Attachment 與 Reference,不含 CodeableConcept。因此代碼型欄位(服務項目、服務對象、服務重點、專業服務復能目標達成情形、BD03 服務使用類型、AA10 申報狀態)一律以 supportingInfo.code 承載並綁定對應 ValueSet,該切片之 value[x] 則收緊為 0..0 以杜絕歧義。文字型欄位則以 valueString、旗標型欄位以 valueBoolean、地點型欄位以 valueReference 承載。
條件必填規則因隨支付碼而異,無法以基數表達,本 IG 改以四條 severity 為 warning 的 invariant(ltc-feeaudit-1 至 ltc-feeaudit-4)提示實作者,涵蓋 BD03/DA01、BD03、AA00 與 AA03 之必填組合。
查詢 B 回覆的「A 碼加成資料區」(a_svc_records)是審查機關於審核後,針對已通過之服務紀錄另行加計的政策鼓勵給付項目(如 AA05),其特徵是:並非由服務提供單位原申報,而是由給付方在審核階段新增的給付項目。
FHIR 的 ClaimResponse.item 定義為「對應原始 Claim 中某一 item 的裁決結果」,必須以 itemSequence 指回原申報項目;而 ClaimResponse.addItem 的定義正是「給付方新增、原請款單中未提出的給付項目」。A 碼加成的語意與 addItem 完全吻合,故以 addItem.productOrService 承載 A 碼(a_gov_item_cd)、addItem.adjudication 承載單價(price),所加成之審核通過服務記錄(ref_objid、ref_source_system)則以 addItem.extension[recordRef] 識別——addItem.itemSequence 於 FHIR R4 的語意是「本服務項目所欲取代之原申請單(Claim)項目序號」,且為 positiveInt,無法承載長度 20 的字串識別碼。
若改用 ClaimResponse.item 表達 A 碼加成,將造成「回應了一筆原申報中不存在的項目」的語意矛盾,且驗證器會期待對應的 Claim item 存在;使用 addItem 則可清楚區分「單位申報的」與「機關加計的」兩類給付,也讓政策鼓勵金額(a_svc_fee)與核定金額(approve_fee)在 ClaimResponse.total 中的分列有據可循。
本模組僅在 FHIR R4 確實缺乏語意相符之標準元素時才新增 Extension,且集中為兩個:
objid/ref_objid)、來源系統別(source_system)與交易序號(trans_no),掛載於 ClaimResponse.item、ClaimResponse.error 與 ClaimResponse.addItem。identifier 元素,唯一可用於指涉的 itemSequence 型別為 positiveInt,且其語意是「指向 ClaimResponse.request 所參照之單一 Claim 內的 item.sequence」。本模組一份 ClaimResponse 涵蓋一個核銷案號下的多筆服務紀錄,每筆各為獨立的 LTCClaimFeeApply 且其 item.sequence 固定為 1,因此 itemSequence 既無法承載長度 20 的字串識別碼,也無法在跨 Claim 的情境下唯一指向任何一筆服務紀錄;改以 processNote 自由文字記載則喪失可運算性。records、cases、approve_case_num、approve_record_count)、暫付申請狀態(temp_payment_status)、分案已處理之單號(trans_nos)與承辦人員(audit_man)。ClaimResponse.total 為 Money 型別;暫付申請狀態不在 ClaimResponse.outcome 的取值範圍;trans_nos 為多筆字串而 ClaimResponse.request 於 R4 為 0..1 Reference;承辦人員是審查機關的審核承辦人,與 ClaimResponse.requestor(R4 定義為「負責本次請款的服務提供方」)語意方向相反,混用會使範例被誤讀為申報單位。其餘可由現有元素表達者(各項金額、核增/核減原因、錯誤代碼、清冊下載路徑之外的所有欄位)一律不新增 Extension。
本模組中,ObjDel(服務紀錄刪除)、appCompletionNotice(申報確認通知)、appCancel(撤回服務記錄)與 CancelResultResponse(取消交易單處理結果回報)四支 API,以及查詢 A 回覆的 API 執行結果資料(webapi_process_info),一律以 LTCTaskFeeAudit 表達。其中「申報確認通知」一詞容易讓人直覺選用 Communication,但依 FHIR 的 workflow 語意分界,正確選擇是 Task。
FHIR 將 workflow 資源分為 Event 與 Request 兩大類:
Communication 屬於 Event 類別,其定義是「資訊已在雙方之間傳遞完成」的既成事實紀錄——它描述某則訊息被送出、被接收,並不預期接收方因此採取任何行動,也沒有對應的狀態機來追蹤後續處理進度。Communication.status 的取值(preparation、in-progress、completed…)描述的是「訊息傳遞本身」的進度,而非「接收方處理該訊息的業務進度」。Task 是 Request 類別中專門用於表達「待執行之工作項目」的資源,具備 status(任務執行狀態)、businessStatus(業務狀態)、input(執行所需輸入參數)與 output(執行後產出結果)等元素,完整涵蓋一次「請求—執行—回報結果」的生命週期。支審系統的這四支 API 都不是單純的訊息傳遞,而是要求對方改變系統狀態並回報結果:
appCompletionNotice 執行後,支審系統必須改變案件狀態,不再受理該案件的服務紀錄申報及異動,並觸發縣市承辦人員進行收件審查;ObjDel 要求支審系統實際刪除指定 objid 的服務紀錄,並回報刪除成功清單(delete_records)與刪除失敗清單(delete_exception_records);appCancel 要求支審系統撤回已申報之服務紀錄,且有明確的前置條件(承辦人已收件處理者不允許撤回);CancelResultResponse 要求支審系統取消某一交易單的處理結果回報。更關鍵的是,規格書本身即為這些操作定義了完整的狀態機——查詢 A 回覆的 API 執行狀態(status:0 待處理、1 處理中、3 錯誤、4 處理完成)與批次處理結果(處理筆數、成功筆數、失敗筆數、異常明細),正是典型的任務執行狀態追蹤,而非訊息傳遞紀錄。這些狀態可直接對應 Task.status 的 requested、in-progress、failed、completed,處理結果則落在 Task.output。
因此,凡「要求系統改變狀態並回報結果」者一律使用 Task;Communication 在本模組中不使用。相對地,各操作所需的輸入參數(縣市代碼、核銷案號、服務紀錄識別碼、所要取消之交易序號)以 Task.input 的具名切片承載,執行結果則以 Task.output 承載,交易序號(trans_no)放在 Task.groupIdentifier,使同一次申報交易的各項處理共用同一識別。
實作限制:Task.input 與 Task.output 於 FHIR R4 為「type(CodeableConcept)+ value[x]」的扁平結構,不支援巢狀 part。因此規格書 appCompletionNotice 之 city_info(縣市代碼底下含多筆案件編號)的巢狀關係,本 IG 改以「一個縣市一筆 Task」表達:input[cityCd] 收緊為 0..1,同一 Task 內的 input[caseNo] 即明確隸屬於該縣市;一次作業涉及多個縣市時,依縣市拆分為多筆 Task 並共用同一 Task.groupIdentifier。另需注意 input/output 的切片 discriminator 為 #pattern + type.text(規格書之中文欄位名稱,如「縣市代碼」、「批次處理結果」),撰寫 FHIRPath 查詢時須以 type.text 定位,本 Profile 未定義 type.coding。
本模組定義三個邏輯模型,逐欄保留規格書之中文欄位名稱、英文欄位名稱、型態、長度與資料描述,並於各模型的「Mappings」頁籤提供至對應 Profile 的欄位對照。
apply_info 與 case_svc_records,Mapping 目標為 LTCClaimFeeApply。各 Profile 之範例可於該 Profile 頁面的「Examples」頁籤查閱,亦可於本 IG 的 範例 頁面總覽。
| 代碼系統 | 用途 |
|---|---|
| 支付審查-服務類別 | svc_fee_tp:1 補助、2 自費 |
| 支付審查-服務項目 | svc_item:申報 AA00/AA03 之服務項目 |
| 支付審查-服務對象 | svc_people:服務使用者、家庭照顧者 |
| 支付審查-服務重點 | svc_point:申報 AA00 之服務重點 |
| 支付審查-專業服務復能目標達成情形 | svcc_goal_type:申報 C 碼之復能目標達成情形 |
| 支付審查-社區式服務交通接送服務使用類型 | bd03_type:申報 BD03 之服務使用類型 |
| 支付審查-AA10 申報狀態 | aa10_status:AA10 申報狀態 |
| 支付審查-服務紀錄補充資訊類別 | Claim.supportingInfo.category 之分類碼,涵蓋表1 條件必填欄位 |
| 支付審查-核銷狀況 | 查詢A 之 status(核銷狀況):0~6 |
| 支付審查-API 執行狀況 | 查詢A 之 status(API 執行狀況):0、1、3、4 |
| 支付審查-API 功能 | function:FeeApply、ObjDel、appCompletionNotice、appCancel、CancelResultResponse |
| 支付審查-核定金額類別 | ClaimResponse.total.category 與 adjudication.category 之金額類別 |
| 支付審查-清冊文件類別 | 總表、清冊、A 碼清冊等下載文件之類別 |
| 支付審查-錯誤代碼 | err_code:申報檢核與分案異常之錯誤代碼 |
| 支付審查-API 回覆結果代碼 | rtncode:傳輸層回覆結果代碼 |
| 支付審查-縣市代碼 | city_cd:受理分案之縣市代碼 |
| 值集 | 對應代碼系統 |
|---|---|
| 支付審查-服務類別 | 支付審查-服務類別 |
| 支付審查-服務項目 | 支付審查-服務項目 |
| 支付審查-服務對象 | 支付審查-服務對象 |
| 支付審查-服務重點 | 支付審查-服務重點 |
| 支付審查-專業服務復能目標達成情形 | 支付審查-專業服務復能目標達成情形 |
| 支付審查-社區式服務交通接送服務使用類型 | 支付審查-社區式服務交通接送服務使用類型 |
| 支付審查-AA10 申報狀態 | 支付審查-AA10 申報狀態 |
| 支付審查-服務紀錄補充資訊類別 | 支付審查-服務紀錄補充資訊類別 |
| 支付審查-核銷狀況 | 支付審查-核銷狀況 |
| 支付審查-API 執行狀況 | 支付審查-API 執行狀況 |
| 支付審查-API 功能 | 支付審查-API 功能 |
| 支付審查-核定金額類別 | 支付審查-核定金額類別 |
| 支付審查-清冊文件類別 | 支付審查-清冊文件類別 |
| 支付審查-錯誤代碼 | 支付審查-錯誤代碼 |
| 支付審查-API 回覆結果代碼 | 支付審查-API 回覆結果代碼 |
| 支付審查-縣市代碼 | 支付審查-縣市代碼 |
writeoff_yyyymm)為西元年月格式 yyyyMM(例如 201901),非民國年,與本 IG 長照 SDK 模組所使用的民國年月(YYYMM)不同,實作時請特別留意。appCompletionNotice),支審系統即不再受理該案件之服務紀錄申報(FeeApply)與刪除(ObjDel)。rtncode,屬回覆封套欄位)、API 執行狀況(status,於 FHIR 中已對應至 Task.status 之標準取值,故不另行繫結)、縣市代碼(city_cd,於 FHIR 中係以 Organization.identifier(system 為 http://ltc-ig.fhir.tw/identifier/feeaudit/city-cd)或 Task.input[cityCd] 之字串值表達,非 coded 元素)。submitted)、自付額(copayment)與單價(price)語意與 HL7 標準代碼系統 http://terminology.hl7.org/CodeSystem/adjudication 之 submitted、copay、eligible 相近;本 IG 為維持同一組金額類別之一致性而收錄於本土代碼系統,相關繫結強度為 extensible,跨國情境交換時得改用標準代碼。checksum)計算邏輯、Base64 編碼方式與 IP 白名單等傳輸層規範,請逕行參照規格書原文,本 IG 不予規範。