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
- class
cAddress
encapsulates an address in its own right
- class
cPatientAddress
encapsulates an address associated with a purpose and a patient
- method
create_address()
- method
delete_address()
- method
address_exists()
The following higher level functions use the above primitives:
business/gmPerson.py
-
cIdentity.get_addresses()
-
cIdentity.link_address()
-
cIdentity.unlink_address()