250 likes | 524 Views
Mongo DB & Healthcare. Charles Boicey, MS, RN-BC Informatics Solutions Architect UC Irvine Health June 6, 2013. Early Work with MongoDB in Healthcare January – July 2011. Continuity of Care Document Storage and Retrieval Demographics Patient Name Medical Record Number Date of Birth
E N D
Mongo DB & Healthcare Charles Boicey, MS, RN-BC Informatics Solutions Architect UC Irvine Health June 6, 2013
Early Work with MongoDB in Healthcare January – July 2011 • Continuity of Care Document Storage and Retrieval • Demographics • Patient Name • Medical Record Number • Date of Birth • Address • Medical • Allergies and adverse reactions • Problems • Medications • Diagnostic results
Solution Ingredients • Storage and querying • NoSQL/Simple/Schema-less database • Advantages • highly scalable, very flexible, simple • MongoDB • Representation • JSON • Connectivity • node.js • Server side Javascript • User Interface • Lucene
node.js Client JavaScript mongodb driver MongoDB XML to JSON Naveen Ashish, PhD
MappyHealth • Now Trending 2012 Challenge Winners • Office of the Assistant Secretary for Preparedness and Response (ASPR) • Utilized technology from non-healthcare domain to build a healthcare application • Brian Norris, MBA, RN-BC • Charles Boicey, MS, RN-BC • Mark Silverberg, MIS Student at GWU
ASPR Now Trending 2012 Challenge • Use open source Twitter data • Create a web based application that will automatically deliver a list of the top-five trending illnesses from a specified geographic area in a twenty-four hour period. • Send directly to state and local public health practitioners to use in a variety of ways including: • building a baseline of trend data; • engaging the public on trending health topics; • serving as an indicators of potential health issues emerging in the population; • cross-referencing other data sources.
Meningitis • Tweets related to two events. • The first a 3 year old with severe Meningitis in south America • The second a meningitis death in the United States • “NCIRE researcher dies from apparent lab-acquired meningitis infection | Outbreak News” • “Calif. lab worker dies after meningitis infection - A 25-year-old laboratory researcher has died after becoming infe…” Social Noise Zone
Meningitis heat map of tweets by location in the United States US and Canada Meningitis Tweet Activity Sept 19th to Oct 19th, 2012
Meningitis qualifier frequency Meningitis Tweet Qualifier Activity September 19th, 2012 to October 19th, 2012
Finding using Arabic term for “embassy” This tweets was posted by screen name “CaStRoO” to twitter using facebook with a link to an article about the Turkey embassy bombing - http://www.bbc.co.uk/arabic/worldnews/2013/02/130202_turkey.shtml
Finding using term “bomb” with text containing “make a” & “school”
US Turkey Embassy Explosion Fireworks Explosion Chinese Highway Kills 26
Spike in tweets about Department of State U.S. Secretary of State Kerry Addresses Nation
Simple but powerful modular pipeline MongoDb Heroku Term Matching Webserver Presentation Statistical Analysis Sentiment Analysis Graphical Interface Updates Cache Layer Realtime Tweets Location Analysis Mashup Layer Separate from Heroku for Security Purposes Highly Scalable on Amazon EC2 While initially focused on Twitter data this is only the beginning and so much more can be done with other social data sets
Tech Stuff • Amazon Linux • MongoDB 2.2 • Ruby 1.8.7 • MongoMapper • Ruby Gem • Tweets from Twitter API + Tweet Analysis + Metadata stored in MongoDB • About 12 MapReduce patterns written in JS and wrapped with Ruby so server daemons can easily invoke them • Web interface queries the collections the MapReduce jobs output to. Results are cashed/MongoDB not hit for each session.
More Tech Stuff # Invocation: MapReduceSimpleCounts.build("field_to_analyze") classMapReduceSimpleCounts defself.map(str) "function(){attr = this.#{str};emit(attr,1);}" end defself.reduce "function(prev, current) {var count = 0;for (index in current) { count += current[index]; } return count; } " end defself.build(str= "place.full_name", query = {}) Tweet.collection.map_reduce(map(str), reduce, :query => query, :out => {:replace => "count_by_#{str}"}) end end
Sentiment Analysis • The application of natural language processing, computational linguistics and text analytics to identify and extract subjective information. • What is being said about a person or about an organization. Sentiment can be positive or negative. • Early identification of negative sentiment allows an organization to respond immediately and avoid being blindsided. Positive sentiment allows for marketing opportunities.
A Few Numbers Twitter 500 million tweets per day and climbing.
Social MediaEngagement/Surveillance Dashboard • Sentiment Analysis • Healthcare: Patients & UCI • Research: Exercise Physiology • Cross Domain