iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
Security

醫療數據的資安挑戰與創新解決方案系列 第 17

區塊鏈在醫療紀錄共享的應用介紹

  • 分享至 

  • xImage
  •  

一、理論重點

  1. 資料共享挑戰:傳統醫療系統常因醫院間系統不相容、隱私疑慮,而導致病歷共享困難。
  2. 區塊鏈特性:
  • 不可竄改性:每筆病歷紀錄經過上鏈後無法隨意修改,保障完整性。
  • 去中心化:不同醫療機構皆可驗證資料,避免單點故障。
  • 透明可追溯:每次存取、修改病歷的紀錄都能被追蹤。
  • 智慧合約 (Smart Contract):能設定自動化的共享規則,例如:病人同意授權後,醫師才可讀取資料。
  1. 醫療共享應用:
  • 病人可授權不同醫療院所存取病歷,避免重複檢查。
  • 醫學研究可在不揭露個資的前提下,蒐集去識別化的資料。
  • 健保與醫院可即時驗證申報紀錄,降低詐領風險。

二、案例分享

2017 年,愛沙尼亞(Estonia)成為全球第一個將區塊鏈技術應用在國家醫療紀錄系統的國家。該國透過區塊鏈確保所有醫療資料(例如病歷、處方、檢查結果)都能被追蹤與驗證,避免任何單位未經授權修改病歷。醫師、病人及醫療機構可以透過加密授權方式安全共享資料,並留下完整的存取紀錄,這讓醫療體系大幅提升透明度與安全性,也讓病人能真正掌控自己的健康數據。

三、簡單程式示範

import hashlib
import time

# 區塊類別
class Block:
    def __init__(self, index, timestamp, patient_name, diagnosis, previous_hash):
        self.index = index
        self.timestamp = timestamp
        self.patient_name = patient_name
        self.diagnosis = diagnosis
        self.previous_hash = previous_hash
        self.hash = self.calculate_hash()

    def calculate_hash(self):
        record = str(self.index) + str(self.timestamp) + self.patient_name + self.diagnosis + self.previous_hash
        return hashlib.sha256(record.encode()).hexdigest()

# 區塊鏈類別
class Blockchain:
    def __init__(self):
        self.chain = [self.create_genesis_block()]

    def create_genesis_block(self):
        return Block(0, time.time(), "Genesis", "First Block", "0")

    def get_latest_block(self):
        return self.chain[-1]

    def add_block(self, patient_name, diagnosis):
        latest_block = self.get_latest_block()
        new_block = Block(len(self.chain), time.time(), patient_name, diagnosis, latest_block.hash)
        self.chain.append(new_block)

    def is_chain_valid(self):
        for i in range(1, len(self.chain)):
            current_block = self.chain[i]
            prev_block = self.chain[i - 1]
            if current_block.hash != current_block.calculate_hash():
                return False
            if current_block.previous_hash != prev_block.hash:
                return False
        return True

# 建立病歷區塊鏈
medical_chain = Blockchain()
medical_chain.add_block("Alice", "Diabetes Type 2")
medical_chain.add_block("Bob", "Hypertension")
medical_chain.add_block("Charlie", "Asthma")

# 顯示病歷區塊
for block in medical_chain.chain:
    print(f"區塊 {block.index} | 病人: {block.patient_name} | 診斷: {block.diagnosis}")
    print(f"雜湊: {block.hash}\n")

print("區塊鏈有效性:", medical_chain.is_chain_valid())

這段程式碼主要是用 Python 模擬區塊鏈在病歷共享的運作方式,讓你看到「病歷如何被安全保存與驗證」。病歷被加到區塊鏈後,每筆都會連結前一筆 hash,因此能保證資料不可竄改,讓病歷共享更安全透明。執行結果如下https://ithelp.ithome.com.tw/upload/images/20250919/20169331pV4ViA6yDP.png


上一篇
病歷欄位加密 – 查詢與解密資料
系列文
醫療數據的資安挑戰與創新解決方案17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言