01-V-1995.

What holiday we had ended up in the evening, back to work over Horgoš. There's no trace of any work on next day, though, just the patient form generated at 17:38.

But then on 3rd I was all over the place. Stepped on MEC, on GenerAll (made the form driver try to recognize the currently active field, then if the user presses F1 it should open help for that field or form to which it belongs - context sensitive help even before we knew it will once have a name). Generated the table rebuilder (a rebfbfs.prg by rebfpt.prg) for PolC, messed with BarSys too (though it's that phantom transportation summary, what's it doing there...). I also touched the big query generator... everywhere.

And here it is, found it - the big deal of the day. Separation of patient table into a tall and a wide table. Um, yes, doctors and informatics... When we designed the patients table, Vanji wrote down the full list of fields they mentioned, in conversation, as necessary. Among them there was a long list of yes-no fields for various previous diseases (had/didn't have), surgery (had/didn't have), hypertension, pacemaker, orthopaedic aids, diabetes, allergies... heaps of those. I made a minor miracle to just stuff all of that in a single form, with overlapping pages - literally invented a pageframe before it existed (or before I knew what a pageframe was - fox for Dos surely didn't have it).

Of course, the table was huge and this created quite a problem - this was coming close to the limits of the network's capacity (at 40 workstations, in Novell 4.0.2) so the table would (initially) crash often, and this was actually pointless. All those fields make sense in a hospital, where the patient may reappear after a while, so three years later when he comes back we have the history and at least some relevant parts of the anamnesis. For a polyclinic, where most of them come only when it becomes urgent, either straight walk-ins or sent by their local doctors, there's nobody who'd even look at all those fields, not to mention enter them. The data are not there, and the space reserved for them keeps growing.

So I came to the idea to make a Stan and Olie scheme. Stan, i.e. the base table, would have a record for each patient, with just those columns which are regularly entered, and we already knew which these were. Olie, the wide table, would have a record only for those patients where at least one of those extra fields had a value. In the end (i.e. the last backup that I have kept) the narrow table had 7000 records and the wide one 1500 - but even among those, only 15 records contained a blood group. It was still very sparse. This took some work to achieve, but it paid - the system was now much faster (and stabler, now that the Novell doesn't crash after the update), and the disk space taken was reduced.


Mentions: BarSys, fox, GenerAll, MEC, PolC, rebfpt.prg, Vilmoš Baranji (Vanji), in serbian