Giter Club home page Giter Club logo

ethereum-hipaa-audit-log's Introduction

ethereum-hipaa-audit-log

A prototype implementation of a blockchain HIPAA audit log using ethereum and meteor

Concept

A HIPAA audit log keeps track of which users access which patients at what time.
Implementing this functionality using blockchain is interesting because:

  1. Blockchain is immutable - once an audit record is stored, it cannot be removed or changed.
  2. Blockchain is built on public key cryptography. Users and patients could have their own unique public keys on the blockchain that can be referenced by the audit log without revealing the actual users identity or any PHI.
  3. Blockchain is accessible - the audit records can be easily accessed by anonymous users without revealing any PHI

This prototype uses ethereum for the blockchain implementation and has a smart contract that contains an audit log entry (see contracts/auditEntry.sol).

Pre-requisites

  1. Setup a private ethereum network from here: https://github.com/chafey/ethereum-private-network

  2. Meteor

How to run

Make sure your ethereum private test network is running

Start the meteor application:

cd hipaaAuditLog

meteor

Open your web browser to localhost:3000

Click "Sign in" and use the credentials:

username: [email protected]

password: test

You should now see a patient record for "John Doe with MRN 1234".
Every time you click the record, the client will call a meteor method on the server side which will create a new auditLog transaction in your ethereum private test network blockchain:

I20170125-08:51:15.050(-6)? patientViewed  1234
I20170125-08:51:15.052(-6)? Adding auditEntry to ethereum
I20170125-08:51:22.903(-6)? Contract mined! address: 0x71cfbe86bac365e334a80fd1e49ab253a05d4df4 transactionHash: 0x4103ba897b342b6679c812df7cecae42d6d081516ecc7b80c80597720f07cf40

What just happened?

Both the patient and the user have an account on the ethereum test network and the address of those accounts (the public key) are stored in the hipaa audit log entry.

Ideas for the future

  1. Build a blockchain hipaa audit log index and browser. Iterate over the audit entries in the blockchain and build up a local indexed databases that lets a user run reports such as "who are the users that accessed this patient", "which patients did this user access" and "what audit entries occurred during this time period".
  2. Create a Patient contract and store HIPAA audit logs in it. This would make it easier to find out who accessed a given patient. It may also reduce the storage required. New entries would fire events that could be listened to.
  3. Create a User contract and store HIPAA Audit logs in it. This would make it easier to find out which patients a given user accessed. It may also reduce the storage required. New entries would fire events that could be listened to.

ethereum-hipaa-audit-log's People

Contributors

chafey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ethereum-hipaa-audit-log's Issues

HL7 FHIR Resources

Hi Chris,
Grahame Grieve over at chat.fhir.org is having some discussions about using FHIR with blockchain. Would you consider a pull request that upgrades this applet to use the FHIR Patient resource?

It would basically adjust the shape of the Patient object that is stored in the Patient collection. I could set it up so that an environment switch or Meteor.settings field toggles between the two if you want to keep backwards compatibility.

As of FHIR 1.8.0 (DTSU3), there's also an AuditEvent resource, which would be more difficult to implement; but which would be very snazzy.

Best,
Abigail

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.