Codapedia launched

I heard about codapedia during my annual tour of the floor looking for FOSS-related projects that I had not heard about before.

www.codapedia.com is among a new breed of ‘medical wikis’, designed to support the concepts of group editing like a standard wiki, but also to be more reliable and authoritative. The corelations to medpedia are obvious. Like medpedia, there is some vetting that goes on before an article is posted, in this respect it is similar to the Google concept of a knol. The content of the site is licensed using the GNU free document license.

The site was setup by greenbranch publishing which is the main publisher of the paper resource Journal of Medical Practice Management. They sell books, journals and audio content. This is not the organizations first foray into new media, they have run a podcast site since 2005 called SoundPractice.net

Rather than go into further details I will just let you listen to the podcast I did with Nancy Collins, but most of links that she mentions are encoded above.

Codapedia launch interview Nancy Collins (mp3)

Codapedia launch interview Nancy Collins (in ogg)

Here is a shot of the codapedia booth, Nancy is on the left, it would be nice if someone could leave the name of the woman on the right in the comments… (I forgot to ask)

Medsphere bus

This is simply the -best- publicity stunt that any FOSS EHR vendor has done yet.

Last year Cerner decided not to return to the HIMSS show-room floor. Instead they decided to subversively bring in thier massive traveling booth. This is a converted semi truck that obviously cost a small fortune. It is obvious that the pricetag on this thing has got to be into the hundreds of thousands, if not millions. Anyone who has been to the showroom floor at HIMSS can quickly recognize that this is merely another chapter in the book of excess that is the proprietary EHR vendor community. This kind of spending speaks to one thing: massive profit margins sustained by vendor lock-in.

Medsphere heard about this, and decided to pull a little stunt. They found an old VW bus and turned into a symbol of their company and to a great extent our community as a whole! They spent a modest sum refurbishing their bus, which was already a symbol of everyman freedom! Then they drove it to HIMSS and tried to find a place that they could show thier bus next to the Cerner bus.

The pictures that result are a fitting visual analogy between the basic mindset and philosophy of the FOSS commercial EHR community and the proprietary EHR vendors.

Enough preface… have a look!!

A lesson in visual philosophy
A lesson in visual philosophy

CCHIT vs FOSS pre-meeting issues

I am preparing for the meeting tomorrow with CCHIT and FOSS. I had previously used Google Moderator to get a feel for what my communities position on this issue is. Moderator allows for the same question to get posted again and again, so often the same idea was represented twice. So ignoring duplicates and ideas that got less than 12 votes (arbitrary), here are the positions that garnered the most support:

“To avoid data lock-in (FOSS or proprietary) CCHIT should provide a focus on interoperability.”
Tim Cook, Brazil/US

“CCHIT should drastically lower the costs for the certification of FOSS Health IT systems in recognition of their status as a public good.”
Fred Trotter, Houston

“CCHIT must find a way to protect the interests of the “original developer”. If an individual contributes/creates a FOSS EHR, and then a second party gets that codebase CCHIT certified, under the current system, only the second party benefits.”
Fred Trotter, Houston

“CCHIT should certify FOSS projects. Multiple companies could pool resources for certification purposes, and all the users of the project would benefit from the certified status, as long as they used the tested codebase.”
Fred Trotter, Houston

“CCHIT should move towards higher level certification mechanisms that do not focus on black-box certification.”
Fred Trotter, Houston

“FOSS licenses provide a “right to modify” to the end user. This is fundamentally incompatible with the idea that a certain codebase is “certified” in the way that CCHIT currently understands it.”
Fred Trotter, Houston

“Create a separate-but-equal CCHIT certification for FOSS Health IT software. It should be much cheaper and recognize the differences in the FOSS model. It should be much less expensive.”
Fred Trotter, Houston

“CCHIT charges should be based on an ability to pay. Smaller companies &/or community projects (i.e OS) should not disadvantaged and innovation should not be discouraged because of cost.”
Tim Elwell, New York

“Under the current model, CCHIT certification cannot jump vendors, so if a FOSS EHR user uses the “right to fire” implied in a FOSS license, they would lose CCHIT certification during that process. Thus certification is currently a lock-in mechanism.”
Fred Trotter, Houston

“CCHIT should re-publish the software licenses of the CCHIT software. Proprietary or otherwise. Further, the practice of removing bankrupt EHR companies from the list must be halted, they should be listed with a license status of defunct.”
Fred Trotter, Houston

“CCHIT should certify application modules. If it can be proven that the certified module’s software code base has not changed, others may incorporate the certified component in their application – license permitting – without recertification.”
Tim Elwell, New York

“CCHIT should consider releasing the certification criteria themselves under Creative Commons or GNU Documentation license. This would allow the FOSS community to develop our own certification methods and systems based on CCHIT standards”
Fred Trotter, Houston

“CCHIT should allow for automated testing of FOSS codebases. For instance a mechanism to prevent the re-testing of FOSS EHRs whose sourcecode had not changed, when the relevant criteria had not changed.”
Fred Trotter, Houston

“Successful FOSS projects share revenue with 3rd party companies who resell the software More companies make for a better supported and longer lasting product. CCHIT should charge each a smaller % of cert fees to support this business model.”
Greg Caulton , Boston

HIMSS09 day 2: Interview with Vish Sankaran

Today I meet with Vish Sankaran, whose official title is ‘Program Director Federal Health Architecture’ from what I can tell, that post is just as important as it sounds. Vish was, along with representatives of several major federal agencies, presenting the new NHIN open source infrastructure project called Connect. We have been waiting patiently to see code drop, and according to Vish, that should happen at connectopensource.org tomorrow!

I first heard about this project when Harris Corporation announced that they had won the NHIN contract. Harris is a big government contract shop and had apparently little experience with either FOSS or Health IT. I was please to be later proven wrong when they found that they did have considerable VistA talent on-board.

I was befuddled about how a company could announce that a product would be both public domain AND open source, seeing as how those terms have very different meanings. After my initial contact with them, it was obvious that they did not really understand the FOSS culture or community, (they actually asked a FOSS development group to sign an NDA to reveal more details of the project) and after hearing my less-than-flattering comments regarding their announcement, they made it clear that they would simply put their heads down and code until they had a product… then they would let the Office of National Coordinator sort out how to interface with the community.

I am not sure when or how Sun became involved in the project. But I was relieved to hear it. Sun has much more experience with the FOSS community, and from what I can tell Sun has bet the farm on FOSS. I have already had a conversation with some representatives from the Sun team about the release, but they were necessarily tight lipped about important details like licensing and project structure ahead of the official announcement. I hope to arrange a podcast with them soon, now that they can speak more freely.

Which brings us to today. Today Vish and his panel were discussing what they had working and what they had planned with regards to both the NHIN and Connect projects. More importantly, Vish was willing to do a brief podcast with me. My audio seemed pretty broken up… but keep listening because he sounds fine.

Vish Sankaran Interview (in ogg)

Vish Sankaran Interview (in mp3)

P.S. I am not the first person to record Vish

HIMSS09 day 2: Kolonder on Health IT

Dr. Robert Kolodner is not only the outgoing National Coordinator but a card carrying member of the underground railroad. He is a founding father of VA VistA. He intimately understands what VistA is and where it came from and the implications thereof.

His talk is generally about how he plans on extending the VA quality. Some stream of consciousness notes follow (thank goodness that bloggers can do without content editors. No editor I have ever worked with would tolerate this complete lack of transition)

In is view the stimulus act serves as “seed” for health it bird tossers.The idea is that throwing a bird in the direction you want to go does not work very well, instead you have to let them go… and seed where you want them to end up. (Does anyone have a good link explaining this analogy?)

What is “meaningful use”? There will be political pressure for the government to make this as low a bar as possible.

His insight is that Health IT needs an “apache” to enable a health it revolution the same way the “apache” project enabled the web revolution.

That is his implied vision for the connect project. The connect project will be a major FOSS development here at HIMSS09. More on that soon.

For now enjoy the snapshot of Kolodner starting to be swarmed after his talk…

HIMSS day1: Medsphere

This is the first article I am writing from HIMSS09. I am here on a press pass provided by LinuxMedNews. I am focusing on FOSS here at HIMSS.

I am, by tribal law, required to make a certain amount of Star Wars analogies when blogging and I recently categorized HIMSS as “the empire” with regards to health it. Of course the FOSS movement in health IT would be the rebel alliance in my analogy.

In reality there is a component of HIMSS that is FOSS-friendly and FOSS runs as an under current at every HIMSS conference that I have attended. It can be hard to find but it is there.

Today is a slow day at HIMSS with the notable exception of Medsphere’s presence at the health it venture fair.

Mostly the talk featured things are hardly news in our community. OpenVistA is based on FOIA VA Vista. The talk was geared to the VC crowd in the room so it was mostly focused on how many clients Medsphere has now how many Medsphere has coming… Etc. Etc.

One thing that that did surprise me was the ‘short’ version of the recent study on the improvements at Midland Memorial Hospital, an early Medsphere adopter. Two less people die every day at Midland b/c of the systems in place to handle central-line infections inside OpenVistA. Wow. That means that Medsphere clients are starting to get VA-like improved outcomes. All at a fraction of the cost of the proprietary alternatives.

The one thing that I wish VC companies ‘got’ about FOSS companies is that they must appeal to both the community as well as the market.

The problem with this kind of VC meeting is that there is simply not enough time to get into any kind of technical meat.

If I were asked to invest in FOSS EHR companies and they all would take the 100 bucks that I can afford right now. I would give 70 percent to Medsphere, 20 percent to ClearHealth and 10 percent to Tolven.

Reasons:

  • Medsphere has the only vista client that runs on GNU/Linux.
  • Fedora project will soon support multi-head again. It is hard to underestimate the importance of this.
  • Once this works, a Medsphere solution will be not only 5 times cheaper for software, but also 5 times cheaper for hardware!!
  • It is not clear that WebVistA (ClearHealth’s hospital product) is community friendly.
  • Tolven is not (yet) a comprehensive solution like VistA

In any case it was good to see Medsphere active and to hear rumors about the ‘Medsphere bus’….

Enjoy the pic of Medsphere CEO Mike Doyle beside the HIMSS Health IT Venture Fair sign!

CCHIT to meet with FOSS community

Recently, I was asked by several community members to begin ‘activating’ the community at large against certain threats to FOSS in healthcare. Dr. Valdes and I have been planning on doing this for years, and, in our own ways, have both begun to attempt to make the public aware of the issues that our community (FOSS Health IT) faces. Dr. Ignacio Valdes has been publishing several articles on the subject at LinuxMedNews , which have meet with considerable success. One of his posts on the subject have been slashdotted.
While Ignacio has been taking a hard-line Free (as in freedom) Software approach, I have been (in a twist for me) taking an ‘Open Source’ approach. The people who approached me at DOHCS were unanimous in their belief that what FOSS needed from the government was merely a level playing field, so that we could compete, and win, on our own merits.

The largest single threat to the future of FOSS in healthcare in the US is the certification process mandated by the stimulus act. The language provides funding for -certified- EHR systems and eventually penalties for not using -certified- EHR systems.

The best established certification body is CCHIT. They have not been named as the certification body, but they are likely lobbying for that role. However, CCHIT has had an anti-FOSS stance for years. For years, I and other activists in the community have chosen
to largely ignore this bias. Simply because CCHIT was an optional certification. Now, things have changed. It is possible that the government will mandate a certification program that is either CCHIT or similarly unfriendly to FOSS.

Recently I submitted my complaints to Dennis Wilson (associated with both the FOSS Laika project and employed by CCHIT) who put me in touch with Mark Leavitt. As a main result of that discussion, Mark has agreed to have a meeting with the community-at-large about this issue at HIMSS (please see the forwarded message from the CCHIT e-newsletter below).

Granted, this is like offering to meet with the Rebel Alliance at the annual Death Star conference. Even more overtly than CCHIT, HIMSS is decidedly anti-FOSS. HIMSS has actively attacked and defamed the FOSS movement. For example, HIMSS EHR Vendor association continues to limit membership to vendors who “design, develop and market its own proprietary Electronic Health Record (EHR) software application.” Further HIMSS has specially advocated against the US government funding of FOSS EHR solutions, which implicitly includes VA development of VistA. There is also great concern about the ties between CCHIT and HIMSS/EHRVA. Leavitt himself was employed by HIMSS immediately before his current position and is currently a fellow of HIMSS. CCHIT maintains that the two organizations are independent, everyone else seems to understand the dangerous familiarity between the two organizations. (update 3-30: Dennis Wilson has noted that this meeting will be held ‘with’ but not ‘at’ HIMSS… You do not need a HIMSS badge to attend)

However, Mark has also agreed to provide some kind of remote access capability for those of us who cannot afford the time, cost or moral compromise required to attend HIMSS. For this reason, and because of their willingness to meet at all, I am asking the community to attend the CCHIT/FOSS meeting. In person if at all possible, by remote access if not.

The meeting will be held at HIMSS on  Monday, April 6, Room 10d, Session #2  2:00  – 3:00 PM

I have heard from several of the HIMSS ‘regulars’ in our community that they will be going. However, it is critical that we have a show of force within the community from precisely those people who have the most to lose with regards to the certification issue: small support companies and individual consultants.

We are becoming more ‘organized’ as we speak. Please watch this space for more announcements on how you can participate to keep the US government from making anti-FOSS blunders now and in the future.

Best,
-Fred Trotter
http://www.fredtrotter.com

———- Forwarded message ———-
From: Sue Reber <sreber@cchit.org>
Date: Fri, Mar 13, 2009 at 3:07 PM
Subject: FW: CCHIT eNews: Seeking volunteers, Expansion,
Interoperability and Open Source
To: fred trotter <fred.trotter@gmail.com>
Cc: Dennis Wilson <dwilson@cchit.org>

Fred – see below “Commission Hosts Interoperability and Open Source
Roundtables on Certification” in our regular electronic newsletter.

C Sue Reber

Marketing Director, CCHIT

Certification Commission for Healthcare Information Technology

503.288.5876 office | 503.703.0813 cell | 503.287.4613 fax

sreber@cchit.org

— majority of newsletter removed for brevity —

Commission Hosts Interoperability and Open Source Roundtables on Certification

In addition to its annual Town Hall at the upcoming  HIMSS09 Annual
Conference in Chicago, the Certification Commission will be  hosting
two technical roundtables, co-located with the conference, for health
IT vendors and developers. The first, “Interoperability 09 and Beyond:
a look  at CCHIT’s roadmap for the future”, will present the
Commission’s  interoperability roadmap and explore the standards and
testing tools with  which developers need to be familiar.

The second, “Open Source  Forum: a dialogue on certification for open
source EHRs”, is designed to  continue the discussion with open source
developers with an interest in  certifying EHRs. This session will
allow an open exchange of the challenges  and opportunities for making
certified open source EHRs available to  providers.

The times and locations of sessions are below. Both Health IT
Technical Roundtables will also be available via free remote access.
Details will be available at cchit.org prior to the date.

CCHIT Town Hall at HIMSS09 Annual Conference
Sunday,  April 5
Room W192b, McCormick Convention Center, Chicago
9:45 – 11:15  AM

Health IT Technical Roundtables at Hyatt McCormick Conference Center
Monday, April 6
Room 10d, Hyatt McCormick Conference  Center, Chicago

Session #1  1:00 – 2:00 PM
Interoperability 09  and Beyond: a look at CCHIT’s roadmap for the future

Session #2  2:00  – 3:00 PM
Open Source Forum: a dialogue on certification for open source  EHRs

— sections removed for brevity —-

Contact : eNews@cchit.org | www.cchit.org

Copyright © 2005-2009 Certification Commission for Healthcare
Information Technology
Privacy Policy   |   Terms of Use   |   Contact

______________________________

__

If you no longer wish to receive these emails, please reply to this
message with “Unsubscribe” in the subject line or simply click on the
following link: Unsubscribe

________________________________

Certification Commission for Healthcare Information Technology
200 S Wacker Dr
Suite 3100
Chicago, Illinois 60606
US

A Little Law Lecture

I have been asked to give a lecture at the University of Houston Law school about PHRs and HIPAA.

I originally hooked up with the law program there because they publish interesting things on the collision of Open Source and Healthcare IT law, an issue that I care about.  Now I am being invited to talk about PHRs, HIPAA and other interesting things at a Law class. When I was a student I loved it when a speaker brought notes, so that I could focus not on the information content of what he was saying but the validty of his arguments. Apparently (ironically really) I am qualified to talk about things that I blog about, so I wanted to point out some of the medico-legal topics I have covered in my various posts, in some kind of formal way. I hope this benifits others.

But first, I must invoke that wonderful acronym of amateurism IANAL.I am not a legal expert at all, no matter how smart I sound. This is OK because I am much less concerned with how the law does work, than with how the law should work. I think of the law as “applied moral philosophy”, which means that I can ignore lots of the legal issues especially when it is stooopid. When you think the law in a given area is stoopid, like our copyright law, (at least Colbert knows) then you respond with licenses that make some kind of sense, like the GPL or Creative Commons. I am not really an expert in these licenses either, but I am shocked at how often legal experts totally trash the concepts that our community was trying to protect when we wrote these licenses. For instance I have heard file-sharing compared to Creative Commons and Open Source as similarly respectful of copyright.

I care about Free and Open Source licenses in Healthcare IT. I also care about user agreements and PHR privacy statements. So lets dive right in.

First when everyone else was in an uproar about Google Health and Healthvault not being covered by HIPAA, I came to their defence. PHR systems should not be covered by HIPAA and that is a good thing. 

I wrote an article on the difficulty of designing software around healthcare privacy laws.

I have written a pretty snarky little post on the definitions of the terms PHR/EHR/EMR, do not have much to say about that except that these terms are still abused by people who sell stuff. Its much more important to consider a feature set in when defining a term like EHR.

As I prepare for this lecture I wish I had written more on the “Robots attack” problem, where average people have unreasonable fears about technology, but I have talked some about how we focus on the wrong class of problems, with regards to security threats.

I have not yet talked much about the evils of health IT patents. But I should.

So hopefully, talking a look at all of this I should be able to come up with a good talk.

-FT

Computer Science should be required for Medical School

Hi,

Currently, in Texas,  one is required to take Physics I and II and Calculus I (or equivalent stats class) to apply for Medical School. That is not all, of course, but they are requirements.

So far, I have never meet a Medical Doctor who needed to use calculus. In fact the only ones that might need to really understand the subject are those who are doing high-level mathematical modeling for Bio-Informatics. For these researchers Calculus is not enough. Your average primary care doctor, *never* uses calculus. They also *never* use Physics! Of course they have all kinds of systems that obey the laws of physics, including blood pressure, syringes etc. But they never treat a patient and think “hmm.. what was the relationship between volume and temperature of a gas….”. They think in higher level abstractions like “When blood pressure is high that could mean X, or Y or Z depending on….”

The real benefit of Physics and Calculus is that they introduce you to new ways of thinking. That new way of thinking makes it easier to understand higher level concepts that you *will* use everyday as a doctor.

I recently had a conversation with a clinician about some work that I am doing on the NPI database which lists every doctor (that prescribes medicine) in the United States. The conversation went like this.

Fred: “I need to munge the data, I need to process the data in a different way than it is listed (a flat CVS file), I need to turn into a real normalized database before I am going to be able to use it effectively”

Clinician: “Wow… Ok… How long will that take you”

Fred: “Well you do not want me to work on this full-time do you? I only have about 5 hours a week I can work on this in my current schedule..”

Clinician: “Yea.. but your other projects are pretty important… given only 5 hours a week, how long would this take?”

Fred: “three months.”

Clinician: “Boy… that’s a long time… I know! Why don’t you just create a database with Texas doctors, instead of all the doctors in the United States! How long will that take?”

Fred: “three months.”

Clinician: “That makes no sense at all. How can that be possible?”

Fred: “Well making the database smaller does not really help me at all, that is the part of the problem that the computer takes care of, not me”

Clincian: “Cmon. A smaller database should mean a shorter time, this seems almost obvious to me. You should be able to do it faster than that. ”

Fred: “Ok.”

Clincian: “Ok, so how long for just a Texas-only database?”

Fred: “three months”

and so on…

Now lets point out… first of all… that this Clinician is not stupid. He was ignorant of how computers, and more importantly of the process of programming computers. This issue is worth discussing in detail because it really illustrates the thought gap between someone who knows how programming works, and someone who does not.

There are many NPI records, specifically in a recent (May 2008) release of the database there were 2,557,650  lines in the comma delimited file as revealed by “wc -l” (subtracting one to account for the first line in the file, which is full of labels… not a real NPI record)

The changes that I need to make to fix the NPI database are pretty complex (fodder for another post) but for now, I will just say that it is a “Complex Reordering of each Record”. Here is how my process for approaching this problem looks:

First I need how to process a single record. So I write a function to do that. For the sake of prose, I will call that function

complexReorderingOfEachRecord( $Record )

I will look at the one Record in the NPI database and then try to pass that Record into the function and see if it does the right thing. The complexReorderingOfEachRecord is a long function, it does lots of really complex things. So complex in fact that I really cannot keep all of its functionality in my head at one time. I use various ways of abstracting the problem so that I can think about the problem in useful chunks, and figure out if each chunk is working.

I am going to actually include some psuedocode in this post.  Psudeocode is code that is not exact enough for a computer to execute, but is clear enough that a human can read it and understand what it does. Programs are like recipies, they are simply exact  instructions that the computer will follow. I will use some basic programming elements in my examples (Note to programmers: this blog is also for clinicians… so you can safely skip this…)

  • Sequential execution – Each line of code is read and executed by the computer before moving down to the next line
  • Variables – a variable is a changing placeholder for information. Each time a program is run, it is possible that the variables will contain different values. I use php, so I mark my variables with dollar signs “$”. This ends of working alot like the “x” in an algebra problem, it can have different values depending…
  • Functions – It is often useful to merge many simple lines of code into a single function. Later you can execute all of the code inside the function by calling the function name and passing data to the function by putting inside the parens “()” after the function. It is basically a way to group useful bits of commands together.
  • If/Else statements – when the computer reaches an IF statment it looks at the contents of the paranthesis “()”beside the if statment. If the contents are “true” then the code inside the braket symbols “{}” following the if statement is run. If the statement in the parens “()” is “false” then the code in brackets “{}” following the ELSE statement is followed.

So the inside of the complexReordingOfEachRecord looks like this

function complexReorderingOfEachRecord( $Record){

reorderingStepOne($Record);

reorderingStepTwo($Record);

reorderingStepThree($Record);

}

(Note to Programmers: I am actually using an OOP design for my project, so in reality these would be function calls on objects, but I want to keep this on a procedural level to make my point)

complexReordingOfEachRecord, reordingStepOne,  reordingStepTwo, reordingStepThree are all functions. The contents of recordingStepOne are not shown, but they are custom functions, meaning that I wrote them. $Record is a variable. There are no IF statements yet.

Ok.. I write this code, test it, debug it about 15 times before it works to import 1 record. But then I run the code on the first 10 records my system blows up! Some NPI records are not for Doctors at all, they are for organizations that provide healthcare: Doh! I need to run the program differently for people vs organizations!

So I modify my function to look like this:

function complexReorderingOfEachRecord( $Record){

reorderingStepOne($Record);

reorderingStepTwo($Record);

$isAPerson = reorderingStepThree($Record);

if($isAPerson){

doOneThing($Record);

}else{

doAnother($Record);

}

}

Now the function has one IF statement that looks in the variable isAPerson and then executes either doOneThing or doAnother based on the contents of $isAPerson.

I have to code, test and debug this another 30 times to get it working. I have to test it more times because the new function calls doOneThing and doAnother do not work without modifications to reorderingStepOne and reorderingStepTwo. I have to switch between thinking about different part of the problem very quickly to make sure it works. To start, everything breaks, but as I discover why, by running the program again and again, I make small changes that eventually make the whole process work correctly. The shorthand for this process is code, test, debug, repeat.

As I am working I start to run the program on the first 100 records. I notice that often the person in the record is not an M.D., there are also dentists and other clinicians who are in the database ! But my work is focused only on M.Ds. So I modify the code again:

function complexReorderingOfEachRecord( $Record){

reorderingStepOne($Record);

reorderingStepTwo($Record);

$isAPerson = reorderingStepThree($Record);

if($isAPerson){

$isAnMD = doOneThing($Record);

if($isAnMD){

processMD($Record);

}else{

processNonMD($Record);

}

}else{

doAnother($Record);

}

}

Now I have a “nested” IF statement, an IF statement that exists in another IF statement.

As before all of the other functions must be modified to make my two new functions processMD and processNonMD work correctly. This requires 50 repetitions of code, test and debug. Sometimes one code, test and debug cycle takes 30 seconds. Usually it takes about 5 minutes. Sometimes it takes as much as 15 hours.

Now I am testing against 1000 rows of the NPI database, and it works perfectly! I have put in about 40-50 hours (or about 3 months at 5 hours a week)

But now what! I have only imported only 1000 rows of the database. Now I will explain how I ran the code on one row, 100 rows and then 1000 rows. I will introduce the WHILE statement to my simple psuedo code.

$i = 1

while($i < 1000){

$Record = getANewRecord()

complexReorderingOfEachRecord($Record);

$i = $i + 1

}

The “while”is just like an if statement, except that when the contents of the curly brackets “{}” are done, then the contents in the parens “()” are re-evaluated. If they are still true, then the contents of the “{}” are run again. The $i variable starts at 1, and then grows by one every time the contents of the curly braces are run “{}”

So how do I import the whole NPI database? I change to code to look like this:

$i = 1

while($i < 2557650){

$Record = getANewRecord()

complexReorderingOfEachRecord($Record);

$i = $i + 1

}

Then I start the program and go to sleep. In the morning, all 2,557,650 records are correctly processed.

Once I had done the work to determine “How to change an NPI record” the computer simply repeated that process for as long as I wanted. Computers are so fast now, that even very very complex processes can be repeated very quickly.

You see *I* never import any data. The computer does that part. *I* the programmer tell it *how* to import that data. Like doctors, when programmers have a simple concept with big implications, we create an important sounding word for it. The important word for *how* to do an information task is “algorithm“.

If you get an algorithm right, computers do just what you want. If you get the algorithm wrong… computers do other things. If you get the algorithm badly wrong… God help you.  This is why computers often seem to have a “mind of their own”; when programmers tell them to do the right thing, they do exactly that. When programmers tell the computer to do the wrong thing… they do exactly that.

Any programmer reading this is likely going blind with boredom. But someone who has not programmed might likely be asking “Wait… what’s a function?” This is actually a pretty terrible introduction to programming. For something more real, I suggest you start here.

My point is this, computers make some types of tasks really easy. Getting to them to do those tasks, without making a serious mistake, is pretty difficult and time-consuming work. If you, as a clinician, do not understand what tasks are hard, and what tasks are easy, then it is almost impossible to evaluate the software you are using. I cannot tell how many times a clinician has requested a “simple change” that has taken me three weeks of programming. On the other hand, I cannot tell you how many times I have seen clinicians (or more often clinicians staff members) subject them selves to terrible software designs that would be trivial to fix.

To create an algorithm you need to understand two things:

  • What the computer can do
  • What the computer should do

There are some people, like my friend Ignacio Valdes, who have been extensively trained in Computer Science and Medicine. These people are amazing, because you can watch them switching back and forth between one part of healthcare IT (Clinical know-how) and the other (Computer Science know-how). But even these few gems (rare as hens teeth), cannot actually hold the complexity of even a single clinical IT problem in their head at one time. That is just not the way that programming, clinical care or anything truly complex works! Programmers must ignore parts of a program to improve on any given part. Clinicians must ignore parts of a patients body to address a problem with one part. (Most heart surgeons, for instance, remain unconcerned about the flaky skin problem while their patients are in open heart surgery.) Knowing what to ignore, and what deserves attention is often the true test of expertise.

The only way to deal with Healthcare IT is to create teams of people to manage the complexity together. The problem with that is that for any given problem domain, there is a danger that the communication cost will grow exponentially in relation to the number of participants. It is common for the communication costs to totally destroy all productivity in a given group. But at the same time, it is simply not possible for a single person to correctly navigate the complexity of even a simple Health IT software project.

The solution to this problem is found in the VA VistA development model. Here are the rules:

  1. You do not work on “the system”, you work on part of the system. VistA is actually hundreds of programs that work together.
  2. Whenever possible you work in pairs. Any more gets unmanageable.
  3. One person must understand everything they need to about the programming of the clinical issue. We can call this person the Programmer. (In the VA this is a Programmer or a CAC)
  4. It helps if the Programmer has a basic healthcare vocabulary.
  5. Another person must understand everything they need to about the clinical problem itself. We can call this person the Clinician.
  6. It helps if the Clinician understands, basically, what is easy, what is hard, what is possible and what is impossible with computers.
  7. You rely on other pairs to address other clinical problems.
  8. You intentionally have redundant “programming pairs” so that you are forced to compete to make better solutions.
  9. When another pair makes a better solution to your problem, you celebrate that and adopt their code as the new starting point.

Its number 6 that this article is focused on. It would be really helpful if Physicians in particular were required to know what a “for loop” meant. Just like calculus and physics they will rarely, if ever, use that information. But for the time being, the fundamental lack of understanding of computer science in clinicians is holding healthcare back. Can you imagine speaking to your doctor if he or she had no idea what the word “pressure” meant in the phrase “blood pressure”. As it stands, most doctors do not really understand what the implications of the word “Information” in the phrase “Health Information Systems”.

What scares the hell out of me is not that the clinician above did not know how the programming process worked. Ignorance has a simple cure: learning. What scares me is that he was willing to pressure me to speed up the schedule, even after I explained how things worked. Trying to force a programmer to take short-cuts to make a deadline is a very very bad idea (see point number 4 here). Doctors, like military officers, often fail to recognize that in “being in charge” is contextual. It does not matter if a Doctor is right about a clinical issue, if they are wrong about a software design issue. The resulting software will fail to perform, despite its clinical correctness. Doctors cannot “be in charge” in software design the way they can in an operating room or in clinical practice. That does not mean they are not vital, it just means they should not be in charge. The programmers should not be “in charge” either. The “Clinical Pair Programming” that I am describing above is a description of the peer thinking that is required to solve these problems. When someone is “the boss”, (meaning they actively back only their own priorities) the system breaks.

The irony is that the few Doctors I know who are my peers with regards to computer science education, are often more hesitant to challenge me regarding my information systems opinions. Do not get me wrong; they often disagree with me, but not more than any programmer would disagree with any other programmer.

This is why I support an undergraduate computer science prerequisite for medical school.

-FT