SahanaPy Haiti Response
The Sahana Software Foundation operates a SahanaPy instance at:
Services provided so far include:
- Capturing of information about Aid Organisations, their offices and their activities on-site
- Situation Mapping
- Request Management
If you think of volunteering for Sahana – welcome! – we have plenty of tasks for you, e.g.:
- Data collection and entry
- Documentation
- Translation (French, Haitian Creole)
- Code-writing
- Coordination of volunteers
- Communications
Join us on IRC:
International Forum on Disaster Nursing
I am currently in Kobe/Japan for a meeting on the International Forum of Disaster Nursing, presenting about our works in SahanaPy and the development cluster approach.
From the initial meetings, especially with Mrs. Janice Kishner (East Jefferson General Hospital, New Orleans), it is again clear that nurses are a leading force in emergency management, and there is a demand for tools like SahanaPy to better handle the situation, especially regarding:
- Logistics
- People Tracking and Tracing
- Human Resources Management
This confirms the priority list I already had for my SahanaPy works.
On the other hand, there’s still a huge need for localisation – and for better streamlining the development and project management in Sahana(Py) in general. There’s a lot of potential input, if we only take it up effectively and in time.
A portal supporting clusters from the foundation website would be very useful in this regard.
In re: Interoperability
David W. Bitner promptly added XSLT templates for KML and GeoRSS:
“This will be sooooo awesome for being able to quickly extend to read/write any format”
“Nice thing about this architecture is it allows someone like me to come in and add new formats without having to understand *any* of the code going on”
Interoperability
I actually like that built-in GPS of my NOKIA 6220 classic cellphone. This is not a highly advanced professional equipment though, and I’m just using it to map the landmarks of my daily travel – for no serious reason, but just for fun.
However, here is what makes it a Sahana equipment:
The landmarks collection saved in the cellphone can be exported in a very comprehensible XML format, and shared via SMS, E-Mail or Bluetooth.
The XML interface of the SahanaPy RESTful API uses in-line XSLT transformation for export and import of data, so I thought it would perhaps be cool to have a template to import the landmark positions from my cellphone as GIS locations in SahanaPy.
So I added the following XSLT template as “lmx.xsl” to sahana/static/xslt/import:
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:lm="http://www.nokia.com/schemas/location/landmarks/1/0">
<xsl:output method="xml"/>
<xsl:template match="/">
<sahanapy>
<xsl:apply-templates select=".//lm:landmark"/>
</sahanapy>
</xsl:template>
<xsl:template match="lm:landmark">
<resource name="gis_location">
<data field="gis_feature_type" value="1">Point</data>
<xsl:apply-templates select="./lm:name"/>
<xsl:apply-templates select="./lm:coordinates"/>
</resource>
</xsl:template>
<xsl:template match="lm:name">
<data field="name">
<xsl:value-of select="./text()"/>
</data>
</xsl:template>
<xsl:template match="lm:coordinates">
<data field="lat">
<xsl:value-of select="./lm:latitude/text()"/>
</data>
<data field="lon">
<xsl:value-of select="./lm:longitude/text()"/>
</data>
</xsl:template>
</xsl:stylesheet>
Then, I added “lmx” to the supported XML import formats of 01_RESTlike_controller.py:
shn_xml_import_formats = ["xml", "lmx"] #: Supported XML import formats
After that, I sent the landmarks file from my phone (via bluetooth) to my server and import it just by calling the following URL:
http://localhost:8000/sahana/gis/location/create.lmx?filename=/home/dominic/landmarks.lmx
Done! Now I can use my “landmarks” to track people and shelters and other things, view them on maps, link other resources…
Finally, I added another template to be able to export SahanaPy GIS locations as NOKIA landmarks in order to import them on my cellphone, and that works equally good, just exporting by calling:
http://localhost:8000/sahana/gis/location.lmx
and sending the exported file via bluetooth to the phone – it immediately audibly indicates a new message – and when you choose “View” for that message then you get a list of locations which you can easily view on map or load into the navigation system.
Cool.
This is the first implemented cross-platform interoperability feature in SahanaPy, based merely on the SahanaPy RESTful API!
Missing? Persons Registry
Some thoughts about maintaining “Missing Person” registries in disasters:
Sahana maintains a list of missing persons, and therein treats “missing” as attribute of a person entity, meaning, a missing report always creates or updates a person entry with status “missing” and additional information to support the search, while finding that person updates their record as “found”. That’s the usual way of maintaining missing person lists, but I feel this is wrong:
First of all – there is no such thing like a “missing person” – instead there are:
- Persons
- Reports that someone is missing a person (missing report)
- Reports that someone has found a person (find report)
Sounds the same? It isn’t!
“Missing” and “Found” are presence conditions that are completely independent, and can even co-exist. A person can be missing by their family, while being very present to aid personnel or the medical examiner at the same time. Or there may be persons that are actually “found”, but not reported “missing” – however, the question is – can the “found” person be identified?
If yes – then you simply update the person’s presence log and thus inform the database (and other users) where the person actually is. Let’s therefore assume that – like in VITA – for every found person – whether identified or not – there is a presence log in the database which documents where the person currently is and under which condition.
Let’s assume further, that missing reports are filed on identified persons only, whilst find reports are filed on unidentifyable persons and bodies only.
So the actual problem is to match:
- Identified Persons against Unidentified Persons/Bodies
This turns the “Missing Person” issue around – is a completely different workflow. Now you have to maintain a registry of “found”, but unidentified persons/bodies – while the “Missing Reports” are rather a helpful resource for identification.
Some people say this is discussing half-full vs. half-empty. But I’d say it’s a question of which audience you’re targeting.
Sahana now comes in two flavours
The development of a new codebase for the Sahana project has begun: SahanaPy.

SahanaPy is a ground-up rewrite of Sahana Phase 2 for web2py, which is a MVC web application framework for Rapid Application Development based on Python. The SahanaPy codebase also introduces distributed version control with Bazaar – with the main repository currently hosted on Launchpad.
Links: