Final prep for NACCHO PHP 2012 Summit

I'm presenting a poster with Dana Carey and Hannah Aalborg from Yolo County Health Department about the FastTrack trials I've conducted with them and San Francisco County Health Departments at the National Association of County & City Health Officials (NACCHO) Public Health Preparedness Summit next week in LA.  The official title of the poster is:

Managing the Med Surge: Lessons from low-cost real-time instrumentation of clinic and POD operations using cheap mobile devices and on-demand cloud services

  • Poster Number: 44 
  • Poster Group: Group 1
  • Poster Presentation Date: Wednesday, February 22

I presented at the CDC SNS Summit last July and I thought that the poster presentations were actually a better forum for discussing new ideas like this.  The downside of a scheduled speaking role is that you are limited to a particular slot and audience size while the posters will be available to everyone for the entire day.

When I read the directions from the conference organizers, I gave it a double take because of the poster board size: 4 x 8 feet!  I haven't put together a poster since my 8th grade science fair project (second place, still have the trophy) and expectations have grown quite a bit since those magic marker and posterboard days.

I got some great design inspiration from an old roomate Caroline and decided to go big and bold.  I drew from cosanta's  website color pallete:

Cosanta-fasttrack-naccho-poster-v3b-scaled-7x11

While many folks recommended powerpoint, I used Inkscape to draw the poster as it gave me much better control of each element and it was much easier to scale the images as it natively supports SVGs.  The only problem I had was when I tried to export the file to a PDF for the printer (ProPrint Boston) as my laptop choked on it.  After some experimentation and back-and-forth with ProPrint, I was able to perform a bitmap export to a PNG with 300 DPI.  I scaled the poster down to 4'x6' as I wanted some room on the side of the poster to hang some takeaway information but I was still shocked at the size of it.

I'm looking forward to the trip to LA and getting some excellent feedback on what we're working on.

 

 

New for FastTrack: managing your organization

I rolled out a new version of FastTrack that contains a set of new features focused on managing your organization.  FastTrack Organizations are how users and metrics are collected:

Each organization, say a health department, in addition to having users that can count and monitor your metrics, will have some users with the role of 'org admin'.  When they log in, they now have the ability to make changes to the existing users and metrics as well as create new ones.  Here is a diagram of the components of a metric:

These capabilities will come in very handy during live clinics when you realize that you need to make unexpected changes to your measurements.  Maybe a new vaccine lot # arrives; here is an example of the steps that a clinic manager would follow to add this lot number to their metrics so that it is available to their counters:

  • log in with your org admin account (e.g. admin@healthdept.org)
  • select the vaccine metric
  • select the lot # field
  • select ‘add a new field option’
  • type in your new lot # and click save

In the event that a bunch of new volunteers showed up at your clinic to help you with counting clients, you would follow similar steps to add new FastTrack users.  

 

On to 2012!

The last last few months of 2011 were very eventful.  Ali and I got married, found out that her transfer to Boston was approved, honeymooned in Ireland, found a new apartment, moved from California to Massachusetts, and I started a new job.

I also helped out with a seasonal flu vaccine in Woodland CA, where we used FastTrack to measure vaccine use and survey responses.

I've got into a good habit a couple of years of writing down my goals for the year and then reviewing them every so often.  The reviews weren't all the regular but I tried to give it an honest gut-check every 3-4 months.  I didn't get to everything but I was surprised by how much I did and it gives me the motivation and confidence to pile on a new bunch of things I want to accomplish and challenge myself with.  Three of the most important parts of feeling good about goals are aligning them with your passions, being real honest in measuring progress (or lack of), and a willingness to accept that you can't do everything.

CDC SNS Summit 2011: Rural Communities

One of the primary challenges that health departments in rural areas face is the expectation that they meet similar preparedness requirements as their urban area counterparts with dramatically lower funding.  With the formation of the Department of Homeland Security (DHS) in 2002, the federal government started to invest heavily in preparing local communities for terrorist attacks through a number of different programs such as the Urban Areas Security Initiative (UASI) and the Cities Readiness Initiative (CRI).  The primary focus was to prepare large population centers, leaving rural communities with the hope that some of the money or resources trickled down.  Of the $1.8B that FEMA distributes as part of the Homeland Security Grant Program (HSGP), almost 20% goes to New York alone.  Below is a chart that shows how UASI, one of the main elements of HSGP, is distributed by location:

 
2010curvev2

 
From what I’ve learned about public health, most of their funding comes from these specially ear-marked grants and they cut across many federal agencies (e.g. CDC, DHS, FEMA, USDA).  You’ll hear many in public health lament that they spend more time maneuvering through a very dynamic grant landscape than they do on constituent health issues.  The continued budget cuts will only exacerbate the situation.
 
Unfortunately, many of the big-city investments, such as bomb robots and urban command and communication systems, have little practicality in the countryside.  The up-front hardware investment is one issue but the ongoing training and maintenance costs simply aren’t tuned for low-budget health departments.  While it's true that big cities like New York and LA are responsible for the security of many more people, the functional requirements for systems that serve someone in Montana don't differ much from someone in Chicago; it's an issue of scalability. Small health departments still need Electronic Health Records (EHR), medical screening applications, and immunization databases. Sustainability across the health department budget spectrum must be a design goal of systems that want nationwide adoption.  Rural communities find themselves with neither the direct funding nor the staff to leverage urban area investments.

References

 

CDC SNS Summit

I recently presented FastTrack at CDC’s annual Strategic National Stockpile Summit in Atlanta, Georgia.  As I designed and built the application, most of my product discussions were with health departments in California, so I was looking forward to getting feedback from organizations across the country. I was also very interested in learning about problems in rural communities, discussing solutions already in place in large urban areas, and understanding the role of various federal agencies like the CDC.  I’m going to cover each of these three areas in separate posts over the next few days.

You can find a copy of the presentation over at slideshare, or just flip through below:

Podcast review: Aneesh Chopra and Barry Silbert

My brother was recruited by NASA after grad school to work on the Aquarius Mission and I drove down to Vandenberg AFB (North of LA) for the launch of the satellite last week.  Faced with 12 hours of driving, I made sure I had plenty of podcasts to pass the time.  My podcast feed includes Missed in History, This American Life, The Economist, and Stanford’s Entrepreneurial Thought Leaders Seminar (ETL); more than enough to keep me occupied.

Stanford’s Tech Venture Program, which sponsors the ETL series, brings in leaders from various industries to talk about their experiences in the business world.  On the whole, I’ve found these to be very educational.  Naturally, some speakers are betters that others and sometimes I find the discussions tangential to my interests, but with business being business, there are kernels of truth to be found regardless of the domain.  

Of the podcasts I listened to on the road trip back, I put together a few notes on the following speakers:


I’m going to post about Aneesh’s and Barry’s podcast tonight and I’ll try to work in some time during the week to post about Jennifer’s and Geoffrey’s.  

Aneesh Chopra, US CTO

I always wondered what the US CTO did and it’s clear that one aspect of his job is to get the next generation of leaders focused on 3 big core areas: health-care, energy, and education.  He discussed programs like Startup America and DC to VC, which got me excited about my own efforts to instrument health departments.  In fact, Aneesh used the term instrument so much that I finally felt fine about my own over-use of it in my FastTrack presentations.  

There were times in his prepared remarks when I didn't like the sales-pitch tone, specifically talk about becoming a billionaire and lunch at the White House mess. I'm all for encouraging innovation so I have to accept that in order to get new college grads interested in government over high-growth startups, you need to dangle the dollar.

I am a big fan of his position on immigration. As an immigrant from Ireland, I may not be very objective, but it just seems like a win-win to staple a green-card on to a diploma in certain high-need areas like STEM.  A study from Duke University found that 25% of startups from 1995-2005 were led by one senior executive born outside the United States. The United States was and will continue to be built by attracting the best and brightest from around the world.

I found Aneesh’s speaking style very unique.  He was very energetic and mostly spoke in 5-6 second chunks; very rhythmic.  I’d like to catch him 1:1 and pick his brain on taking best practices from nations that do a better job in those 3 core areas.

Barry Silbert, Second Market CEO

Barry Silbert’s company, Second Market, is the company behind the market that trades private stock for Twitter, Facebook, and a growing list of new companies.  It’s hard to get into all the details but the key takeaways for me are:

1. My retirement plan could be screwed.  If the highest-growth companies decide to forego the traditional public markets (NYSE, NASDAQ), what does that mean for my portfolio?  

2. Startups will have less time to return money to early-stage investors.  Now that they can pull money from the private market, the pressure will be on startups to demonstrate “success” as quickly possible.  Success of course will be defined by their ability to convince others of the opportunity.  

One of my concerns throughout Barry’s talk was the issue of transparency.  He mentioned that these secondary markets are regulated by the federal government and that they are required to file documents similar to public companies, but that fact doesn’t give me too much confidence.  I’m convinced that these new markets will be very disruptive to the investment community.

 

Using FastTrack for surveys with SFDPH

I ran the second of three trials of FastTrack with the San Francisco Department of Public Heath's CDCP a couple of weeks ago.  When I first designed FastTrack, my focus was squarely on collecting data about real things like vaccines and people.  My goal was to provide clinic managers the data they needed to make operational decisions, such as bringing on more staff to increase client (i.e. patient) throughput or drawing less of a particular vaccine lot # from the stockpile due to low demand.

For this second clinic, I wanted to tackle a more subjective but potentially more enlightening metric: patient perception.  What if the staff could view in (near) real time how the people who came to the clinic thought about it?   I’ve seen paper-based surveys conducted but the results are usually not available for many days (if not weeks) as the results need to be manually entered.  What if a clinic manager, whether onsite or not, could just glance down at their phone to see what people thought as they were at the clinic?

I didn’t need to make any software changes as I was already redesigning how metric properties are configured.  “Metrics” in FastTrack are the atomic element of what is being measured.  A typical clinic could have 1 metric for vaccine and another one for clients.  Properties of a vaccine metric could be the lot #, dosage, who administered it, etc.  Properties of a client metric are usually the standard demographic elements: gender, age, zipcode, etc.  With the redesign, I could now make changes to Metric properties during a clinic, such as adding a new survey question or adding new options.  The redesign followed the new HTML5 form and input standards, which are nicely summarized in the DiveIntoHTML5 website.  Under the covers, a metric property maps to an HTML5 input or select fields.  A nice advantage is that the browsers on most new mobile devices take advantage of these new field types such a range, number, datetime and display the appropriate controls.
 
I’ve pasted a screenshot (from an iPad) of the results of the survey from the second clinic with SFDPH:
 
  

Some notes about the screenshot and questions:

  • In order to display the results as efficiently as possible on smaller screens, the screenshot displays a coded form of the questions and answers.
  • I'm a big fan of small multiples for data like this, so optimizing the output for display on a single (ipad size) screen is a design goal. Imagine if you had to scroll down or flip around multiple pages to see this data?
  • TimeInClinic: clients were asked to estimate the time spent, in minutes, at the clinic.
  • OverallExp & ExpectedExp: both the overall experience and the expected experience were ranked from 1 to 5, with 5 representing the best experience.

 

I highlighted a few interesting values (using adobe ideas) right in the screenshot:
  1. Most people (count=74) had a ‘5’ overall experience.
  2. Many people expected a 1,2, or 3 experience but just one rated a ‘1’ overall experience
  3. Given that this was the first time we used FastTrack to collect survey data, the results were conducted by paper and quickly entered into FastTrack (I wanted to make sure we had a good fallback system).  I noticed that many of first responses did not answer the overall experience question, which can be seen reported as 21 ‘n/a’.  I brought this to the attention of the survey takers, who were more focused on getting more surveys inside of getting good surveys.  Thanks to this rapid processing, we were able to correct a problem before it got worse.
  4. The majority of surveyed people (75%) perceived a wait-time of less than 15 minutes.  Many health departments go to great lengths (usually for RAND corp studies) to measure time (latency) between various stations in clinics.  I think that this simple measure of people’s perceptions is a great example of the Pareto Principle in action.  I can see how a clinic manager, whether on-site or not, could keep an eye on this stat.
  5. Almost everyone learned about this clinic from their school, not from social media, the internet, or traditional media channels.  This is inline with the clinics marketing strategy: push it at the schools, but I’d like to see what a little more online advertising could do for clinic attendance.

 

What’s next:

  • Embedded charts: I’d like the user to just touch/click on a Metric field to display the appropriate visualization, e.g. a pie chart for fields with just 2 or 3 values or a choropleth maps for zipcode data.
  • Crosstab analysis: I’d like to experiment with a UX that made crosstab analysis more more accessible and intuitive.  Based on the SFDPH survey results, I’d be interested to look at the other survey fields for those respondents who rated their overall experience a ‘1’.  I could place a stats toolbar on the page with a crosstab option that a user could activate and then select the field options they wanted to fix. Think of a photo or image editor where you select the tool (brush, fill, crop) and then make you changes. All this should work off the most recent data.
  • More than the total: Currently this stats summary page sows the total counts, which forces the user to do a little math in their head to understand how they compare against each other. I've been reluctant to add percentages to the default page as it would get too busy. I may just work off the stats toolbar idea by adding a percent option that switches from a total count display to percentages.

 

Referencing constants in EL using Jakarta unstandard taglib

This is a quick post to document how I solved a problem I was having with EL (Expression Language). I was trying to reference constants inside my Google App Engine project from a JSP, which is easy to do with a scriptlet (<%= com.sample.Constants.EXAMPLE %>), but I try to use EL when I can. Unfortunately, as I learned on Stack Overflow (thanks BalusC), this is not possible with standard EL as it requires standard javabean getters/settings. There are a few workarounds but the most straightforward seemed to be the Jakarta unstandard taglib.

The Jakarta project page for the unstandard lib says that binary downloads are no longer available and you have to build from source. I didn't really feel like putting anymore third-party source in my workspace so after a little hunting around, I ran across this blog post from Tallan that linked to an archived nightly sandbox build.  It contained everything I needed: taglibs-unstandard.jar and taglibs-unstandard.tld.

 

Here is what I needed to do to reference constants in EL:

  • Place a copy of taglibs-unstandard.jar into my WEB-INF/classes directory (via Eclipse 'java build options' etc)
  • Place a copy of taglibs-unstandard.tld into my WEB-INF
  • Update my web.xml so that it can map a reference to "http://jakarta.apache.org/taglibs/unstandard-1.0" to my local copy as requests to the apache.org location return a 404.
  • Add the import directive to load the taglib into my JSP
  • Use the custom prefix to pull the constants into a scope variable:
    • <un:useConstants className="com.sample.Constants" var="constants" />

I could then reference constants as I would any other EL variable, for example: ${constants.URI_PREFIX}.

Many thanks to all the various posts that helped me quickly solve this. If there is a simpler way to do this, I'm interested in hearing about it.

Atrix touch-screen replacement

I recently switched from an iPhone to a Motorola Atrix as I wanted to get some hands-on experience with Android.  I still have the iPhone around the house as well as an iPad, so I feel like I have plenty of iOS devices to work with.  So far I've been very impressed with both the hardware and software.  It's like going from a Windows PC to Linux, where you feel like you are exposed to the internals.  I can't recommend this to everyone but for those who like to experiment, Android provides a nice platform.

One problem with getting a recently-released phone is the lack of protectors for it.  About a week after I got it, I slipped out of my hand and landed flat on the concrete, shattering the screen:

Luckily, the phone still worked.  Most smartphones have 2 "screens": (1) a digitizer touch-screen that takes touch input and (2) an LCD panel that handles display.  I hopped on ifixit and found that they had a tear-down guide for the Atrix.  All I needed was to get my hands on a replacement touch-screen and it looked like I could handle the repair myself.

Which is mostly true...but it took a little more work than I thought.  It took a couple of weeks to find a vendor that would sell me just 1 replacement touch screen as many had a minimum requirement of 3.  I paid DuraPower Global $59.95 + $5.95 S&H and I had the replacement screen in my hands a few days later.

The iFixIt teardown guide did a good job of describing each step.  I was impressed with how easily the individual components in the atrix could be detached.  I struggled with removing the panel behind the LCD (step 13) as you needed to gently lift the top of the panel while pushing up on both corners of the bottom.  After that, it was tough to keep track of the connections at the top of the phone, such as the light sensors, speaker, finger print reader, and headphone jack; especially the connection between the touch-screen digitizer and its cable on the motherboard.

Below is a photo of the touch-screen connection on the broken screen:

At one point I looked down at all the disassembled pieces on the table and thought that it would never go back together again.  Fortunately I found a youtube video that walked you through the teardown, which I found very useful as it showed you how much pressure was needed to remove the connectors, but it actually didn't show how to remove the touch screen from the frame.  The trick is to gently pull away the thin plastic bar that is located below the touch-screen connector.  This allows you to slip the connector behind it and away from the frame.  The new touch-screen connector simply slides underneath it.

So iFixIt was a great help but they could definitely use some videos and specific instructions on how to replace commonly broken items like screens.

OpenHeatMap

I haven't posted in a little while as I've been heads down with a project for the San Francisco Department of Public Health.  They used Cosanta FastTrack to track clients who received the Tdap vaccine last weekend and I'm working on some visualizations based on the zipcode data.  I've been taking some of the things I've learned from the P2PU OpenLayers class (but never finished) and putting together an OpenLayers-based map.  As part of that I'm rethinking some data model decisions I made for storing metric properties in Google App Engine's BigTable.  Currently I aggregate information as part of the datastore write operation as the write-rates are low relative to the read-rates.  Now I'm starting to realize that some of the data I lost by aggregating will come in handy for new datastore queries I'm coming with.

So I'm continuing the process of pushing more data down to each leaf and removing any traces of normalization.  I'm going to prototype an end-to-end use case to see how quickly I can aggregate the data during the reads.

I read on GigaOm that Pete Warden released his Data Science Toolkit.  He has a great time-based map of US unemployment rate by county:

Screenshot

 

 

You really see the unemployment rate (higher => more red) blow up in 2008.

Enough distractions for one day, back to work.