The Concept of address

The important point to realize here is that an address is nothing but a convenient label for a location with an intended purpose of use for said location. In other words, addresses are the names of locations intended for non-random stay. It doesn't matter who - or in fact if anyone - actually lives there.

Based upon this GNUmed handles addresses conceptually independant of people who might live there. This means one address - it being a name for a geographical location - should only ever be stored once in the database. People living there are then linked to that address by means of a two-way assocation table. That table allows attaching a meaning to that association such as work, home, etc.

This in turn means, that there is no middleware primitive along the lines of patient.change_address() or patient.delete_address(). There rather are a few primitives operating on the above assumptions upon which higher-level functionality is built:

business/gmDemographics.py

The following higher level functions use the above primitives:

business/gmPerson.py