1. The application
The curious case of the Case Management System
What is a Case Management System?
We will be developing an application that implements a Case Management System. We believe this is a versatile project you can adapt to a large variety of uses. Depending on your group, a Case Management System may read as Patient monitoring application, Project funding reports portal, Customer relationship manager, Gossip blog or Photo album.
Let's see what we mean by Case Management System:
A system, in its general sense, is a set of interacting parts. In software, we like to call almost all things systems because this makes us feel like engineers. This application is a system because it involves more than one actor performing more than one action.
Management refers to controlling or organizing things. It is also a fancy word we use fairly often. In our application, management will refer to the actions of creating, editing, updating and deleting content.
A case is an entity, the abstract word for person, situation, object or piece of information.
Less abstract examples
Let's move from abstract terms to real-life examples:
In a small hospital unit, hospital staff would like to go digital and use a web application allowing them to:
- create a new profile with the basic information and photo of incoming patients
- post regular updates on health assessment and progress, treatment, actions and concerns
- adjust and complete the basic information we have on the patient
- delete the profile once the patient transfers to a new unit
On a dedicated discussion forum, the fans of a reality show would like to:
- open a topic for every new character
- post regular updates on relationships status changes, speculations, conspiracy theories and new haircuts
- change their favorite character's photo to the most flattering one
- delete the topic when the actor is hired by other producers
While scanning and organizing their old photo collection, the members of a family would like to:
- upload a newly scanned photo
- post stories and embarrassing anecdotes about the people on the photo
- replace the original photo with a colorized or higher resolution version of it
- delete a photo in which the mother-in-law does not look old enough
And back to the abstract model:
In a Case Management System, the users would like to:
- create a new case
- post updates of a given type
- edit the case
- delete a case
This level of modeling, or abstraction, is what allows us to pretend that gossips, photos and patients are the same thing. No wonder software engineers are weird.
Throughout this guide, we will use the generic terms: case, updates, type. In your groups, your mentors will help you adapt the terminology and presentation to the specific project you're working on.
To set the terminology straight, we will be working on a web application with users, able to perform actions, such as:
- create and edit content
- post updates on already existing content
- delete the content
The complexity of this set of actions is what allows us to call the project an application.
The application itself is not copied on every user's computer, it is hosted on a remote computer and users are able to access it through a web browser, such as Google Chrome, Firefox, Safari or Internet Explorer. This is what makes our application a web application.
There is no simple way of writing this section without starting a war among professionals. As newly born web application developers, our mission is to:
- safely store and retrieve data
- operate with a certain degree of abstraction
- get things done fairly quickly, but with sufficient control over details
- make everything work
- make it pretty
Essentially, we will make it work with Ruby on Rails and we will make it pretty with HTML and CSS.