I’m going to be radical here, and propose something clever with a funky sounding name. IFFMIX. What is IFFMIX I hear you cry?
International Format For Medical Information eXchange
Sorry about the use of the X in exchange, but IFFMIE just didn’t have the same ring to it. Anyway, on to the important bit. What is IFFMIX? Simply put, it enables important medical information to be packaged into a very small format which can be understood universally. It requires no complex technology to read (Although it is recommended so you don’t have to do big maths), and can be conveyed over virtually any format. How does it work? Here goes:
IFFMIX information is a string of letters and numbers, containing some basic information followed by a series of bitfields. For those unfamiliar with bitfields, they allow a great many ‘yes/no’ options to be encoded into a single number. Each part of the IFFMIX string will be delimited with a dash, since this is a unique looking symbol.
To begin with, the IFFMIX string must be declared. This is simple, put “IMI” (International Medical Information). If anybody sees this, for example on documentation or personal ID, then they know that it can be translated into medical details.
Second comes the first bitfield, core information. This is a lot of stuff about your basic body. This can be turned into the following bitfield:
- 1 - Blood Type Positive
- 2 - Blood Type Negative
- 4 - Blood Type A
- 8 - Blood Type B
- 16 - Blood Type O
- 32 - Do Not Transfuse
- 64 - Gender Male
- 128 - Gender Female (If both genders present, assume intersexual)
Again, more information can be added by professionals as necessary. However, assume I was a male AB Positive Jehova’s Witness, I would calculate my blood ID number as 1 + 4 + 8 + 32 + 64 = 109. It is impossible to get this number with any other combination in this bitfield. At this point, some number shifting is necessary. To elegantly deal with big numbers (As bitfields use 2^n numbers they can get big fast) this number must be converted to base 16, hexadecimal. For 109, this number is 6D. If we were to zero-pad this to 6 characters, the basic info bitfield could potentially store up to 23 true/false statements. If compression such as was used for reducing 4 blood groups to 3 options (AB is A+B) is implemented, this is a lot of data.
My IFFMIX string is now IMI-00006D. From that you know I am male with an AB positive blood type and I don’t accept blood transfusions. For me, you could leave it at that. Put that number on my passport and driving licence, and suddenly a load of information which is important to paramedics across the world is right there with me.
However, assume I suffer from an allergy to penicillin and I am currently on medication following surgery, but I also donate blood and am a registered organ donor. Watch the magic of IFFMIX, as it encodes all this information into a short series of letters and numbers. This is the huge bitfield which declares anything at all that may be of medical significance. Here are just a few of the things which may needed, but as always I’ll leave it to the pros to work out exactly what’s important.
- 1 - Allergic to Penicillin
- 2 - Allergic to Peanuts
- 4 - Allergic to Insect Stings
- 8 - Is Diabetic Type 1
- 16 - Is Diabetic Type 2
- 32 - Has Heart Condition
- 64 - Has Suffered Cardiac Arrest
- 128 - Has Suffered Stroke
- 256 - Is a Hemophiliac Type A
- 512 - Is a Hemophiliac Type B
- 1024 - Suffers Sickle-Cell Anaemia
- 2048 - Is Blood Donor
- 4096 - On Current Medication
- 8192 - Has Had Recent Surgery (3 Months)
- 16384 - Has Had Recent Surgery (12 Months)
- 32768 - Is Registered Organ Donor.
In my case, I would have to put together my number as follows: 1 + 2048 + 4096 + 8192 + 32768 = 47105. Again, do the hexadecimal conversion to save space and you get B801. We’ll pad this to 12 characters, hence 00000000B801. For the curious, this is a mere 48 true/false statements maximum. However, read on for my solution to that.
My IFFMIX string is now “IMI-00006D-00000000B801″. If we put in some more symbols to break it up (every 3 characters) you get “IMI-000.06D-000.000.00B.801″. Et voila, medical details in a 27 character string. Decodable (Slowly, but it’s possible) by human hands and very easy for a paramedic in a more developed country to punch into a portable decoder. Capable of holding 23 basic personal detail statements and 48 true/false statements.
On the subject of compression, here’s my suggestion. Instead of base 16 numbers, why not use base 36? A-Z plus 0-9 allows a huge compression of numerical data. Even if similar symbols are removed (So no Is and Os) it is still possible to perform a massive reduction, albeit at a reduced manual decoding speed.