On Tue, Feb 21, 2006 at 12:24:09PM +0900, Michael Glaesemann wrote:
> I don't know the details of your database schema,
If you want to you can look it up here:
http://salaam.homeunix.com/twiki/bin/view/Gnumed/DatabaseSchema
Feel free to comment !
> but I think the
> relationally proper way to do would be to have a separate table for
> the maximum ages for vaccinations that have them.
I know, but, oh no, yet another table ;-( And it would
also just lead to another form of NULL via left joins as you
point out below. I specifically wanted to avoid that by
something like 'infinite'::interval in some way or other
such that I could always do
"... where now < date_of_birth + max_age ..."
and not need an
"... or max_age is null ..."
in all the places.
> Vaccinations that
> *don't* have a maximum age would not have an entry in the table.
As you notice further down my predicate was wrong, actually.
You found the proper predicate by yourself, though:
"Do not care about the age of the patient when deciding
whether to give this vaccination."
> The "special value" method, e.g., "999 years" is another way of
> indicated a special value, but in this case I think it's a bit
> different. As I see it, the predicate for the vaccination_max_ages
> table is "The vaccination 'vaccination' must be given before the
> patient is 'maximum_age'". Using a special value changes this
> predicate to "The vaccination 'vaccination' can be given at any time
> in the patient's life." As you point out, using a sufficiently large
> interval for maximum_age makes that statement very likely to be true,
> but the predicate is not exactly the same. Not having an entry in
> vaccination_max_ages is much closer to the idea that the vaccination
> has no maximum age.
Well, but there's not really a medical difference between
the two AFAICT.
> That's the theory, anyway. Hope this helps a bit.
It confirms my thinking isn't entirely wrong.
> Currently on the todo list there's a mention of adding infinite
> dates, similar to infinite timestamps. Perhaps infinite intervals
> could be added as well?
I'd be delighted to have that happen.
Karsten
--
GPG key ID E4071346 @ wwwkeys.pgp.net
E167 67FD A291 2BEA 73BD 4537 78B9 A9F9 E407 1346