gnumed-devel
[Top][All Lists]
Advanced

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

Re: [Gnumed-devel] Transferring/importing/bootstrapping from legacy syst


From: Karsten Hilbert
Subject: Re: [Gnumed-devel] Transferring/importing/bootstrapping from legacy systems
Date: Sat, 21 Jan 2006 01:09:30 +0100
User-agent: Mutt/1.5.11

On Fri, Jan 20, 2006 at 01:06:48AM -0800, Jim Busser wrote:

> To better help any reading I will want to do, could I ask some 
> overview of options or best methods of getting data from a legacy 
> system into gnumed?
Sure, that's what GNUmed is for, after all.

> Presently, I maintain some patient information in a program used for 
> billing, with the data stored in FoxBASE .dbf (dBase-compatible) 
> tables. It is organized loosely as follows:
> 
> - patient table fields including
>    surname + given names, date of birth, sex,

> health insurance num, demographics foreign key
> (administrative identifier) of other providers (family &
> referral doctors)
These would go into dem.lnk_identity2ext_id.

> - link table (patients' diagnoses)
Can you be more specific ?

> - icd9 table (into which I had created some extra, "custom" codes)
Official icd9 should go into tables in the "reference" part.
Your "custom" codes should likely go into
clin.coded_narrative which holds custom terms for
official codes. Any officially named codes that you
use would be shadowed in clin.coded_narrative as well.

> I am not sure whether there exists for postgres any tools that permit 
> it to "read" from the native .dbf form in which my data is stored,
Likely there are importers which read DBF and write to a
PostgreSQL database.

> or 
> whether that data would first need to be exported into tab, comma or 
> standard delimited format.
This might be useful depending on circumstances.

> But even with my data converted into a readable format, I did wonder 
> what kind of scripting I would need to get someone (e.g. local) to do 
> up for me.
Well, it doesn't matter too much. The two standard
approaches are to either write a script which takes a data
format and generates SQL statements which are sent to the
database or to use a generic import tool (say CSV import)
and load the data into staging tables. Then use either
standard SQL or a script to massage the data from the
staging tables into the real ones. I would suggest this:

- create a staging schema (say, "jb_staging")
- "somehow" import the data into staging tables
- use a script to read the data from the staging area,
  possibly do some transformations and write it to the real
  tables

> I noticed that the bootstrap files seem to specify within them both 
> the fields and the actual values of the data,
Those are hardcoded SQL statements, not a particularly
practical way for dynamic data import.

> Also, the first time this is done on an "empty" gnumed database, all 
> records that survive the data requirements/constraints will get 
> appended. But if any records are rejected (fail the constraints), is 
> the entire file import rejected?
That entirely depends on how you do it. The transformer
script (staging -> real) sort of needs to understand what it
takes to get the data properly imported. That requires
coding - some deduction may be possible as Syan points out
but that's cutting edge and quite advanced stuff.

> And if "no" (meaning the valid 
> subset of records *is* imported) is there any automatic or standard 
> practice that captures the records that were rejected?
automatic: no, standard: yes (use a log file)

> Has anything like this already been programmed / submitted into the CVS?
No. There isn't really a generic way to properly import
arbitrary data (into any database). There can only be an API
importers agree on using - which makes them pluggable.
Still, the guts of an importer/transformer must be written
and spelled out programmatically one way or another.

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]