DevCamp Toronto was a lot of fun with awesome speakers. Looking forward to more events from Make Web Not War, it’s a great place for open source and community talks. Loads to learn and enjoy!
To prepare for the presentation I had written up the gist of my presentation… and here it is with the slides!
I’m going to talk about Care, a cloud powered
application to help empower patients to take
an active role in their healthcare. I am also
going to talk about why and how we took Care
to the cloud. And of course I’ll talk about the technologies
Every idea spawns from some needs and the need for our application was brought into attention at Code Your Art Out in the summer. Now what are the needs?
Almost 80% of Ontarians over the age of 45 have a chronic condition but the time of healthcare professionals is limited so many have to manage their own conditions. The time between appointments for patients is usually long causing lack of communication and miscommunication of patients’ symptoms.
The adoptation of technologies is slow, in the healthcare industry at least, and it’s understandable, typical healthcare applications will cost about $30,000 in infrustructure and IT. Especially if you are focusing on non-profits, as we are, it is so expensive for them, deploying applications to solve problems become an impossible task for them.
To tackles these needs Care exists. Unlike most healthcare applications its aim is to solve a small and realistic problem.
In its core, it is a personal symptom management tool. It provides guided forms to record symptoms and create reports out of them. It’s a powerful yet simple way of involving patients in their care, also of providing healthcare professionals more accurate information about their patients and their symptoms. And how we involve our partners is by making
Care a family and group focused application so that patients can share this information with the people helping them through their conditions.
That just solves one part of the problem, connecting patients to their professionals. To solve the problem of lacking infrustructure we picked the cloud. By hosting applications on the cloud we’ll be saving thousands on infrustructure, IT and utilities. It provides for a secure hosting environment with amazing fault tolerance. As developers we have access to utility style software services with greater performance and features, something we can provide to our partners. And as
developers we get greater control over our software features and versions preventing fragmentations and giving us access in case some nasty bugs creep in.
Now what are the tools we used to build Care and how are the feasible for our non-profit partners?
Microsoft Windows Azure with its utility style platform, it’s cost effective for us to develop
using the technologies we want. We mainly a .Net firm so we love using ASP.Net MVC, it you’re
familiar with the MVC architecture, you’ll know that it’s a beautiful framework to work with.
For our ORM we use Entity Framework Code First which plays nicely with both MSSQL and MySql so we
can deploy which ever suits our partners’ needs. For the UI we leverage open source frameworks Blueprint, jQuery UI, Mobile. All of this is served through Nuget, my personal favorite to explore and find open source tools
Care wouldn’t be what it is without the support of its partners in Colorectal Cancer Association of Canada
and Hope and Cope working out of Montreal. We also need you to partner with us to
bring Care to patients who need it. We are also would love to connect with you and
hear about your ideas and experiences. You’ll find our company and myself on these Twitter handles.
So, I spent last few hours figuring this out. AppHarbor is pretty nice. AppHarbor is free for one application, one database and it does work with SQL Server CE. I just deployed a stripped down version of one of my MVC projects there and it’s pretty smooth. So, here’s a run down of how it’s done, so that someone else might not need hours.
Stripping the project down was a breeze, you’ve got to love Object Oriented design, it’s beautiful. Deploying the project was a no-brainer too, if you’ve had some experience with Git. But testing, as ever brought out the issues.
I was using Entity Framework Code First (EFCF) as my ORM and it likes to drop databases. I didn’t realize it since it’s natural for EFCF to. And for good reason too, for when you change your models. On AppHarbor, you don’t get permissions to create databases. Thus the problem.
But no fear, NuGet to the rescue. Again. Actually, community to the rescue. There’s a workaround for EFCF’s
DontDropDbJustCreateTables. You can find here on NuGet. It plugs in beautifully to your application and all you need to do is enter your context name. Also, you will have to get a new database from AppHarbor since already EFCF dropped it.
Also the connection string should include a
providerName otherwise, exceptions!
<connectionStrings> <add name="connection string name" connectionString="Server=db003.appharbor.net;Database=dbXXXX;User ID=dbXXXX;Password=YourPassword;" providerName="System.Data.SqlClient" /> </connectionStrings>