Skip to content
Matías García Isaía edited this page Jun 8, 2017 · 2 revisions

History

Resource Map is a tool that is part of the open-source InSTEDD platform that evolved starting in late 2009 in the InSTEDD iLab in Southeast Asia. Original projects where it was applied (and that helped inform its design) focused on helping organizations manage geographically-augmented data about facilities, resources, and activities. Since data that isn't used gets stale, and data that is stale is never used, the design goals prominently ask 'how can we make this data useful for everyday work' for administrators, field workers, or web service architectures, depending on the scenario. A big driver of ongoing use is access to the data whenever and wherever it's needed, and lowering the effort to update it, so mobile access, visualization options and notifications are additive but important features.

Scenarios

Example use scenarios include

  • Keeping track of slowly-changing facility registries
  • Being a repository of facilities and metadata to use in a web services fabric
  • Tracking stocks of medication related to Malaria
  • Collecting and tracking information about water pumps, their maintenance, and toxicity levels entered manually or potentially for sensors

Types of users

While not strictly personas, we have run into the following user archetypes. One individual may interact with the system in one or more ways:

  • Collection owners who are accountable for data structure, permission management, and bulk updates.
  • Users who can browse and edit information.
  • Field users who can query and update information via their mobiles.
  • Advanced users who use this tool as part of a complex toolkit.
  • Developers & technical staff who use the API to query and update information.

User Stories

We choose to use user stories as the format to capture the requirements in a simple and straightforward way. Use cases tend to embed design and workflow decisions and thus are part of 'solution space', not purely 'problem space'. Use cases are more applicable to understand a specific implementation or design idea but as a description format it may cloud the needs of the users. Read more about user stories

We are thinking about how to add traceability metadata to these stories (i.e., make notes to see where these stories have been validated "in the real world" and how strong the validation is), ideas are welcome.

Also, the order of the following is not important; different audiences would reorder it for different purposes and different set of design concerns.

Basic

  • As a user, I want to see items as a list or a map
    • from one or more collections, so I can correlate datasets visually
    • I want to see a simple list next to the map for a quick browse of items
      • I want to sort by categories or organizational/admin hierarchies fields if they exist to simplify the browse experience.
  • As a user I want to see the detailed information about an item
    • including the data fields, grouped by layer and ordered in the same way the layer designer specifies
    • including time/user of the last update, so I can assess the reliability of the information

Search

=

  • As a user, I want to be able to search for items
    • Including field values and codes, so I can look for the data I need
    • By fields that are empty, so I can curate and complete the data as needed
    • By items that have no location assigned, so I can edit them when I have the information
    • By updated or Not-updated in a time window, so I can see which sites have not sent updates in a certain timeframe
    • By other values like item alerts
  • As a user I want to see search results including visual indicators from rules
  • As a user want to share
    • The URL of a search result so I can share it in email or chat and have people see the items with the same criteria
    • The result data of the query, as a CSV or a link to a JSON/XML document

Import/Export

  • As a user, I want to
    • Import data I have in CSV format so I can get up and running quickly from existing data I have
    • Get an example CSV file to which I can add my data so I'm not worried of breaking the import
    • Be able to review import behavior (field mappings, problematic rows) and accept import jobs so that I am sure I am importing good data, correctly
    • Be able to have long-running uploads and approval processes so any crunching that takes more than a few minutes doesn't break if I disconnect.
    • Import/Export via UIs and APIs of secondary datasets (reference lists, services codes, etc) in order to make sure they are kept up to date from other systems, or help me keep other systems updated.

Structured Data

  • As a collection owner, I want to be able to specify structured data to simplify correct data entry
    • Specifying layers which have logically related sets of information
    • Specifying fields in the layer from common types
      • String fields for text and free data
      • Numeric fields
      • Single- and multi- select fields
  • As a collection owner, I want to be able to sort the layers and fields in a specific order that matches how I think about organizing the information or mimics paper forms I use in other processes.
  • As a user, when I'm adding/editing items I sometimes want to have a field suggested as 'auto numeric', assigning incremental integer values based on the maximum historically used.

Map visualization

  • As a user, I want to be able to see different collections of items on the map
  • As a user I want to select imagery options including popular Google Maps and OSM
  • As a user I expect to see basic mapping options like zooming, panning, see scales, etc

Authorization and Authentication

  • As a user, I want to be able to create an account, manage my credentials, reset my password, etc
  • As a collection owner, I want to be able to
    • Give access to other users by inviting them, regardless of whether they are registered or not
    • Give explicit permissions for users to view and/or edit data in different layers
  • As an anonymous user, I want to be able to see public collections, perform searches, and access the API for public collections
  • As an owner of a collection, I want to be able to make other users owners or revoke owner privileges
  • As an advanced user, I want to be able to log in with an OpenID so that my credentials are managed elsewhere
  • As a collection owner, I want to assign users to an item/site in order to give limited edit permissions

Activity Stream

  • As a user, I want to see what uses have been doing in the system, so that I can manually or automatically react to the changes
    • optionally including items added, removed and edited, so I can subscribe and update other systems
    • optionally including schema and layer field changes, so I can propagate lookup values
    • optionally including changes in users and permissions, so I have a lightweight audit trail of access changes
    • optionally including mobile activity, so I can track SMS and smartphone activity from the field
    • filtering by collection, so I can get the relevant changes only
  • As a developer/integrator, I want to be able to get the URL to the ActivityStream URL conforming to selected filters such as the above, to paste in other systems that subscribe to changes.

Mobile

  • As a collection owner, I want to be able to manage mobile access to allow field workers to see and update data
  • As a field worker, I want to be able to query and update information via SMS so that I can do it from any phone
    • Using simple IDs and syntax so I can minimize errors in the SMS entry
  • As a field worker, I want to use my smartphone to see and update the data, taking advantage of larger screen, GPS, sensors, etc.
  • As a collection owner, I want to be able to configure the mobile gateway through which SMS updates will happen
  • As a collection owner, I want to be able to authorize specific mobiles to access collection information. If available, I want to integrate with an existing worker registry to not have to duplicate contact information.
  • As a collection owner, I want to see mobile messaging activity so I can assess and troubleshoot reliability and syntax issues of the SMS exchange

Versioning & Tagging

  • As a layer owner, I want to tag items in a collection as a certain version
    • so that I can recall, in the future, what the information was like as a snapshot at this point in time
  • As a user I want to select to see the 'latest' or a particular past tagged version of the item
    • As a data manager I would like to compare and old and a newer version to see what have changed.

Values Tracking

  • As a user, I want to be able to see information about past updates to items
    • including changes to numeric values to visualize trends over time

Thresholds

  • As a user, I want to be able to visualize items differently depending on rules
    • specifying rules that are larger/smaller -than, equal to; something
    • specifying rules that are absolute in values (33 beds) or relative to a field baseline (85%)
    • indicating a different icon so I can at a glance differentiate items that pass the rules on the map.
  • As a user, I want to be able to trigger alerts from a rule, where sites or users can be sent an SMS or email so that they can react immediately to the condition

Reminders

  • As a user, I want to be able to notify item owners to update or verify information
    • specifying a one-time message to send immediately or a message to send on a recurrent schedule
  • As a field worker, I want to get mobile alerts with useful info to help me update information

Public Data

  • As a collection owner, I want to specify if a layer is public or private to expose information on the web or keep it only for specific users
  • As a collection owner, I want to select some of my collections and create an embeddable map to be able to show maps of items on my own website, blog, etc.

API

  • As a developer / integrator, I want to:
    • Have full REST APIs around all entities in the system including items, schemas, permissions, and metadata
    • Have search/query APIs that are flexible for the different slices and dices of information other systems need.
    • Have validation APIs that are fast and allow
    • Have access to information in XML and JSON formats
    • Have a notification mechanism around changes to data, metadata, permissions, etc.
      • Including information about the verb/action and URI identifier of the affected resource
    • Support HTTP basic authentication, SSL and basic security approaches
    • Have clear and updated documentation for the APIs
  • As a collection owner, I want to specify codes to fields, and to options in lookup fields, so that the information exposed in APIs have a stable schema that is not dependent on labels and internationalization.

Deployments and Operations

  • As a technical implementer, I want to be able to host my own version of Resource Map to control the physical environment and versioning of the system
    • I would like to be able to get a virtual machine image I can run locally or host in the cloud in order to speed up and reduce the risk of provisioning. Ideally data could be migrated easily between an old and a new instance.