Version 40 (modified by Fran Boon, 15 years ago) ( diff )



Haiti RMS (Request Management System)

University of Wisconsin Python club are leading on this: #sahana-py

Keep it real simple to start with - get something usable quickly, which we can then refine later if we gets needs to do so.

Other parallel efforts for which interop would be nice:


  • It would be nice if RMS had 4 tabs: ("request aid", "view requests/make pledge", "administer pledges", "search requests")
  • We might think of how the RMS might be modified to record assessment data and manage requests for doctors, supplies, etc. (HMS is the big live system for us)


Production (100122@15:30UTC)

  • view with sms feeds from Ushahidi
  • view with twitter feeds from TtT
  • SMS alerts on map viewer (need repair)
  • pledge system with pledges as component and requests as resource
  • ServerSidePagination (currently disabled due to filtering problems)

Development (100122@15:34CT)

  • in production

Experimental (100122@15:345UTC)

  • launchpad branch (~uwthw/sahana/rms)



  • re-enable server side pagination
  • Administer pledges dashboard showing multiple pledge items by pledge organization (joined resource commented out in branch)
  • start moving docs to UserGuidelinesRMS)
  • feed from Tweak the Tweet split feed into 2 tables: #offer & #help
  • report generating functionality assigns id (alpha, beta,...) to pledges every ~6 hours to facilitate tracking by relief organizations
  • closed-loop RSS feed back to feed sources - showing request fulfilled (Ushahidi/TtT)
  • allow options for filtering by category/priority/fulfilled/city/type
  • test/repair "search requests"


  • repair sms feeds in map view
  • icon showing status of pledge set with represent (red = unpledged, green = pledged)
  • connect comment fields to each pledge for follow-up and record keeping by the pledge donors. This table is commented out and can be connected as a component.
  • change representation of "make pledge" to a button
  • remove persistence of the add request form at the top of View Requests/Make Pledges
  • add a separate tab for "request aid"
  • review/triage bug tickets in light of new production version


We decided to combine the requests from different feeds into one table via the cron script. This has the benefit of transitioning from the previous prod pledge system without changing the current tables. Also it means that feeds are stored "as is" for posterity. The origins are tracked with source (e.g. sms, tweet) and source id (ushahidi ID and TtTid). The source ids are necessary to close the loop with these groups by sending back info on which requests have been filled. The con is that there is duplication among tables.



[11:29am] nicopresto: would screenshots be helpful?
[11:32am] flavour: screenshots 4 what?
[11:32am] flavour: For the User Manual?
[11:32am] flavour:
[11:32am] flavour: We have paolo volunteerting to help with user manuals once code has stablised  a bit
[11:33am] nicopresto: screenshots of the rms as we build it .. will check guidelines
[11:33am] flavour: You can ping him directly:
[11:51am] nicopresto: mprutsalis: we briefly outlined were we made it to on the wiki ( We have request and post forms, then wrote a cron job for getting the GeoRSS. We'll update the cron to the new feed link you sent. We're currently checking over the forms to get them ready for dev
[11:52am] nicopresto: the launchpad branch is at (~uwthw/sahana/rms)
[11:54am] mprutsalis: need to keep it simple for haiti-- you've seen the quality of data...
[11:55am] mprutsalis: so we post it all - make it searchable/listable by category....
[11:55am] mprutsalis: if you are on skype - I can add you to the chat room there working on this project
[11:59am] mprutsalis: oh whoa - that feed is really a mess 
[12:00pm] nicopresto: yea
[12:04pm] flavour: feed is the main incident feed isn't it
[12:04pm] flavour: Not the 200 RMS line
[12:04pm] nicopresto: ok we'll separate the sms messages from our request table and offer another tab that shows simple/searchable SMS messages. Shouldn't take long and we could get to dev in ~2 hrs.
[12:08pm] nicopresto: ok so  we have 2 feeds (let's call it "4636") and (let's call it 'haiti"). We've been using "haiti" and will switch to "4636". We'll display that info in a separate tab. So we'll have 3 tabs at the RMS: "request aid", "pledge aid", and "view SMS requests" ... cool?
[12:09pm] nicopresto: similar to the php side bar (
[12:09pm] flavour: sounds good
[12:10pm] flavour: I see I need to work on the Map-based Lat/Lon entry urgently
[12:11pm] flavour: 4636 isn't XML?
[12:11pm] flavour: Just the way it displays in Chrome
[12:11pm] flavour: FF tries to open in Google Reader
[12:12pm] mprutsalis: 4636 replaced 200
[12:13pm] flavour: 200 was suppoosed to be vols accordint o chamindra but the data there seems an MPR
[12:15pm] mprutsalis: hunh... I think 200 is abandoned effort - that was going to be the shortcode in haiti for sms but they couldn't get control of it so migrated to 4636... is new data going into 200?
[12:19pm] flavour: Looks like 3 sample entries to me
[12:31pm] mprutsalis: update from ushahidi... they are making more features to the rss feed "in a bit"
[12:31pm] mprutsalis: [1:29:31 PM] Brian Herbert: but for now, you can do paging
[12:31pm] mprutsalis: [1:29:38 PM] Brian Herbert: just add &limit=0,50
[12:31pm] mprutsalis: [1:29:44 PM] Brian Herbert: that number works just like mysql
[12:31pm] mprutsalis: default is 50 items so you aren't going to surface all reports without using the limit
[12:32pm] mprutsalis: also - Katie Stanton from US State Department - latest project is connecting organizations who can donate things like laptops, generators, phones, etc. with those working on the ground.
[12:32pm] mprutsalis: I have offered up standard RMS functionality - you are working off those specs - for this....
[12:32pm] flavour: Great - we want uers 
[12:32pm] flavour: Users
[12:33pm] mprutsalis: so much going on everywhere... hard to keep up.
[12:34pm] flavour: I think good if nico is the PoC for RMS
[12:35pm] mprutsalis: ok - nico I will introduce you to the 4636 room....
[12:35pm] nicopresto: great thanks
[1:36pm] nicopresto: mprutsalis: typo above (11:51am) I listed a link to an older php rms doc.  Our status is on
[2:04pm] mprutsalis: thanks nicopresto... the older doc is good overview for less technical like katie... that's why I used it.
[2:05pm] nicopresto: yes, that document was also very helpful for us
[2:15pm] }flavour{ joined the chat room.
[2:29pm] }flavour{: <mprutsalis> request management is priority focus...
[2:29pm] }flavour{: <mprutsalis> US State Department wants a registry of pledged in-kind donations from US organizations/companies - that can be matched with needs of organizations on the ground in haiti....
[2:31pm] nicopresto: we've got the georss going ... working on an interface
[2:32pm] nicopresto: we used the built in organization table, correct?
[2:32pm] mprutsalis: sure... if that works.
[2:32pm] mprutsalis: let me know when there is something to look at (in dev)
[2:34pm] nicopresto: ok we'll post our rough draft to branch in a few ... our database
[2:34pm] nicopresto: ... our database structure is flat and not very pretty yet ... working on it
[3:10pm] nicopresto: ok new georss cron just worked ... adding validation for duplicate guid fields then moving over to branch
[3:22pm] scopatz: Ok we are testing our cron job right now....this is the last step (for the moment!)
[3:27pm] nicopresto: starting to upload
[3:27pm] nicopresto: editing wiki
[3:31pm] scopatz: Pushed to lp
[3:32pm] scopatz: you should be able to grab our changes any time.
[3:33pm] scopatz: Note that we added a cron job for rms ( but commented it out
[3:33pm] scopatz: you should uncomment  for it to work
[3:34pm] flavour: ok, I'll get back to you for help if reqd


<chamindra> Basically there will be loads of requests for aid coming from the field 
<chamindra> by sms, through calls and otherwise
<chamindra> and people will have to enter these (millions) of requests quickly into the system for tracking
<chamindra> there is no time for complex workflows and approvals, so the system has to be extremely quick
<chamindra> if we can enter everything for a request in one html form that would be ideal
<chamindra> similarly there will be loads of people offering donations of aid of various things
<chamindra> often they cannot be used immediately 
<chamindra> but they need to be tracked so that when a need arises the donation and the person who offered it can be found
<chamindra> This is the main objective of the request management system, to connect people who need aid and people who are offering it
<chamindra> however to do the matching you need to agree to some measures
<chamindra> I need 100 Kg of Rice

<chamindra> bit the person that pledges can only offer 40Kg
<chamindra> so you match it but note that there is 60Kg remaining to be delivered
<chamindra> but you need to track the remainder that was not fulfilled

<chamindra> so we now have an added part of getting unstructured data from various sources
<chamindra> basicially someone is recording some information about aid, without reviewing the content and send it to us
<chamindra> first step is someone needs to convert that to a request for aid or pledge
<chamindra> so on click of the queue that is coming in (as a GeoRSS feed from Ushidhi right now of their SMS messages) you convert it to the first step of a request or a pledge
<chamindra> once you click that item is no longer in the pending queue (it has been read and processed)
<chamindra> So let's think through what a typical situation would be
<chamindra> someone would make a call with a request or sms a request
<chamindra> fist step would be to enter what is needed
<chamindra> and it will be a list of items
chamindra> sometimes they will just say "food" or "water" without a quantity
<chamindra> but then you need to ask for how many people
<chamindra> which is why that field is there for
<chamindra> units are not compulsory
<scopatz> How specific does, say the food field need to be?  
<scopatz> For instance, is Rice good enough, or do we need to be very specific like Brown Rice
<chamindra> IMO not very
<chamindra> possibly you can have a highlevel drop down category
<nicopresto> AJAX dropdown
<scopatz> Right that is what I was thinking
<chamindra> no ones going to care with the rice is brown or white right now me thinks :-)
<scopatz> because the alternative would be a foods string that then gets parsed
<chamindra> but you are right in some instances
<chamindra> like if it is pork or for religious reasons
<chamindra> so possible as you said one high level category
<scopatz> OK so we'll come up with a representative list for a drop down menu
<chamindra> food, water, aid, medical, etc
<scopatz> Great, that makes life easier for the matching
<chamindra> and a free text box for the sub category
<chamindra> on the free text thing, there reason is that strcuture can create a bottle neck
<chamindra> unless that process can be made easier.. like using an AJAX lookup so that you avoid spelling mistakes
<flavour> We have an AJAX autocomplete widget in SahanaPy
<flavour> I can help with that
<flavour> For use where dropdowns become unwieldy
scopatz> Maybe we'll add that later, I think the goal now is to get the basic RMS up and running
<flavour> scopatz: Yes, that's icing...getting *something* quickly is key

<chamindra> also you will have many types of items per request
<chamindra> one request will consist of multiple items (like a shopping list)
<chamindra> so each one needs type, description, units, quantity
<chamindra> but you can consider the whole request being from one contact, phone, and for a number of people
<chamindra> good to have a backup phone and contact as well, in case the primary disappears
<chamindra> but that is optional

<chamindra> one last bit
<chamindra> and that is the matching part
<chamindra> once you get a request.. you can do a lookup and see if there is a potential match for it in the pledges
<chamindra> and vice versa
<chamindra> so even immidiately as they are on the call, they can respond saying there might be some options
<chamindra> at the end of the request, show a list of potential full and partial matches to the request

<chamindra> remember think simple intuitive interface
<chamindra> no complex workflows and approvals


Note: See TracWiki for help on using the wiki.