2

私は HIPAA コンプライアンスを必要とするアプリを構築しています。つまり、特定の接続をデータベースで自由に表示できるようにすることはできません (患者とその推奨事項)。

これらのテーブルは、私のアプリのテーブルを介して接続されています。これは、 attr_encryptedpatients_recommendationsを介して暗号化を追加するまでうまくいきました。暗号化と復号化 (および関連するオーバーヘッド) の量を削減するために、テーブル内の を単純に暗号化できるようにしたいと考えています。ただし、データ型を に変更し、列名をに変更すると、データベースを再シードしようとすると、アプリが次のエラーで中断します。patient_idpatients_recommendationsstringencrypted_patient_id

不明な属性 `patient_id' を書き込めません

これは、結合がモデルを経由するのではなく、列を直接探しているためだと思います (モデルを使用するとおそらく遅くなります)。Rails でモデルを通過させる方法はありますか (attr_encrypted必要なヘルパー メソッドを追加した場所)。

アップデート:

回避策を見つけるために、次のように before_save をモデルに追加してみました。

before_save :encrypt_patient_id

...

private

def encrypt_patient_id
  self.encrypted_patient_id = PatientRecommendation.encrypt(:patient_id, self.patient_id)
  self.patient_id = nil
end

ただし、これも機能せず、同じエラーが発生しますunknown attribute。どちらの解決策も私にとってはうまくいきますが (最初の解決策は主な問題に対処します)、before_save関連付けを介して作成されたときに が呼び出されない理由はありますか?

4

2 に答える 2

1

おそらく、PII データと PHI データを別々の DB に格納する必要があります。PII データ (プロバイダーまたはプロバイダーの場所への関連付けを含む) を暗号化し、すべての PHI データをハッシュして簡単にします。この 2 つの間に直接的な関連性がない限り、PHI データは匿名化されているため、暗号化されていなくてもかまいません。

于 2014-01-23T20:09:33.233 に答える