|Version 3 (modified by 11 years ago) ( diff ),|
BluePrint for supporting multiple regions or incidents in one server
Humanity Road works on events in more than one area, each with different GIS characteristics. For instance, in one area, a complete GIS hierarchy may be available, and we can associate individual locations with the hierarchy location they fall in. In another case, we may not have hierarchy data other than the country, but perhaps we can designate a general area by a bounding polygon, or by radius around a point.
A person using the site would like to quickly select which region they're working on, and have the map centered on that spot, and search results and drop-down selectors filtered for that region or incident. Selecting a region to work on should not interfere with the site's overall GIS configuration, nor the user's own personal configuration.
An "incident" is a more fine-grained concept, involving not just location but also time and assigned personnel and resources. Don Cameron points out the importance of being able to specify an incident and identify what's associated with it, in order to implement an ICS (incident command system).
Incidents can overlap in time, region, personnel, and resources.
Regions and incidents touch on each other in several ways:
The user will want a way to select which they're working on at the moment.
The definition of a region or incident should be shared among (appropriate) users. That is, a site admin should be able to configure a region or incident.
And incident will probably need a region as part of its specification.
This is open for ideas -- please add suggestions here.
An incident involves:
- Projects / work assignments
- Material resources
- Vehicles assigned
- Inventory allocated
- Associated entities
- Other orgs involved
- Information (e.g. work logs, instructions)
Fran considered creating an org for each incident, as it has fields and components that would be appropriate, but says that may not be sufficient.
Many types of things are associated with an incident. The "relational" way to do this, without adding fields to entities, is to add relationship tables that associate an incident with each of the types. That is, there would be an "incident assessments" table that says which assessments go with which incident, and so-on for the other associated types. This allows overlap. When an entity is no longer needed for an incident, it's relationship can be deleted or "expired" by setting an end date. (If a "paper trail" is needed, i.e. a record of what was used for each incident, there are several ways of providing that. One is to add start and end dates to the relationship. Since those could clutter the table, one could dump / pickle historical data, or move them to a parallel set of "expired" relationship tables. Keeping it online would be more convenient for preparing reports. Simplest is to leave them in the main incident relationship tables but set their end dates.)