gnumed-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnumed-devel] Collating basic information on GNUmed DB structure


From: Karsten Hilbert
Subject: Re: [Gnumed-devel] Collating basic information on GNUmed DB structure
Date: Tue, 25 Jan 2005 17:45:55 +0100
User-agent: Mutt/1.3.22.1i

Hi Thilo,

I heartily welcome your intent to document.

> I will share the compiled doc in the wiki.
You might compile it right inside the wiki.

> I want to start out with the reasoning behind the DB
> structure. Just in principle and what it is able to record.
The first and foremost thing to keep in mind is that the DB is
designed to properly store

 *GP level care* medical data

This relates to the types of information it currently stores.
It then tries to

 store data independant of how to display it

> For example as from what I have seen most of the clinical
> information is stored as freetext.
You would need to ask why. The answer is that a lot of
clinical information in a GP practice IS freetext.

The approach is to store freetext and enhance that via
targetted tables (such as the code tables).

> The only exception is the diagnosis which can be coded too.
No. *Any* row in a descendant table of clin_root_item can by
"typed" by arbitrary numbers of types. Also *any* row in
clin_narrative can be coded, it need to be a diagnosis. Any
number of codes can be attached to a clin_narrative row. The
distinction between a type and a code is not very good anymore
and at some later codes may get merged into types. Mainly,
codes are "more formal" types, eg those belonging to a coding
system. Also it does not make sense (with conventional) coding
systems to try to code some of the clin_root_item descendant
(because, for example, vaccinations can be such child tables
and which field in that table to you want to attach the code
to ?). It makes sense, however, to attach codes to
clin_narrative rows, eg a piece of free text being coded. OTOH
it also makes sense to be able to type any clin_root_item
descendant such as a vaccination, and be it to just type them
"vaccination". This disctinction is because types are more
generic. Logically, this means that codes are just more
specialized types which I only realized a short time ago. So,
at some point codes might get merged into types.

Now, you'll wonder why some types are handled explicitely at
the clin_root_item level ? Those are the SOAP categories... I
few them as data types rather than arbitrary types of the
clinical content. IOW, any clinical content can be categorized
into SOAP (don't be fooled by their stock English *meaning*,
rather view them as something like levels of certainty or types
of information, like "this I got told, this I found, this I
thought and this I did/intend to do").

Now, we also have vaccinations, we also have allergies, lab
request, lab results. All those are more specialized, enhanced
clinical tables going beyond (but often including) free text
narrative. Some enhancing tables are missing, of course, such
as family history, past history, etc.

The way to look at the schema for *clinical* stuff is this:

- anything that is a clinical entity which cannot be split
  further without loosing meaning is put into a child table of
  clin_root_item

- the clin_root_item table provides basic fields all clinical
  items shall have, eg auditing, encounter, episode, soap
  category and a narrative field

- clin_root_item child tables enhance the simple narrative
  with more clinical fields



encounter                   episode (-- health issue)
         \                /
           clin_root_item -- type
           --------------
           - soap_cat
           - narrative
               |
               |
           vaccination
           -----------
           - additional fields
           - ...
        /                     \
 vaccine                       schedule


All clinical item tables have this structure. You can overlay
them at the clin_root_item junction. The top part will always
stay the same, the bottom part will always be different.

One reason is to aggregate all clinical narrative and not
scatter it across several tables.


> I took a look at the schema generated by autodoc. Have you
> ever tried to display the graphical output?
No as I don't have any of the software to display it. But feel
free to provide me with information on how to generate it and
I'll feel happy to put it up on the server.

> Have you ever investigated webdot?
No. Feel free to suggest something.

> I have read that the DIA diagrams have the problem that all
> the tables are stacked on each other.
Horst said so, yes.

> Please let me know if you know about any floating informaton pieces about the 
> the DB like 
> http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/gnumed/gnumed/gnumed/client/doc/developer-manual/db-architecture.html
>  .
> Please also tell me how up-to-date the information is.
No, please tell us the URLs and we'll tell you how current the
information is.

Karsten
-- 
GPG key ID E4071346 @ wwwkeys.pgp.net
E167 67FD A291 2BEA 73BD  4537 78B9 A9F9 E407 1346




reply via email to

[Prev in Thread] Current Thread [Next in Thread]