We humans have yet to develop the holy grail of describing and sharing biomedical data about ourselves in a way that is both human/computer-readable. We see the problem manifest in all sorts of ways:

  1. Patients who have to fill out medical history for every friggin' encounter.
  2. Clinicians participating in collaborative-care networks in the dark about a patient's clinical history and treatment plan because they're not on the same EHR.
  3. Hospitals and organizations spending millions and billions on wrangling software to run daily operations and processes.
  4. State and federal agencies struggling to define a scalable, quality-governance framework for reporting on clinical and population metrics--and slow to bring all-payer and accountable-care to the other 48 states.
  5. Researchers still collaborating like they did in the 20th century, lagging behind the big-data, "Semantic Web" data science tools developed in Silicon Valley and heavily used in the finance, retail and defense sectors.


There's a reason why exchanging medical information is hard: medicine is hard.


Software takes human constructs--the ideas, concepts, machines we've developed over time to understand and interact with the world--and makes them understandable to other machines (computers) for manipulating, calculating, automating etc.


Riding with Uber

A couple of "Entities" involved.

Company Uber;  
Driver Jill;  
Rider Jim;  

Jill joins Uber, and a few weeks later so does Jim as he hails his first ride.

Jill = new Driver();  
Uber.Verify(Jill);  
Uber.Verify(Jill.Wallet);

Jim = new Rider();  
Uber.Verify(Jim.Wallet);  
Jim.CurrentLocation = "39.280323, -76.589281";   /* Latitude, Longitude */

Uber.RequestRide(Jim.Location);  

Uber lets drivers know that Jim needs a ride and his wherabouts. Jill agrees to drive him, and Uber creates a document called "rideJimJill" to record events about the ride and process payments.

Jill.AcceptRide(Jim);  
Ride rideJimJill = Uber.CreateRideWithContract(Jim, Jill, Jim.CurrentLocation);

rideJimJill.Pickup = "2016-06-04 10:14:10294"  
rideJimJill.Pickup.Location = "39.280323, -76.589281";  
rideJimJill.Embark = "2016-06-04 10:16:15644"  
rideJimJill.Arrive = "2016-06-04 10:24:12348"  
rideJimJill.Arrive.Location = "39.212323, -76.589281";

rideJimJill.ProcessPayment(Jim.Wallet, Jill.Wallet);  
An Uber Ride's Concepts
  1. Encounter ("Ride")
  2. Person
  3. Location
  4. Time
  5. Currency
  6. Device

Visiting a Medical Office

A smorgasbord of "Entities" involved.

Physician PhysicianJill;           // Medical Office staff  
Nurse NurseJacob;  
Assistant AssistantHenry;  
BillingManager billingShelley;

Patient PatientJim;              // Patients and Family  
Relative RelativeBob;

Company MedicalOffice;    // Facilities  
Company Hospital;  
Company SpecialtyOffice_1;  
Company SpecialtyOffice_2;

Company BlueCross;        // Insurance Companies  
Company Medicare;

Device MedicalOfficeEHR;  
Device PracticeManagement;  
Device HospitalEHR;  
Device VitalsMonitor;

// 3rd Party
Company Government;  
Company World-Health-Organization;  
Company The-International-Health-Terminology-Standards-Development Organisation;  
Company Wolters-Kluwer;  
Company Regenstrief Institute;  
Company American-Medical-Association;  
Company Eli-Lilly;  

Physician Jill joins the practice and a few weeks later Jim schedules an office visit

PhysicianJill = PracticeManagement.NewPhysician();  
Government.Verify(PhysicianJill.Credentials);

PracticeManagement.ScheduleVisit(Jim, "2016-09-27 08:30:00000");  

Jim arrives at his office visit and the encounter begins.

PatientJim = PracticeManagement.NewPatient();  
PatientJim.FillOutDemographics();  
PatientJim.CompleteRegistration();

PatientJim.Insurance1 = Medicare;  
PracticeManagement.Verify(PatientJim.Insurance1);

PatientJim.Insurance2 = BlueCross;  
PracticeManagement.Verify(PatientJim.Insurance2);  

An encounter is created in Jim's chart to record documentation about the visit

Encounter = MedicalOfficeEHR.NewEncounter();  
Encounter.Arrived = "2016-06-04 10:14:10294";  
Encounter.Roomed = "2016-06-04 10:38:10294";  

Assistant Henry comes in and takes Jim's vital signs

Encounter.BloodPressure();  
Encounter.RespirationRate();  
Encounter.OxygenSaturation();  
Encounter.Height();  
Encounter.Weight();  

Nurse Jacob comes in and records Jim's past medical history

Encounter.GetAllergyHistory();  
Encounter.GetImmunizationHistory();  
Encounter.GetMedicalHistory();  
Encounter.GetFamilyMedicalHistory();  
Encounter.GetMedicationHistory();  
Encounter.GetLabResultsHistory();  
Encounter.GetOrderResultsHistory();  
Encounter.GetEncounterHistory();  

Physician Jill arrives to the exam room and begins her visit with Jim.

Encounter.SubjectiveNotes(n);  
Encounter.ObjectiveNotes();  
Encounter.AssessmentNotes();  
Encounter.Orders();  
Encounter.CarePlan();  
Encounter.ePrescribeMedications();  

Jim's encounter with Physician Jill is complete, and Nurse Henry comes back to go over meds/orders/referrals with the patient (education.)

Encounter.PatientEducation();  

Jim goes to reception and wraps up.

PracticeManagement.Verify(Jim.Wallet);  
PracticeManagement.ProcessCoPayment(Jim.Wallet);  

Shelley the billing manager works the claims with the appropriate insurances companies.

PracticeManagement.ProcessPrimaryPayerPayment(PatientJim.Insurance1.Wallet);  
PracticeManagement.ProcessSecondaryPayerPayment(PatientJim.Insurance2.Wallet);  
An Office Visit's Concepts
  1. Encounter
  2. Person
  3. Place
  4. Time
  5. Currency
  6. Bank Account
  7. Device
  8. Insurance Agency
  9. Diagnosis
  10. Medical Procedure
  11. Allergy
  12. Immunization
  13. Observation
  14. Diagnostic Report
  15. Medication Prescription
  16. Medication Administration
  17. Chemical Substance
  18. Care Plan
  19. Security (HIPAA)

The constructs above are the reason why there are so many "3rd Party Entities" and why working with healthcare data is so difficult. Remember that medicine is a complex and growing science that, by itself, is difficult to describe and manage--creating a "Universal Language" for it (read: "Interoperability") is a lot harder than you might think.

A brief history of the past, present, and future of health information exchange coming up in part 2 of Why Can't EHRs Talk To Each Other.