<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-743578218566083321</id><updated>2009-11-04T08:35:16.049-08:00</updated><title type='text'>Technology highlights</title><subtitle type='html'>A forum for software developers interested in Web 2.0 applications with a focus on solutions for health care, fitness and life sciences.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-1830160293600006603</id><published>2009-10-07T08:35:00.001-07:00</published><updated>2009-10-17T16:35:59.321-07:00</updated><title type='text'>Health 2.0 - 2009 (San Francisco) - Day 2</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/Ssy5RXHT3pI/AAAAAAAACRY/PNWgrMGKNOk/s1600-h/DSC06761.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/Ssy5RXHT3pI/AAAAAAAACRY/PNWgrMGKNOk/s320/DSC06761.JPG" alt="" id="BLOGGER_PHOTO_ID_5389886561969233554" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;8:40am - 3 Health 2.0 CEOs &amp;amp; a President!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Adam Bosworth, CEO, &lt;/span&gt;&lt;a style="font-weight: bold; color: rgb(51, 204, 0);" href="https://www.keas.com/"&gt;Keas&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The idea with Keas was to start small trying to help a small number of people and scaling from there. Chronic diseases are life style disease. Keas tries to address these issues.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.questdiagnostics.com/"&gt;Quest Diagnostics&lt;/a&gt; has been a great partner. We also have good partnership with &lt;a href="http://www.healthvault.com/"&gt;MS Health Vault&lt;/a&gt; and &lt;a href="https://www.google.com/health"&gt;Google Health&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lessons learned:&lt;/span&gt; try to be modest, get out early your product and learn from your customers!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SszBAsByIvI/AAAAAAAACRg/dEd0AIMUjMg/s1600-h/DSC06762.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SszBAsByIvI/AAAAAAAACRg/dEd0AIMUjMg/s320/DSC06762.JPG" alt="" id="BLOGGER_PHOTO_ID_5389895071618441970" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Roy Schoenberg, CEO, &lt;a href="http://www.americanwell.com/"&gt;American Well&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bottom line: try to make our customers (e.g. the Pentagon) happy.  We seems to be at the right place at the right moment, especially now with the Health Care reforms that are taking place. &lt;a href="http://www.americanwell.com/"&gt;American Well&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/a&gt; for patient it is convenience (immediate gratification, cost etc ...), for the physician and the payers, the solution brings efficiency, more revenue and ROI.&lt;br /&gt;&lt;br /&gt;In Q1 2010 we will deploy our application to more PCP and specialists networks.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0); font-weight: bold;"&gt;Christopher Schroeder, CEO, &lt;a href="http://www.healthcentral.com/"&gt;Health Central&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;We offer a more holistic experience than other web sites,  a sense of connection and empathy. We are more focus on the consumer side of the issues.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0); font-weight: bold;"&gt;Alexandra Drane, President, &lt;/span&gt;&lt;a style="color: rgb(51, 204, 0); font-weight: bold;" href="http://www.elizacorporation.com/"&gt;Eliza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We have 43% click through from email. We have the ability to look at the data that we store overtime and improve our system. We had to acquire a company to quickly get the social network infrastructure and experience.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;9:30am - The Consumer Aggregators&lt;/span&gt;&lt;br /&gt;27% of American go online to seek HealthCare related information and services.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Wayne Gattinella, &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://www.webmd.com/"&gt;WebMD&lt;/a&gt; - &lt;span style="color: rgb(51, 204, 0);"&gt;The market more mobile, more global and more personal!&lt;/span&gt; - Focus on continuity of care. Demo of WebMD on the iPhone. We need to demonstrate the utility of the Health 2.0 applications. Adoption is key.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Roni Zeiger, &lt;/span&gt;&lt;a style="font-weight: bold;" href="https://www.google.com/health"&gt;Google Health&lt;/a&gt; - New launches: (e.g. &lt;a href="http://www.google.org/flutrends/"&gt;Google flu trend&lt;/a&gt;) - Demo of &lt;a href="https://www.mdlivecare.com/"&gt;MDLiveCare&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;David Cerino&lt;/span&gt;, Microsoft Health Solutions - Demo of &lt;a href="http://my-health-info.health.msn.com/MSN/Default.aspx"&gt;My health Info&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;11:00am - Data Drives Decisions - Panel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Tools and platforms to support decision-making by doctors&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Rex Jakobovits, &lt;a href="http://www.mckesson.com/en_us/McKesson.com/"&gt;McKesson&lt;/a&gt;&lt;/span&gt; - Upload online version of medical images / Pacs systems. Demo of MyPacs.net - more than 100K medical images. Fine grained search capabilities on images (CGI/perl based web site).  Help radiologist to look at challenging cases to learn and solve related cases.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Lance Hill, &lt;a href="https://www.within3.com/"&gt;Within3&lt;/a&gt;&lt;/span&gt; - Customers are hospitals, Pharma, Research centers. Demo  of Within3 medical social network in the context of a medical conference (running on Amazon EC2).  Issues with publishing abstracts of papers shared between peers before publication.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Tools and platforms to support decision-making by patients&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Sanjay Koyani, &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://www.fda.gov/"&gt;FDA&lt;/a&gt; - Pushing information to consumers and providing not only services but also a platform. - Show &lt;a href="http://www.accessdatat.fda.org/"&gt;recalls database from FDA&lt;/a&gt; (4000 products) . The &lt;a href="http://dailygreen.com/"&gt;dailygreen.com&lt;/a&gt; integrated FDA widget (e.g. on Salmonella peanut recall). Collaborates with &lt;a href="http://www.cdc.gov/"&gt;CDC&lt;/a&gt; as well. More than 20,000 sites are using FDA widgets.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;John deSouza, &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://www.medhelp.org/"&gt;MedHelp&lt;/a&gt; - Online and mobile applications to help patients deal with specific conditions (e.g. breast cancer). Data can be shared with other patients. Mobile applications available as well.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Hugo Stephenson, &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://www.iguard.org/"&gt;iGuard&lt;/a&gt; - Offer online and paper based tools related to drugs interactions - Launch in oct 2007 - 2M US citizen registered - 25 times more registered by paper! Demographic and statistic numbers available online on these patients. Includes recalls information. Business model based on revenue from clinical trials. Hope to have 3M users in the coming months.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;The impact of Health 2.0 tools and platforms on clinical research&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/StS2j69TaSI/AAAAAAAACSY/MBc7-7cnyiY/s1600-h/DSC06779.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/StS2j69TaSI/AAAAAAAACSY/MBc7-7cnyiY/s320/DSC06779.JPG" alt="" id="BLOGGER_PHOTO_ID_5392135382107384098" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Kristin Peck, &lt;a href="http://www.pfizer.com/home/"&gt;Pfizer&lt;/a&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Alexandra Carmichel, &lt;a href="http://www.curetogether.com/"&gt;CureTogether&lt;/a&gt;&lt;/span&gt; - Patient data sharing site - Lot of data on depression. Offers correlation (e.g. depressions &amp;amp; fibromyglia)&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Jamie Heywood, &lt;a href="http://www.patientslikeme.com/"&gt;PatientsLikeMe&lt;/a&gt;&lt;/span&gt; - Very detailed statistics on patients with similar conditions. Compare data with clinical trials.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Amy DuRoss, &lt;a href="http://www.navigenics.com/"&gt;Navigentics&lt;/a&gt;&lt;/span&gt; - Comparison of personal and general population genetic information as well as risks factors.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;12:30pm  - IDEO design competition&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Finalist winner of the &lt;a href="http://www.ideo.com/"&gt;IDEO&lt;/a&gt; competition is &lt;span style="color: rgb(51, 204, 0); font-weight: bold;"&gt;LabCheck Plus&lt;/span&gt; (&lt;a style="color: rgb(51, 204, 0); font-weight: bold;" href="http://www.satellitelabs.com/"&gt;Satellite Laboratory Services&lt;/a&gt;) - The fastest growing dialysis lab in the US. Users are Nurses, Physicians, Patient care technicians etc.  The process involved &lt;span style="font-weight: bold;"&gt;ethnographic field studies&lt;/span&gt;,&lt;span style="font-weight: bold;"&gt; focus groups&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;usability testing&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1:00pm - Launch&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.pathway.com/"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Pathway Genomics&lt;/span&gt;&lt;/a&gt; - Genetic tests for $348 - Includes ancestry and health tests . Done by saliva.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Remedy Systems&lt;/span&gt; - Web based Portal &amp;amp; Mobile Portal - ePrescribing application at the point of care&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.accessdna.com/"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;AccessDNA&lt;/span&gt;&lt;/a&gt; - WebMD for genetic testing compare DNA testing providers. Offer personalized reports.&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.carepass.com/"&gt;&lt;span style="color: rgb(51, 204, 0); font-weight: bold;"&gt;CarePass&lt;/span&gt;&lt;/a&gt; - Online and Mobile solution&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;TrialReach.com&lt;/span&gt; - Multimedia online tool to find and understand clinical trials.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 204, 0); font-weight: bold;"&gt;DNA Guide&lt;/span&gt; - Personal online genomic map (includes DNA Classifieds).&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.unitymedcenter.com/"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Unity Medical&lt;/span&gt; &lt;/a&gt;- ultimedia online content to help diagnosis. Technology to push content to the desktop (e.g. videos relevant to the user). &lt;span style="color: rgb(51, 204, 0);"&gt;***&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.livestrong.com/"&gt;&lt;span style="color: rgb(51, 204, 0); font-weight: bold;"&gt;Livestrong&lt;/span&gt;&lt;/a&gt; - Help to determine how food can impact users/patients. Includes interactive graphs.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.healthline.com/"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Healthline&lt;/span&gt;&lt;/a&gt; - Web site offering health related content&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bodimojo.com/newsite/"&gt;&lt;span style="color: rgb(51, 204, 0); font-weight: bold;"&gt;BiodiMojo&lt;/span&gt;&lt;/a&gt; - To help families who raise teenagers.Includes health and fitness tracking goals, journal. Send mojos by notifications and community tools related to teenagers.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.relatenow.com/"&gt;&lt;span style="color: rgb(51, 204, 0); font-weight: bold;"&gt;RelateNow&lt;/span&gt;&lt;/a&gt; - To help families that have children with autism, including reducing the cost of the therapy. Offer collaboration tools for the family and the health care professionals.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;2:00pm - Innovations in Health 2.0 Tools: Showcasing the Health 2.0 Accelerator&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/Ss4L_pV02II/AAAAAAAACSA/x2xYrvn5E5g/s1600-h/DSC06790.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/Ss4L_pV02II/AAAAAAAACSA/x2xYrvn5E5g/s320/DSC06790.JPG" alt="" id="BLOGGER_PHOTO_ID_5390258992066123906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Combined demos by:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.medikeeper.com/"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;MediKeeper&lt;/span&gt;&lt;/a&gt; - PHR with a portal look and feel including a health risk management.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.changehealthcare.com/"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;change:healthcare&lt;/span&gt;&lt;/a&gt;  - Cost saving alerts and analysis&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kryptiq.com/"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Kryptic&lt;/span&gt;&lt;/a&gt; - portal integration hub&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/www.sagehealth.com"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Sage&lt;/span&gt;&lt;/a&gt; - EHR integration tools and platform. Supports CCR imports&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/Ss4MSuG-LUI/AAAAAAAACSI/ZTF22PAD6t4/s1600-h/DSC06794.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/Ss4MSuG-LUI/AAAAAAAACSI/ZTF22PAD6t4/s320/DSC06794.JPG" alt="" id="BLOGGER_PHOTO_ID_5390259319763512642" border="0" /&gt;&lt;/a&gt;&lt;a href="https://www.medsimple.com/"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;MedSimple&lt;/span&gt;&lt;/a&gt; - Online questionnaires to prepare medical encounters (electronic patient history).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pharmasurveyor.com/"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;PharmaSURVEYOR&lt;/span&gt;&lt;/a&gt; - Medication safety survey (interaction and toxicity of individual drugs).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.polka.com/index.php?s=jpg"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Polka&lt;/span&gt;&lt;/a&gt; - Mobile observation engine - manage prescriptions and observations.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.reliefinsite.com/"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;ReliefInsite&lt;/span&gt;&lt;/a&gt; - Pain management system.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.keas.com/"&gt;&lt;span style="color: rgb(51, 204, 0); font-weight: bold;"&gt;Keas&lt;/span&gt;&lt;/a&gt; - Launch Keas Beta - Personalized care plan. Includes todo list, history of tasks and report cards. Uses CCR . Import data from Google Health and Health Vault.&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-weight: bold; color: rgb(51, 204, 0);" href="http://www.kinnexxus.com/"&gt;Kinnexxus&lt;/a&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt; &amp;amp; &lt;/span&gt;&lt;a style="font-weight: bold; color: rgb(51, 204, 0);" href="https://www.medsimple.com/HeavyMedical/app"&gt;MedSimple&lt;/a&gt; - Kiosk dashboard for elderly and online application for care givers.  &lt;span style="font-weight: bold;"&gt;3:30pm - Health 2.0 Around the world&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;See also:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://fandry.blogspot.com/2009/10/health-20-2009-san-francisco-day-1.html"&gt;Day 1 - Health 2.0 - 2009 - SF&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://fandry.blogspot.com/2008/10/health-20-2008-san-francisco.html"&gt;Day 1 - Health 2.0 -2008 - SF&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://fandry.blogspot.com/2008/10/health-20-2008-san-francisco-day-2_23.html"&gt;Day 2 - Health 2.0 - 2008 - SF&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://venturebeat.com/2009/10/09/fresh-from-health-20-two-dozen-of-the-most-innovative-new-health-apps/"&gt;Fresh from Health 2.0: two dozen of the most innovative new health apps (VentureBeat)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-1830160293600006603?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/1830160293600006603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=1830160293600006603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/1830160293600006603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/1830160293600006603'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2009/10/health-20-2009-san-francisco-day-2.html' title='Health 2.0 - 2009 (San Francisco) - Day 2'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_V_sYr0AnKIc/Ssy5RXHT3pI/AAAAAAAACRY/PNWgrMGKNOk/s72-c/DSC06761.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-1780402936232461334</id><published>2009-10-06T08:17:00.000-07:00</published><updated>2009-10-12T07:14:22.912-07:00</updated><title type='text'>Health 2.0 - 2009 (San Francisco) - Day 1</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SswSOF3hrPI/AAAAAAAACRA/YLk5F-_78Ag/s1600-h/DSC06744.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SswSOF3hrPI/AAAAAAAACRA/YLk5F-_78Ag/s320/DSC06744.JPG" alt="" id="BLOGGER_PHOTO_ID_5389702887358180594" border="0" /&gt;&lt;/a&gt;This year, the &lt;a href="http://www.health2con.com/sf2009/hotel/"&gt;Health 2.0 conference 2009, San Francisco&lt;/a&gt; takes place at the &lt;a href="http://www.sfvenues.com/concourse/directions.html"&gt;Design Center Concourse at 635 8th Street (at Brannan)&lt;/a&gt;. It is an old dark wood train loading station which contrasts interestingly with the image of health care in general where everything is supposed to be bright and clean. The setting is similar to &lt;a href="http://fandry.blogspot.com/2008/10/health-20-2008-san-francisco.html"&gt;last year&lt;/a&gt; with round tables of ten people that facilitates social contacts. On the back of the building on what was the loading platforms are more than 30 exhibitors. This year the crowd is roughly the same size, between 950 to 1000 people (got these numbers from Matthew and Indu). The conference was well organized as usual, expect the wireless connections that were very poor!&lt;br /&gt;&lt;br /&gt;The focus of this year is the &lt;span style="font-weight: bold;"&gt;platforms for mixing and aggregating data&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;applications services and channels&lt;/span&gt;, including &lt;span style="font-weight: bold;"&gt;mobile devices&lt;/span&gt;,&lt;span style="font-weight: bold;"&gt; social networks&lt;/span&gt; , &lt;span style="font-weight: bold;"&gt;widgets &lt;/span&gt;&lt;span&gt;and&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; portal applications&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8:30am - Introduction by Matthew Holt and Indu Subaiya&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In the past, health 2.0 was essentially about user generated health care, then the issue of connecting to providers started to be important. More recently the partnerships to reform delivery was the focus. This year, as data drives decisions and discovery, tools and platforms seems to take more and more importance .&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;8:50am - Keynotes by Aneesh Chopra, Assistant to the President Obama &amp;amp; CTO, &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://www.ostp.gov/"&gt;Office of Science &amp;amp; Technology Science.&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Building blocks of innovation: the US need a more modern and secure infrastructure&lt;/li&gt;&lt;li&gt;How do we control costs?&lt;/li&gt;&lt;li&gt;How to ensure that we have the skills professionals?&lt;/li&gt;&lt;li&gt;The synergy of innovation between health care and energy, IT, green technology&lt;/li&gt;&lt;li&gt;Promotion of enterprise creation since this is where the growth of productivity comes from&lt;/li&gt;&lt;li&gt;Help promote public data sets (e.g. &lt;a href="http://www.cms.hhs.gov/"&gt;CMS&lt;/a&gt;, &lt;a href="http://www.va.gov/"&gt;VA&lt;/a&gt;) as soon as possible&lt;/li&gt;&lt;li&gt;Promotes innovations in various areas including mobile&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;9:15am - Panel Clinical Groupware and the Next Generation of Clinician-Patient Interaction Tools.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Clinical Groupware is the next generation of EHR&lt;/li&gt;&lt;li&gt;Panel includes people from &lt;a href="http://www.myca.com/"&gt;Myca&lt;/a&gt;, &lt;a href="http://www.americanwell.com/"&gt;American Well&lt;/a&gt;, &lt;a href="http://www.rmdnetworks.com/"&gt;RMD Networks&lt;/a&gt; (showing &lt;a href="https://www.reachmydoctor.com/"&gt;reachmydoctor.com&lt;/a&gt;), &lt;a href="http://www.visiontree.com/"&gt;Vision Tree Software&lt;/a&gt;, &lt;a href="https://www.relayhealth.com/"&gt;Relay Health&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;A lot of demos focus on the communication aspect between patients and physicians.&lt;/li&gt;&lt;li&gt;Payment reform is needed to promote these types of tools&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;9:50am - Adoption of Health 2.0 Platforms by Physicians on Main Street&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The bottom line is culture change for technology and tools adoption.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;11:15am - Payers and Health 2.0&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.anvitahealth.com/"&gt;Anvita&lt;/a&gt; : clinical Analytical tool data analysis&lt;/li&gt;&lt;li&gt;Health Innovations - Focus is now to reduce cost from Ambulatory care, ER, CT, MRI etc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bcbs.com/"&gt;Blue Cross Blue Shield&lt;/a&gt; (BCBS)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/www.cigna.com/"&gt;Cigna&lt;/a&gt; (8.5M customers in USA,  41M worlkdwide). Presence on Facebook, partnership with Intuit.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.doer.state.mn.us/"&gt;State of Minnesota Management &amp;amp; Budget&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kaiserpermanentejobs.org/"&gt;Kaiser Permanente&lt;/a&gt; - (8.5M users, 10 states esp CA) - Focus on chronic care management.&lt;/li&gt;&lt;/ul&gt;        &lt;span style="font-weight: bold;"&gt;Including demos from:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Adam Lee - Intuit &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;a style="color: rgb(0, 0, 0);" href="http://healthcare.intuit.com/"&gt;Health Expense tracker, claim assistant&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) - Very intuitive tools! available to 27M users by the end of the year!&lt;/span&gt; Partners with &lt;a href="http://www.cigna.com/"&gt;Cigna&lt;/a&gt;, &lt;a href="http://www.uhc.com/"&gt;United HealthCare&lt;/a&gt;, &lt;a href="http://www.medmutual.com/"&gt;Medical Mutual&lt;/a&gt;.&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;***&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fred Goldstein - US Preventive Medecine (&lt;a href="http://www.thepreventionplan.com/"&gt;thepreventionplan.com&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Karl Ulfers - &lt;a href="http://www.optumhealth.com/Home/"&gt; Optum Health HealthWorldWeb&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Daniel Kogan - &lt;a href="http://www.blogger.com/www.healthworldweb.com/"&gt;HealthWorldWeb&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;12:00pm - Doctor Office special showcase demos&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://demo.thedoctorschannel.tv/"&gt;The doctor channel&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (partner with publishers, lots of channels, videos, documentaries ..). Not clear what is the business model (compete with Youtube?). Should be part of a PHR.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.rxvantage.com/"&gt;rxvantage&lt;/a&gt; (For providers Office tools, alerts, scheduling ) - Started in RI -&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.practicefusion.com/"&gt;Practicefusion&lt;/a&gt; (Web based PHR/EMR - on the Cloud for patient. Has a professional view - including scheduling). Based on Saleforce. Contains adds that can be removed for $100/month. The data does not belong to the patient.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.boundarymedical.com/"&gt;BoundaryMedical&lt;/a&gt; (Tool and framework, provider and patient portals - give the ability to create a product/project in less than 30 mn)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a style="color: rgb(0, 0, 0);" href="http://www.phreesia.com/"&gt;Phreesia&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (streamline billing and payments - integrated with EMRs - for patient and providers) &lt;span style="color: rgb(51, 204, 0);"&gt;***&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.mddigest.com/"&gt;MdDigest&lt;/a&gt; - (Opens source platform and solutions for patient and physicians - .net based) - (e.g. Healthforge practice monitor)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Spinal Disorders Registry - based on Microsoft HealthVault, integrate with Cisco video and Webex conference system - 50K patients - Seems a specific feature of an EMR&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a href="https://www.ozmosis.com/home"&gt;Ozmosis &lt;/a&gt;- Tools such as Health Alerts (partner with &lt;a href="http://www.veratect.com/"&gt;Veratect&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www3.phytel.com/"&gt;Phytel&lt;/a&gt; (Patient registry, reporting and analytics) -&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.doctations.com/"&gt;Doctations&lt;/a&gt; (Interoperability platform and tools? 3 tiers: Free, $33/mo, $1033/mo) - 22 partners&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a href="https://drchrono.com/"&gt;Dr Chrono&lt;/a&gt; (Pratice Management + notifications reminder through voice over IP, IM etc) offer an &lt;a href="https://doctor1.drchrono.com/app_store"&gt;App Store&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SswSfhW8WYI/AAAAAAAACRI/XqqU75haNwE/s1600-h/DSC06752.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SswSfhW8WYI/AAAAAAAACRI/XqqU75haNwE/s320/DSC06752.JPG" alt="" id="BLOGGER_PHOTO_ID_5389703186795485570" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SswS0GZcqFI/AAAAAAAACRQ/H28oa2XhG4c/s1600-h/DSC06760.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SswS0GZcqFI/AAAAAAAACRQ/H28oa2XhG4c/s320/DSC06760.JPG" alt="" id="BLOGGER_PHOTO_ID_5389703540335487058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2:00pm - The Patient is in.&lt;/span&gt;&lt;br /&gt;Highligthing the importance of personalization of the applications.&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/www.KaiserPermanente.org"&gt;Kaiser permanente&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Edventure&lt;/li&gt;&lt;li&gt;Users of Health 2.0 applications - Video describing uses of various applications:&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.lifemojo.com/"&gt;Lifemojo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.quitnet.com/"&gt;Quitnet&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sensei.com/sensei/"&gt;Sensei&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Care.com  &lt;/li&gt;&lt;li&gt;&lt;a href="http://thecarrot.com/"&gt;TheCarrot.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/www.bioiq.com"&gt;BioIQ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.23andme.com/"&gt;23andMe&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.metavantehealthcare.com/"&gt;Metavante Health Manager&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;3:40pm - Breakout sessions&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Gaming and HealthCare&lt;/li&gt;&lt;li&gt;Health 2.0 Tools for Administrative Efficiency&lt;/li&gt;&lt;li&gt; Search and Content&lt;/li&gt;&lt;/ul&gt;See also:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://fandry.blogspot.com/2009/10/health-20-2009-san-francisco-day-2.html"&gt;Day 2 - Health 2.0 - 2009 - SF&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://fandry.blogspot.com/2008/10/health-20-2008-san-francisco.html"&gt;Day 1 - Health 2.0 -2008 - SF&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://fandry.blogspot.com/2008/10/health-20-2008-san-francisco-day-2_23.html"&gt;Day 2 - Health 2.0 - 2008 - SF&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://venturebeat.com/2009/10/09/fresh-from-health-20-two-dozen-of-the-most-innovative-new-health-apps/"&gt;Fresh from Health 2.0: two dozen of the most innovative new health apps (VentureBeat)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-1780402936232461334?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/1780402936232461334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=1780402936232461334' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/1780402936232461334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/1780402936232461334'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2009/10/health-20-2009-san-francisco-day-1.html' title='Health 2.0 - 2009 (San Francisco) - Day 1'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_V_sYr0AnKIc/SswSOF3hrPI/AAAAAAAACRA/YLk5F-_78Ag/s72-c/DSC06744.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-1990943175928016024</id><published>2009-09-18T14:41:00.000-07:00</published><updated>2009-09-18T16:22:23.846-07:00</updated><title type='text'>Usability and Healthcare Portal Applications</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;A &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;healthcare portal application&lt;/span&gt; is usually more than just an aggregation of &lt;a href="http://en.wikipedia.org/wiki/Portlets"&gt;portlets&lt;/a&gt;. To be really usable, a portal application needs a clear and well defined interaction model between the &lt;a href="http://en.wikipedia.org/wiki/Portlets"&gt;portlets&lt;/a&gt;. In addition to this, since &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;speed and ease of use&lt;/span&gt; plays an important role in the quality of care for the patients and the clinical adoption of the solution, the &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;performance of the portal application must be excellent&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V_sYr0AnKIc/SrQUt2TY-EI/AAAAAAAACPk/CKHI3jQBvEM/s1600-h/hand_mouse.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 222px; height: 184px;" src="http://2.bp.blogspot.com/_V_sYr0AnKIc/SrQUt2TY-EI/AAAAAAAACPk/CKHI3jQBvEM/s320/hand_mouse.png" alt="" id="BLOGGER_PHOTO_ID_5382950232518096962" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Creating portal themes:&lt;/span&gt;&lt;br /&gt;The &lt;a href="http://en.wikipedia.org/wiki/Theme_%28computing%29"&gt;theme&lt;/a&gt; of a portal application typically includes &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;portal header&lt;/span&gt;, &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;navigation&lt;/span&gt; (horizontal and/or vertical), &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;portlet chrome&lt;/span&gt;, and &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;footer&lt;/span&gt; for controlling the general look and feel of a portal application. It might also include CSS and JavaScript for controlling the look and feel of portlets.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The way themes are created varies from one portal server to another. Fortunately, the overall layout of a portal application and the &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;look and feel&lt;/span&gt; of the individual portlets can be &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;separated from the underlying functionalities&lt;/span&gt; of the portlets. This separation makes branding much easier and facilitates the porting of the application to other portal servers.&lt;br /&gt;&lt;br /&gt;There are several approaches to creating a custom theme for portal applications. Certain vendors (e.g. &lt;a href="http://www-01.ibm.com/software/websphere/"&gt;IBM Websphere&lt;/a&gt;) offer &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;portal &lt;/span&gt;&lt;a style="color: rgb(0, 153, 0); font-weight: bold;" href="http://www.ibm.com/developerworks/websphere/zones/portal/catalog/doc/1wp10004u/"&gt;theme builder&lt;/a&gt;, portlets that provide minimum functionalities to create basic themes. For more sophisticated themes and branding of a portal application, developers and designers will &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;start with an existing theme and modify it&lt;/span&gt; (e.g. &lt;a href="http://www.liferay.com/web/guest/home"&gt;Liferay&lt;/a&gt;). Themes are usually a combination of HTML, CSS, images and javascript files. Designers typically use tools such as &lt;a href="http://www.eclipse.org/"&gt;eclipse plugins&lt;/a&gt;, &lt;a href="http://www.adobe.com/products/dreamweaver/"&gt;Dreamweaver&lt;/a&gt;, &lt;a href="http://www.adobe.com/products/photoshop/compare/"&gt;Photoshop&lt;/a&gt;, &lt;a href="http://www.adobe.com/products/fireworks/"&gt;Fireworks&lt;/a&gt;, etc to modify these files.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SrQVt4gSoHI/AAAAAAAACPs/9xPjLLWfc0g/s1600-h/diabetes.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 224px; height: 300px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SrQVt4gSoHI/AAAAAAAACPs/9xPjLLWfc0g/s320/diabetes.PNG" alt="" id="BLOGGER_PHOTO_ID_5382951332620705906" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Personalization in HealthCare Portal Applications:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Personalization is one of the key features of portal applications. If granted personalization rights, users can personalize their portal Web pages based on their specific roles and authorization schemes.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;Themes and layout can also be changed manually by the user or programatically based on the user profile. Additional personalization mechanisms (e.g. using a business rule coupled with user profile matching engine) can also be integrated with the portal solution.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;Personalization can be very valuable for &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;care givers&lt;/span&gt;, as a means to organize the &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;general views or dashboards&lt;/span&gt; associated with their daily tasks in the most comprehensive and efficient way.  &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;Personalization can also be important for patients&lt;/span&gt;. For example, diabetes patients might want to view medical content related to their diagnosis while cancer patients might want to see their treatment protocols on personalized portal pages.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-1990943175928016024?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/1990943175928016024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=1990943175928016024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/1990943175928016024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/1990943175928016024'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2009/09/usability-and-healthcare-portal.html' title='Usability and Healthcare Portal Applications'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_V_sYr0AnKIc/SrQUt2TY-EI/AAAAAAAACPk/CKHI3jQBvEM/s72-c/hand_mouse.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-840147248206614184</id><published>2009-08-25T15:28:00.000-07:00</published><updated>2009-08-27T07:59:29.870-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Liferay 5.2'/><category scheme='http://www.blogger.com/atom/ns#' term='Jonas Yuan'/><category scheme='http://www.blogger.com/atom/ns#' term='Packt publishing'/><category scheme='http://www.blogger.com/atom/ns#' term='SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='EXT'/><title type='text'>Liferay Portal 5.2 Systems Development  -  Book review</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SpRm3FI8inI/AAAAAAAACMM/Etxdl_cKWaY/s1600-h/packt.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 177px; height: 221px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SpRm3FI8inI/AAAAAAAACMM/Etxdl_cKWaY/s320/packt.PNG" alt="" id="BLOGGER_PHOTO_ID_5374033351818381938" border="0" /&gt;&lt;/a&gt;Recently &lt;a href="http://www.packtpub.com/"&gt;Packt Publishing Ltd&lt;/a&gt; sent me a copy of the new book from &lt;a href="http://www.packtpub.com/author_view_profile/id/198"&gt;Jonas X. Yuan&lt;/a&gt; untitled "&lt;a style="font-style: italic;" href="http://www.packtpub.com/liferay-portal-5-2-systems-development/book"&gt;Liferay Portal 5.2 Systems Development&lt;/a&gt;" for review.&lt;br /&gt;&lt;br /&gt;In this post, I would like to give my feedback including some input from my colleagues who have read parts of this book.&lt;br /&gt;&lt;br /&gt;I personally read all the 12 chapters which cover a large variety of topics related to developing portal application with &lt;a href="http://www.liferay.com/web/guest/community/documentation/5_2"&gt;Liferay 5.2&lt;/a&gt; including JSR-286 portlets, EXT and SDK, JSP/struts based portlets, portal pages management, tools, CMS and WCM, personalized community, Layout templates and &lt;a href="http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Liferay+Theme+Builder"&gt;themes&lt;/a&gt;, Inter Portlet Communication (&lt;a href="http://www.liferay.com/web/james.min/blog/-/blogs/inter-portlet-communication-ipc-in-liferay"&gt;IPC&lt;/a&gt;), &lt;a href="http://www.liferay.com/web/guest/products/portal/features"&gt;collaboration features of Liferay&lt;/a&gt;, Staging, publishing and &lt;a href="http://www.liferay.com/web/guest/community/forums/-/message_boards/message/1201207"&gt;APIs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Reading the book from the front to the back is probably not the best way to take full advantage of the content. I would rather recommend to use it as a reference to &lt;a href="http://www.liferay.com/web/guest/community/documentation/5_2"&gt;Liferay 5.2&lt;/a&gt;. application developments.&lt;br /&gt;&lt;br /&gt;This book is particularly valuable if your project includes high level of customization, using &lt;a href="http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Setting+up+the+Extension+Environment"&gt;Liferay Extension Environment&lt;/a&gt; and or the integration of Content Management System (CMS) capabilities, as well as Web 2.0/social and collaboration features.  The content of the book is consistent with &lt;a href="http://www.packtpub.com/aboutus"&gt;Packt publishing practice&lt;/a&gt; to "&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;focus on producing cutting-edge books for communities of developers, administrators, and newbies alike&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;If you are an architect, a graphic designer, developer or a build manager, you will find ample step by step configurations and recommendations, code sample, tips and best practices on developing portal applications with Liferay 2.5.&lt;br /&gt;&lt;br /&gt;Sometimes, the content is so rich with code snippets, variable names and configurations paths, that the mix of various fonts makes the text a little bit difficult to read, or at least slows your reading. Fortunately, the granularity of the chapters is fine enough that you can jump directly to a very precise topic. The index is also very handy.&lt;br /&gt;&lt;br /&gt;I like the fact that the author combine &lt;a href="http://www.liferay.com/web/eduardo.lundgren/blog?p_p_id=33&amp;amp;p_p_lifecycle=0&amp;amp;p_p_state=normal&amp;amp;p_p_mode=view&amp;amp;_33_struts_action=%2Fblogs%2Fview"&gt;best practices that are specific to Liferay&lt;/a&gt; (e.g. Liferay has a property called theme.images.fast.load for performance optimization) and &lt;a href="http://developer.yahoo.com/performance/rules.html"&gt;general good web site programming practices&lt;/a&gt; (e.g. the use of CSS sprites and the placement of javascript code).&lt;br /&gt;&lt;br /&gt;The fact that most of the book describes the development of a specific and complex portal application (&lt;a href="http://www.cignex.com/site/company/news/cignexnews/july-6-2009-cignex-builds-award-winning-cms-solution-for-sesame-workshop"&gt;Sesame Workshop&lt;/a&gt;) is a good thing since you can see how every pieces of the solution are put together. You can even download &lt;a href="http://www.packtpub.com/files/code/4701_Code.zip"&gt;code sample from Packt Publishing&lt;/a&gt;. However, additional examples would have been nice too.  It would have been also interesting to see alternatives to JSP and &lt;a href="http://struts.apache.org/"&gt;Struts&lt;/a&gt; MVC framework such as development based on &lt;a href="http://jcp.org/en/jsr/detail?id=314"&gt;JSF&lt;/a&gt;, &lt;a href="http://www.jboss.org/richfaces"&gt;RichFaces&lt;/a&gt; and/or &lt;a href="http://www.icefaces.org/main/home/"&gt;ICEFaces&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The chaper 9 on Layout templates and themes is very useful, although starting with &lt;a href="http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Liferay+for+Dummies"&gt;EXT&lt;/a&gt; rather than the &lt;a href="http://www.liferay.com/web/guest/community/forums/-/message_boards/message/191011"&gt;Liferay SDK&lt;/a&gt; is quite harsh. Also a discussion on the development process: how graphic designers and developers can work  more efficiently together would have been very useful in this chapter.&lt;br /&gt;&lt;br /&gt;Overall I highly recommend using this book as reference book if you plan or are involved in a portal project based on &lt;a href="http://www.liferay.com/web/guest/community/forums/-/message_boards/message/1698121"&gt;Liferay 5.2&lt;/a&gt;. Even though your overall configuration/architecture might be different, you will find practical tips and solutions to integrate and customize most features of a portal application.&lt;br /&gt;&lt;br /&gt;If you are new to &lt;a href="http://www.liferay.com/web/guest/products/overview"&gt;Liferay&lt;/a&gt; in general (developer or graphic designer) and want to learn the potential of the platform, you can also definitively use this book for specific topics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-840147248206614184?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/840147248206614184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=840147248206614184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/840147248206614184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/840147248206614184'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2009/08/liferay-portal-52-systems-development.html' title='Liferay Portal 5.2 Systems Development  -  Book review'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_V_sYr0AnKIc/SpRm3FI8inI/AAAAAAAACMM/Etxdl_cKWaY/s72-c/packt.PNG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-7424940116233859050</id><published>2009-07-30T08:32:00.000-07:00</published><updated>2009-07-30T13:30:18.675-07:00</updated><title type='text'>How to update a TrustStore</title><content type='html'>When it comes to security, I often got &lt;a href="http://fandry.blogspot.com/2008/12/blazeds-and-secure-web-service-access.html"&gt;questions from engineers&lt;/a&gt; related to truststore update.&lt;br /&gt;&lt;br /&gt;Let say you have a truststore with a certain number of trusted certificates that are used for SSL authentication and you want to add or replace a certificate.&lt;br /&gt;&lt;br /&gt;You will need a tool such as &lt;a href="https://sourceforge.net/projects/portecle"&gt;Portecle&lt;/a&gt; which is a java based is friendly GUI application for creating, managing and examining &lt;a href="http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=/rzatz/51/sec/seccsktf.htm"&gt;key stores&lt;/a&gt;, keys, certificates, certificate requests, certificate revocation lists and more.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnG_LV1TEPI/AAAAAAAACJg/5yaN4sQtToI/s1600-h/launch.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 302px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnG_LV1TEPI/AAAAAAAACJg/5yaN4sQtToI/s320/launch.jpg" alt="" id="BLOGGER_PHOTO_ID_5364278832735129842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Open your initial truststore with Portecle:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnG_fIscXDI/AAAAAAAACJo/uNostJFNWiI/s1600-h/portecle_open_keystore1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 271px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnG_fIscXDI/AAAAAAAACJo/uNostJFNWiI/s320/portecle_open_keystore1.jpg" alt="" id="BLOGGER_PHOTO_ID_5364279172805712946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SnHAAMIH2AI/AAAAAAAACKA/EkQD8x-rAQM/s1600-h/portecle_open_keystore2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 226px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SnHAAMIH2AI/AAAAAAAACKA/EkQD8x-rAQM/s320/portecle_open_keystore2.jpg" alt="" id="BLOGGER_PHOTO_ID_5364279740662798338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SnHAFmNrFxI/AAAAAAAACKI/q8xtQDGkxD8/s1600-h/portecle_open_keystore3.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 151px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SnHAFmNrFxI/AAAAAAAACKI/q8xtQDGkxD8/s320/portecle_open_keystore3.jpg" alt="" id="BLOGGER_PHOTO_ID_5364279833564747538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I then use Microsoft Internet Explorer (IE) to access, view and save your additional/new trusted certificate.&lt;br /&gt;&lt;br /&gt;In this example, I am using ICW Lifesensor Personal Health Record (PHR) application because I want to add the associated certificates to my TrustStore (the goal is to to enable secure access to PHR accounts):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnHBLZ2PZyI/AAAAAAAACKQ/dU2vY1FcYDk/s1600-h/save_certificate1.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 233px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnHBLZ2PZyI/AAAAAAAACKQ/dU2vY1FcYDk/s320/save_certificate1.JPG" alt="" id="BLOGGER_PHOTO_ID_5364281032836081442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SnHBQw5qdXI/AAAAAAAACKY/TIw6bBI5Pu4/s1600-h/save_certificate2.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 272px; height: 320px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SnHBQw5qdXI/AAAAAAAACKY/TIw6bBI5Pu4/s320/save_certificate2.JPG" alt="" id="BLOGGER_PHOTO_ID_5364281124923798898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnHBWmRW4mI/AAAAAAAACKg/fC3-bF0wwj0/s1600-h/save_certificate3.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 272px; height: 320px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnHBWmRW4mI/AAAAAAAACKg/fC3-bF0wwj0/s320/save_certificate3.JPG" alt="" id="BLOGGER_PHOTO_ID_5364281225149604450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SnHBdHpjSeI/AAAAAAAACKo/HXhDT2CQBGk/s1600-h/save_certificate4.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 250px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SnHBdHpjSeI/AAAAAAAACKo/HXhDT2CQBGk/s320/save_certificate4.JPG" alt="" id="BLOGGER_PHOTO_ID_5364281337188665826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SnHBiEdDvfI/AAAAAAAACKw/7u5zLOU74PA/s1600-h/save_certificate5.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 250px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SnHBiEdDvfI/AAAAAAAACKw/7u5zLOU74PA/s320/save_certificate5.JPG" alt="" id="BLOGGER_PHOTO_ID_5364281422230306290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SnHBm_x8HqI/AAAAAAAACK4/cv3JKZdUyuA/s1600-h/save_certificate6.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 250px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SnHBm_x8HqI/AAAAAAAACK4/cv3JKZdUyuA/s320/save_certificate6.JPG" alt="" id="BLOGGER_PHOTO_ID_5364281506875055778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnHBsMT40DI/AAAAAAAACLA/ky6FNCGZEtQ/s1600-h/save_certificate7.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 250px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnHBsMT40DI/AAAAAAAACLA/ky6FNCGZEtQ/s320/save_certificate7.JPG" alt="" id="BLOGGER_PHOTO_ID_5364281596138016818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use Portecle to import this new trusted certificate in your trust store:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SnHB93KeHQI/AAAAAAAACLI/j0iTuX09NqE/s1600-h/import_certificate1.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 151px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SnHB93KeHQI/AAAAAAAACLI/j0iTuX09NqE/s320/import_certificate1.JPG" alt="" id="BLOGGER_PHOTO_ID_5364281899699019010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SnHCCbrYOOI/AAAAAAAACLQ/QXFmXCwxKrY/s1600-h/import_certificate2.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 226px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SnHCCbrYOOI/AAAAAAAACLQ/QXFmXCwxKrY/s320/import_certificate2.JPG" alt="" id="BLOGGER_PHOTO_ID_5364281978220198114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SnHCHQqM3wI/AAAAAAAACLY/FNQYpxQCiOE/s1600-h/import_certificate3.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 97px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SnHCHQqM3wI/AAAAAAAACLY/FNQYpxQCiOE/s320/import_certificate3.JPG" alt="" id="BLOGGER_PHOTO_ID_5364282061161815810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnHCMoXejBI/AAAAAAAACLg/zJLIwfcSizo/s1600-h/import_certificate4.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 151px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SnHCMoXejBI/AAAAAAAACLg/zJLIwfcSizo/s320/import_certificate4.JPG" alt="" id="BLOGGER_PHOTO_ID_5364282153425079314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V_sYr0AnKIc/SnHCb33vL8I/AAAAAAAACLo/GS6AuPbu6-A/s1600-h/import_certificate5.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 151px;" src="http://2.bp.blogspot.com/_V_sYr0AnKIc/SnHCb33vL8I/AAAAAAAACLo/GS6AuPbu6-A/s320/import_certificate5.JPG" alt="" id="BLOGGER_PHOTO_ID_5364282415284957122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Your updated truststore is now ready to use!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-7424940116233859050?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/7424940116233859050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=7424940116233859050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/7424940116233859050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/7424940116233859050'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2009/07/how-to-update-truststore.html' title='How to update a TrustStore'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_V_sYr0AnKIc/SnG_LV1TEPI/AAAAAAAACJg/5yaN4sQtToI/s72-c/launch.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-7346023042519281302</id><published>2009-06-01T13:38:00.000-07:00</published><updated>2009-06-05T13:49:36.630-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Community One'/><category scheme='http://www.blogger.com/atom/ns#' term='programming languages'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud Computing'/><title type='text'>Community One 2009</title><content type='html'>This year &lt;a href="http://bit.ly/OcflV"&gt;&lt;span style="font-weight: bold;"&gt;Cloud Computing&lt;/span&gt;&lt;/a&gt; was really the &lt;a href="http://bit.ly/MmBm2"&gt;buzz word&lt;/a&gt; at &lt;a href="http://developers.sun.com/events/communityone/2009/west/index.jsp"&gt;Community One&lt;/a&gt; in the West Coast (San Francisco)!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sun.com/solutions/cloudcomputing/index.jsp"&gt;Cloud Computing&lt;/a&gt; was in fact the opening topic  by &lt;a href="http://www.sun.com/aboutsun/media/ceo/bio.jsp?name=David%20Douglas"&gt;Dave Douglas&lt;/a&gt; on the &lt;a href="http://bit.ly/rg5w2"&gt;general session&lt;/a&gt; (the other topic was &lt;a href="http://opensolaris.org/os/"&gt;Open Solaris&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;It was interesting to learn that &lt;a href="http://blogs.sun.com/jonathan/entry/unified_computing"&gt;SUN Cloud offer&lt;/a&gt; started only few months ago, but it has been quite successful with more than 3000 people using it every days.&lt;br /&gt;&lt;br /&gt;Dave did introduce also a couple of interesting companies that offer applications that run on the &lt;a href="http://www.blogger.com/www.sun.com/cloud"&gt;SUN Cloud&lt;/a&gt; infrastructure:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.moonwalkinc.com/"&gt;Moonwalk&lt;/a&gt; uses the cloud to save data for disaster recovery.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vertica.com/"&gt;Vertica&lt;/a&gt; : &lt;a href="http://en.wikipedia.org/wiki/Column-oriented_database"&gt;Column oriented DBMS&lt;/a&gt; with a &lt;a href="http://www.vertica.com/cloud"&gt;version for the cloud&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.webappvm.com/"&gt;WebAppVM&lt;/a&gt; : Virtual Machine - to migrate from local machine to the cloud.&lt;/li&gt;&lt;li&gt;&lt;a href="http://hadoop.apache.org/core/"&gt;Apache Hadoop&lt;/a&gt; a software platform that helps write and run applications that process vast amounts of data (using &lt;a href="http://wiki.apache.org/hadoop/HadoopMapReduce"&gt;MapReduce&lt;/a&gt;).&lt;/li&gt;&lt;/ul&gt;Security is still a concern in the cloud. Sun seems to take security quite seriously. It participates to the &lt;a href="http://www.cisecurity.org/"&gt;Center for Internet Security&lt;/a&gt;  and offer tools to encrypt data as well.&lt;br /&gt;&lt;br /&gt;There also a very good material on programming languages and the Cloud from &lt;a href="http://www.sauria.com/blog/2009/06/01/communityone-and-javaone/"&gt;Ted Leung&lt;/a&gt; Principal Engineer at SUN who presented an overview of cloud computing architectures and the ways they interact with programming languages.  He covered various topics : Security, Concurrency, Performance, Distribution, Operational Considerations and Domain Specific Languages (DSL).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SiRS8cgPeZI/AAAAAAAAB84/TW5wcRB6wqg/s1600-h/Cloud_community_one_SF_09.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 239px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SiRS8cgPeZI/AAAAAAAAB84/TW5wcRB6wqg/s320/Cloud_community_one_SF_09.png" alt="" id="BLOGGER_PHOTO_ID_5342486256365304210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sauria.com/blog/"&gt;Ted&lt;/a&gt; introduced some of the innovations  in the Cloud infrastructure including storage and computing in the Infrastructure as a Service (aaS) layer, Virtual Machine Images (Stack aaS), &lt;a href="http://code.google.com/appengine/"&gt;AppEngine&lt;/a&gt;, &lt;a href="http://heroku.com/"&gt;Heroku&lt;/a&gt;, &lt;a href="http://zembly.com/"&gt;Zembly&lt;/a&gt; (Platform aaS), &lt;a href="http://www.salesforce.com/"&gt;Salesforce&lt;/a&gt; (Software aaS).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Infrastructure aaS issues&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No predefined Software Stack&lt;/li&gt;&lt;li&gt;You have to do everything&lt;/li&gt;&lt;li&gt;Languages cannot help&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Stack aaS issues:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You get whatever language is in the stack&lt;/li&gt;&lt;li&gt;Depends on the quality of the stack interaction&lt;/li&gt;&lt;li&gt;Languages can help, part of the stack interaction&lt;/li&gt;&lt;li&gt;Services are not part of the stack&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Platform aaS issues:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Specialized high performance Data Access/Storage (CouchDB, Big Table, Key/Value Stores, Non Relational DB, Map Reduce)&lt;/li&gt;&lt;li&gt;Identity&lt;/li&gt;&lt;li&gt;Asynchronous messaging (XMPP, Queing)&lt;/li&gt;&lt;li&gt;Payments&lt;/li&gt;&lt;li&gt;You get whatever language is in the platform&lt;/li&gt;&lt;li&gt;Platform inlcudes network services beyond language runtime&lt;/li&gt;&lt;li&gt;Leads to a service oriented system&lt;/li&gt;&lt;li&gt;Part of the difference is the quality of the integration&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Software aaS issues:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SaaS application may or may not be programmable&lt;/li&gt;&lt;li&gt;The SaaS may have its onw language&lt;/li&gt;&lt;li&gt;Learning curve/training&lt;/li&gt;&lt;li&gt;Integration&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Characteritics of the Cloud Environment:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Multitenants&lt;/li&gt;&lt;li&gt;Heterogeneous&lt;/li&gt;&lt;li&gt;Scalability is a goal&lt;/li&gt;&lt;li&gt;Elastic/Provisioned by machine&lt;/li&gt;&lt;li&gt;Monitored/Audited&lt;/li&gt;&lt;li&gt;Services Oriented&lt;/li&gt;&lt;/ul&gt;The most interesting part of the presentation was certainely the part dedicated to languages with a comprehensive overview of specialized programming languages for the Cloud.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Areas where languages intersect the Cloud:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Security/Resource Control&lt;/li&gt;&lt;li&gt;Performance&lt;/li&gt;&lt;li&gt;Concurrency&lt;/li&gt;&lt;li&gt;Distribution&lt;/li&gt;&lt;li&gt;Operational Considerations&lt;/li&gt;&lt;li&gt;Domain Specific Languages&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;There are two language models for the cloud:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sandboxing (Java, &lt;a href="http://codespeak.net/pypy/dist/pypy/doc/"&gt;Pypy&lt;/a&gt;, &lt;a href="http://code.google.com/appengine/"&gt;Google AppEngine&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Capability-based_security"&gt;Capabilities &lt;/a&gt;(&lt;a href="http://code.google.com/p/google-caja/"&gt;Caja&lt;/a&gt;, &lt;a href="http://code.google.com/p/joe-e/"&gt;Joe-E&lt;/a&gt;, E)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Projects and Languages targeted to address Cloud issues:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Transactional Memory (&lt;a href="http://www.haskell.org/"&gt;Haskell,&lt;/a&gt; &lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Actors (&lt;a href="http://erlang.org/"&gt;Erlang&lt;/a&gt;, &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx"&gt;Axum/F#&lt;/a&gt; ...)&lt;/li&gt;&lt;li&gt;Futures (Java, Python, Ruby libraries)&lt;/li&gt;&lt;li&gt;MapReduce (&lt;a href="http://hadoop.apache.org/core/"&gt;Hadoop&lt;/a&gt;, &lt;a href="http://discoproject.org/"&gt;Disco&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Persistence Data Structures (&lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Tuple Spaces (&lt;a href="http://www.jini.org/files/meetings/tenth/presentations/Intro_Jini_JavaSpaces.pdf"&gt;Jini/JavaSpaces&lt;/a&gt;, &lt;a href="http://www.gigaspaces.com/"&gt;GigaSpace&lt;/a&gt;, &lt;a href="http://c2.com/cgi/wiki?TupleSpace"&gt;Blitz&lt;/a&gt;, &lt;a href="http://www.almaden.ibm.com/cs/tspaces/"&gt;Tspaces&lt;/a&gt; ...)&lt;/li&gt;&lt;/ul&gt;Monitoring and instrumentation is also an important issue in Cloud Computing. &lt;a href="http://en.wikipedia.org/wiki/DTrace"&gt;DTrace&lt;/a&gt; for example (integrated with the latest Open Solaris version) is a powerful tool to analyse resource usage/behavior (e.g. which files are accessed throughout the whole stack).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other topics at Community One:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There were also other interesting topics besides Cloud Computing:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OpenSolaris&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Network vitualization&lt;/li&gt;&lt;li&gt;Snapshot using &lt;a href="http://en.wikipedia.org/wiki/ZFS"&gt;ZFS&lt;/a&gt;  (very cool@!)&lt;/li&gt;&lt;li&gt;Optimization of storage devices using Flash drives&lt;br /&gt;(these days, the bottle neck for a applications is data read/write on storage devices!)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sun.com/storage/disk_systems/unified_storage/"&gt;SUN 7000 Storage&lt;/a&gt;: New enterprise storage appliance  - 800 customers in just 4 months. up to 1/2 Petabytes of storage!&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;SUN Master Data Management 6.2 -&lt;/span&gt; (presentation by &lt;a href="http://blogs.sun.com/parijat/"&gt;Parijat Prosun Kar&lt;/a&gt;):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To help managed the business context data of entities or objects involved in business transaction (great for &lt;a href="http://en.wikipedia.org/wiki/Context_management"&gt;Context Management&lt;/a&gt;!)&lt;/li&gt;&lt;li&gt;Can be used in System aggregation/federation (e.g. portals)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Just in time business models require agility and integration across the enterprise &lt;/li&gt;&lt;li&gt;Help ongoing mergers and acquisitions &lt;/li&gt;&lt;li&gt;Compliance and localized governmental requirements &lt;/li&gt;&lt;li&gt;Includes a Master Index Studio, Data Integrator, Data Quality, Data Mashup/Services, Data Migrator&lt;br /&gt;&lt;/li&gt;&lt;li&gt;see also &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=49246"&gt;Mural&lt;/a&gt; (&lt;a href="https://mural.dev.java.net/"&gt;Open source Master Data Management &lt;/a&gt; from SUN)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Atmosphere&lt;/span&gt;: a &lt;a href="https://atmosphere.dev.java.net/"&gt;POJO based framework&lt;/a&gt; using inversion of control (IoC) to support &lt;a href="http://java.dzone.com/articles/entering-atmosphere-framework-"&gt;Comet&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SiVTZeV4puI/AAAAAAAAB9Y/gBrpBDOOjqI/s1600-h/DSC06164.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SiVTZeV4puI/AAAAAAAAB9Y/gBrpBDOOjqI/s320/DSC06164.JPG" alt="" id="BLOGGER_PHOTO_ID_5342768230051653346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IceFaces&lt;/span&gt; / &lt;span style="font-weight: bold;"&gt;AjaxPush&lt;/span&gt;: updates on the &lt;a href="http://www.icefaces.org/main/home/"&gt;J2EE Ajax framework&lt;/a&gt; presentation by &lt;a href="http://www.icesoft.com/"&gt;IceSoft&lt;/a&gt;.&lt;br /&gt;Here is an &lt;a href="http://www.liferay.com/web/ngriffin/blog/-/blogs/conference-talks:-social-networking-portlets-with-icefaces-ajax-push?_33_redirect=%2Fweb%2Fguest%2Fcommunity%2Fblogs"&gt;example that uses Liferay Portal platform&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SiVU36Xd_FI/AAAAAAAAB9g/u5a05vzXmzA/s1600-h/DSC06168.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SiVU36Xd_FI/AAAAAAAAB9g/u5a05vzXmzA/s320/DSC06168.JPG" alt="" id="BLOGGER_PHOTO_ID_5342769852482190418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Android&lt;/span&gt;: some good tips about the use of adapters, bitmap scaling, background refresh.&lt;br /&gt;By the way,  the next version of &lt;a href="http://www.android.com/"&gt;Android (Doughnout)&lt;/a&gt; is expected in Q3 of 2009.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SiVVQrnj7VI/AAAAAAAAB9o/4zztCMSBhP8/s1600-h/DSC06102.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SiVVQrnj7VI/AAAAAAAAB9o/4zztCMSBhP8/s320/DSC06102.JPG" alt="" id="BLOGGER_PHOTO_ID_5342770278019886418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;JRuby: &lt;/span&gt;updates on the  &lt;a href="http://en.wikipedia.org/wiki/Java_%28programming_language%29" title="Java (programming language)"&gt;Java&lt;/a&gt; implementation of the &lt;a href="http://en.wikipedia.org/wiki/Ruby_%28programming_language%29" title="Ruby (programming language)"&gt;Ruby.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-7346023042519281302?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/7346023042519281302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=7346023042519281302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/7346023042519281302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/7346023042519281302'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2009/06/community-one-2009.html' title='Community One 2009'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_V_sYr0AnKIc/SiRS8cgPeZI/AAAAAAAAB84/TW5wcRB6wqg/s72-c/Cloud_community_one_SF_09.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-2261218905026254965</id><published>2009-05-22T16:12:00.000-07:00</published><updated>2009-05-29T09:49:32.076-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Speech technology healthcare EMR CDM dictation nuance lifemasters'/><title type='text'>Speech Technology and HealthCare</title><content type='html'>Recently, I was invited to participate to a meeting of &lt;a href="http://www.avios.com/"&gt;AVIOS&lt;/a&gt; (Applied Voice Input Output Society) local chapter in Menlo Park, California to discuss the &lt;a href="http://www.speechtechmag.com/Articles/Editorial/FYI/Market-Spotlight-Healthcare-41425.aspx"&gt;use of speech technology in HealthCare and Medicine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Speech technology is not widely used in healthcare at the moment. The healthcare industry is &lt;a href="http://www.huffingtonpost.com/2009/05/10/obama-and-industry-groups_n_201366.html"&gt;still focusing&lt;/a&gt; on &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9127463"&gt;efficiency and cost saving&lt;/a&gt; by solving systems integration, re-wamping legacy systems and making paper based processes digital.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Dictation and transcription for EMRs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The most successful type of applications is probably dictation/transcription for electronic medical records (EMR).&lt;br /&gt;&lt;br /&gt;Speech recognition, enhancing productivity and reducing medical costs as a result. In this domain, &lt;a href="http://www.nuance.com/"&gt;Nuance&lt;/a&gt; is one of the market leader.&lt;br /&gt;&lt;br /&gt;The products and services of Nuance Healthcare are used at more than 5,000 hospitals and by more than 400,000 providers.&lt;br /&gt;&lt;br /&gt;Nuance’s on-premise &lt;a href="http://www.avios.org/news-Nuance-healthcare-business-continues-to-prosper.htm"&gt;Dictaphone Enterprise Speech System&lt;/a&gt; (ESS) components support recording the dictation audio, managing the audio and the resulting transcription process, transcription document distribution, and online reporting.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nuance.com/naturallyspeaking/"&gt;Dragon medical&lt;/a&gt; is another product  from Nuance with which physicians dictate in real-time into their EMR in their own words letting them instantly review, sign, and make their notes available for other clinicians. This include Medical Vocabularies, covering nearly 80 specialties and subspecialties and regional accent support.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Potential use for Care and Disease Management&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Besides dictation/transcription there are some additional potential uses of speech technology in other domains related to heathcare. Care and Disease Managament is one of them.&lt;br /&gt;&lt;br /&gt;Organizations/companies like &lt;a href="http://www.lifemasters.com/corporate/aboutDM/"&gt;Lifemasters&lt;/a&gt; have call centers where nurses help to help patients with chronic disease achieve optimal health by closing the gaps between recommended and actual care (evidence-based medicine) and encouraging patients to adopt a healthy lifestyle and reducing the overall cost of healthcare. Speech technology could be used to complement and optimize this type of services: virtual operators, voice activation services, automatic text-to-speech combined with voice-over-IP reminder and notifications (e.g. to take drugs, schedule an exam, do certain types of exercices etc ...). Companies like &lt;a href="http://www.reqall.com/"&gt;requall&lt;/a&gt; and &lt;a href="http://jott.com/default2.aspx"&gt;Jott&lt;/a&gt; already provide this type of notification infrastructure that can be delivered on mobile phones for example.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other Areas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Additional research areas in speech technology and healthcare include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Using speech/sound recognition to &lt;a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?tp=&amp;amp;arnumber=4556181&amp;amp;isnumber=4556149"&gt;monitor eating behavior&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://portal.acm.org/citation.cfm?id=1287086.1287207"&gt;disease assessment&lt;/a&gt; (e.g. parkinson over the phone, although this disease is very complex and voice is probably not the most important factor)&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;using speech recognition for &lt;a href="http://www.icpsr.umich.edu/DSDR/anonymizer.pdf"&gt;medical transcript anonymization&lt;/a&gt; to be used as corpora&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Overall, there is a big potential for &lt;a href="http://www.speechtechmag.com/Articles/Editorial/Feature/The-Role-of-Speech-in-Healthcare-29571.aspx"&gt;use of Speech Technology in the healthcare industry&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The recent improvements in Text-to-Speech make it very attractive to healthcare, especially to non life critical applications.&lt;br /&gt;&lt;br /&gt;Speech recognition accuracy is sometimes still a problem, but it is well suitable for sub-languages with specific vocabulary. It might be more difficult to be used directly by &lt;a href="http://en.wikipedia.org/wiki/Inpatient#Outpatients_and_inpatients"&gt;patients/health consumers&lt;/a&gt;, especially senior citizens where the language can be altered by their conditions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-2261218905026254965?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/2261218905026254965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=2261218905026254965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/2261218905026254965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/2261218905026254965'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2009/05/speech-technology-and-healthcare.html' title='Speech Technology and HealthCare'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-4411588625290505424</id><published>2009-04-23T09:30:00.000-07:00</published><updated>2009-04-23T22:52:38.982-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HIMSS 2009 Kaiser permanente PHR kp.prg'/><title type='text'>HIMSS 2009 - How Consumers use PHRs (KP)</title><content type='html'>While at &lt;a href="http://www.himssconference.org/"&gt;HIMSS 2009&lt;/a&gt; in Chicago early this month I did attend a very interesting talk from &lt;a href="http://www.prolibraries.com/himss/?select=speaker&amp;amp;speakerID=25965"&gt;Judy Derman&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=gm0nhDnT7cE"&gt;Jan Oldenburg&lt;/a&gt; from &lt;a href="https://www.kaiserpermanente.org/"&gt;Kaiser Permanente&lt;/a&gt; untitled: "&lt;span style="font-style: italic; color: rgb(51, 204, 0); font-weight: bold;"&gt;How Consumers use Personal Health Records (PHRs) : lessons learned&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.kaiserpermanente.org/"&gt;Kaiser Permanente&lt;/a&gt; (KP) has a very large user based (2.5M consumers/patients and 13,000 healthcare professionels)  for their online services (a portal accessible at &lt;a href="http://www.kp.org/"&gt;www.KP.org&lt;/a&gt; portal and &lt;a href="https://members.kaiserpermanente.org/kpweb/toc.do?theme=myhealthmanager_members"&gt;My Health Manager&lt;/a&gt;, a &lt;a href="http://en.wikipedia.org/wiki/Personal_health_record"&gt;Personal Health Record (PHR)&lt;/a&gt; built with the help of  &lt;a href="http://wiki.patientsknowbest.com/Epic_Systems"&gt;EPIC&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;In this talk, Judy and Jan described the lessons learned from usage patterns on these web applications.&lt;br /&gt;&lt;br /&gt;The consumers/patients are motivated by the fact that they can act on their information. It is not just about looking at a medical record, but act one it. Example of useful actions include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;start changing health related behavior&lt;/li&gt;&lt;li&gt;refill a prescription online&lt;/li&gt;&lt;li&gt;make appointment with their doctor&lt;/li&gt;&lt;li&gt;send email with care professionals&lt;/li&gt;&lt;li&gt;access educational programs (some of the most popular are: diabetes, depression, insomnia, weight management)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The consumers will trust these applications  and the associated medical information as long as it is :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;transparent&lt;/li&gt;&lt;li&gt;accessible&lt;/li&gt;&lt;li&gt;consistent&lt;/li&gt;&lt;li&gt;secure&lt;/li&gt;&lt;li&gt;timely and accurate&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.kaiserpermanentejobs.org/"&gt;Kaiser Permanente&lt;/a&gt; study shows that the implementation success factors include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;early adopters are leaders in usage and feedback&lt;/li&gt;&lt;li&gt;there is a strong leadership from senior leaders&lt;/li&gt;&lt;li&gt;importance of clearly define explicit and articulated benefits&lt;/li&gt;&lt;li&gt;allocate appropriate and sufficient resources to do the job&lt;/li&gt;&lt;li&gt;resource must have appropriate skills&lt;/li&gt;&lt;li&gt;involve stakeholders / members / patients early in the process&lt;/li&gt;&lt;li&gt;make decision at the appropriate level&lt;/li&gt;&lt;li&gt;provide tools to support implementation (marketing material and toolkits)&lt;/li&gt;&lt;li&gt;use standard prcedures &lt;/li&gt;&lt;li&gt;use effective and integrated marketing&lt;/li&gt;&lt;li&gt;simplify the "getting started" mechanism (one step activation + pre-populate heath record)&lt;/li&gt;&lt;li&gt;drive adoption with multiple channel marketing&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The &lt;a href="https://members.kaiserpermanente.org/kpweb/toc.do?theme=myhealthmanager_members"&gt;Kaiser PHR&lt;/a&gt; was &lt;a href="http://www.bio-medicine.org/medicine-news-1/Kaiser-Permanente-Puts-Personal-Health-Record-Front-and-Center-5620-1/"&gt;launched in January 2007&lt;/a&gt; and has reached 2.7 users by April 2009.&lt;br /&gt;&lt;br /&gt;In 2008, 84% of the users choose the "One step activation" mechanism and 54% of KP members signed-in with 40.8% of user male and 51.2% female.&lt;br /&gt;&lt;br /&gt;Here are the top features in the last two years:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SfCuY1eS1gI/AAAAAAAAB6k/cY68Y5cd0Fg/s1600-h/kp_phr_top_features.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 136px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SfCuY1eS1gI/AAAAAAAAB6k/cY68Y5cd0Fg/s320/kp_phr_top_features.PNG" alt="" id="BLOGGER_PHOTO_ID_5327950100873532930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here are some statistics/facts about the &lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;Email/secure messaging&lt;/span&gt; service of the KP PHR:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;6M emails in 2008 sent to doctors (13M since the launch in 2007)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;600,000 emails per months in 2009&lt;/li&gt;&lt;li&gt;14% of messages are written by physicians and clinicians&lt;/li&gt;&lt;li&gt;14,000 physicians are using emails regularly&lt;/li&gt;&lt;/ul&gt; One of the benefits of the email services is that the patients using email were 7-10% less likely to schedule an appointment.&lt;br /&gt;&lt;br /&gt;Here are some statistics/facts about the &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Lab/test results&lt;/span&gt; &lt;/span&gt; service of the KP  PHR:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;16.7M test in 2008&lt;/li&gt;&lt;li&gt;61M tests results available online&lt;/li&gt;&lt;li&gt;31M since launch&lt;br /&gt;&lt;/li&gt;&lt;li&gt;certain tests are not online (HIV, genetic tests ...)&lt;/li&gt;&lt;/ul&gt;Here are some statistics/facts about the &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Presciption refill&lt;/span&gt; &lt;/span&gt; service of the KP  PHR:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;5.6M refill in 2008&lt;/li&gt;&lt;li&gt;increase of 26% in 2007-2008&lt;/li&gt;&lt;li&gt;Up to 23% of refill are done online&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-4411588625290505424?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/4411588625290505424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=4411588625290505424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/4411588625290505424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/4411588625290505424'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2009/04/himss-2009-how-consumers-user-phrs-kp.html' title='HIMSS 2009 - How Consumers use PHRs (KP)'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_V_sYr0AnKIc/SfCuY1eS1gI/AAAAAAAAB6k/cY68Y5cd0Fg/s72-c/kp_phr_top_features.PNG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-5278268093026719159</id><published>2009-03-31T08:34:00.000-07:00</published><updated>2009-03-31T15:29:52.488-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='healthcare portal benefits services components'/><title type='text'>HealthCare and the benefits of a Portal Strategy</title><content type='html'>The idea that software should be componentized (built from prefabricated components) has been proposed more that 40 years ago. However it is only recently, with the advent of&lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture"&gt; Service Oriented Architecture (SOA)&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Software_as_a_service"&gt;Software as a Service (SaaS)&lt;/a&gt; that effective software componentization methods to integrate systems and develop solutions have been available.&lt;br /&gt;These methods help promote code reuse, low-cost system development, contribute to software quality and to more flexible IT infrastructures.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Software componentization&lt;/span&gt; can help software companies acquire and maintain a competitive advantage by developing, deploying and maintaining services and solutions faster, cheaper and better than their competitors. Using Web and Mobile based Graphic User Interface (GUI) components is the most common way for users to interact with IT systems.&lt;br /&gt;&lt;br /&gt;The ability to create customizable and reusable front-end software components is especially valuable for software companies and their partners. Combined with cost effective deployment solutions such as &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;Cloud Computing&lt;/a&gt;, new services can quickly be bundled, offered and tuned for specific targeted sets of customers and later rolled-out to new markets very easily.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Componentization&lt;/span&gt; can also help to rapidly make custom changes (such as &lt;span style="color: rgb(0, 153, 0);"&gt;re-branding or re-skinning&lt;/span&gt;) since the presentation layer is isolated from the service layer. Aggregated in &lt;span style="font-weight: bold;"&gt;web portals&lt;/span&gt;, front-end components can be layered on top of existing data structures, enterprise and legacy systems as well as third party services.&lt;br /&gt;&lt;br /&gt;In healthcare for example, &lt;span style="font-weight: bold;"&gt;portals&lt;/span&gt; can &lt;span style="color: rgb(0, 153, 0);"&gt;offer a unified and personalized view for healthcare professionals, and provide real-time access to a selected patient's clinical information&lt;/span&gt;. The same portal infrastructure can be also customized for the patients and their care givers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Portal technology&lt;/span&gt; provides ways to&lt;span style="color: rgb(0, 153, 0);"&gt; integrate information, people and processes across organizational boundaries&lt;/span&gt;. It provides a secure unified access point (&lt;a href="http://en.wikipedia.org/wiki/Single_sign-on"&gt;SSO&lt;/a&gt;), often in the form of a web-based user interface, and is designed to aggregate and personalize information through application-specific component or &lt;a href="http://en.wikipedia.org/wiki/Portlets"&gt;portlets&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Another characteristic of the portal technology is the fact that &lt;span style="font-weight: bold;"&gt;content management can be decentralized&lt;/span&gt; allowing richer content and more efficient update of the data and information presented to the users.&lt;br /&gt;&lt;br /&gt;A portal approach brings benefits to &lt;span style="color: rgb(0, 153, 0);"&gt;your customers/end-users (healthcare professionals and patients), your development, professional service and IT teams, but also your partners&lt;/span&gt;!&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;benefits for your end-users&lt;/span&gt;:  Portal solutions also offer rich user experience by leveraging Web 2.0 technologies and specific components (e.g. wikis, blogs, message boards, widgets, social networking, maps, &lt;a href="http://en.wikipedia.org/wiki/Single_sign-on"&gt;SSO&lt;/a&gt;, etc). Portal customization and personalization also offers to the end-users a more personalized experience based on their profiles such as their role in the organization or user group and preferences (e.g. choice of layout and look and feel).&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;benefits for your development team&lt;/span&gt;:  This includes a common architecture for the aggregation of heterogeneous components and services, a clear separation between the presentation layer and the service layer, and the fact that portlets are based on standard technologies (e.g. JSF, Spring, Spring MVC, Hibernate, &lt;a href="http://jcp.org/en/jsr/detail?id=168"&gt;JSR-168&lt;/a&gt;, &lt;a href="http://jcp.org/en/jsr/detail?id=286"&gt;JSR-286&lt;/a&gt;, &lt;a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrp"&gt;WSRP 1.0/2.0&lt;/a&gt;, AJAX, Java EE, or even Flex).&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;benefits for your professional service and IT teams&lt;/span&gt;: Portal technology can save substantial costs to both the professional service team in charge of creating solutions using a portal approach including the ability to create and combine quickly customized components that are easy re-branded for various customers is clearly a good return on investment (ROI).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;benefits for your IT department&lt;/span&gt;:  For the IT department, in charge of deploying and maintaining services and applications, to be able to run multiple portal sites, each with a unique domain, on the same portal server reduces avoids to duplicate hardware and image instances. Portlets can be deployed at run-time (hot deployment) reducing down time for the user and facilitate the maintenance of the applications.  In addition to this, specific content, branding, layout and skins can be stored and managed independently of the application in a content management system, saving costs during development, deployment and maintenance.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;For the past couple of years, there has been a &lt;span style="font-weight: bold;"&gt;clear interest in the healthcare industry&lt;/span&gt;, not only in the US, but also in Canada and Europe &lt;span style="font-weight: bold;"&gt;to use portal frameworks as a solution to aggregate heterogeneous services and applications&lt;/span&gt;. There are still a lot of important and sensitive issues to address for this type of solution in the healthcare industry (&lt;span style="color: rgb(0, 153, 0);"&gt;security, auditing capabilities, user and content management, integration, performance, scalability, availability, quality assurance, lifecycle management, maintenance and monetization&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Next week (April 4-8 2009) at &lt;a href="http://www.himssconference.org/"&gt;HIMSS-09&lt;/a&gt; in Chicago, it will be interesting to see if the trend is confirmed and how many vendors have been repackaged their solutions using portal technology.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-5278268093026719159?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/5278268093026719159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=5278268093026719159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/5278268093026719159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/5278268093026719159'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2009/03/healthcare-and-benefits-of-portal.html' title='HealthCare and the benefits of a Portal Strategy'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-7170198318575565816</id><published>2009-02-28T16:51:00.000-08:00</published><updated>2009-03-06T11:43:41.053-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='FABridge'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Liferay portal'/><title type='text'>Liferay and Flex Ajax Bridge (FABridge)</title><content type='html'>I am using &lt;a href="http://www.liferay.com/%20"&gt;Liferay&lt;/a&gt; to create highly interactive and componentized web applications and solutions for the healthcare industry. &lt;a href="http://www.adobe.com/products/flex/"&gt;Adobe Flex&lt;/a&gt; is one of the technology I am using the create portlets for Liferay. One challenge is the communication between portlets and between the core layer of the portlet that &lt;a href="http://fandry.blogspot.com/2009/01/flex-web-service-introspection-wizard.html"&gt;access services&lt;/a&gt; and wrapping GUI layer (JSP/HTML and Javascript).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/products/flex/"&gt;Adobe Flex 3.0 SDK&lt;/a&gt; now contains the &lt;a href="http://labs.adobe.com/wiki/index.php/Flex_Framework:FABridge"&gt;Flex Ajax Bridge (FABridge) developed by Adobe Labs&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=ajaxbridge_1.html"&gt;Flex Ajax Bridge&lt;/a&gt; is a small library that can be help you expose an flex application (Action Script graph) to scripting by Javascript.&lt;br /&gt;&lt;br /&gt;To show how FABridge works in Liferay. I have created very simple Flex application that show a button. I then modify the label of the button at runtime via javascript.&lt;br /&gt;&lt;br /&gt;The code for the Flex application is very simple:&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;mx:Application&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; xmlns:mx="http://www.adobe.com/2006/mxml"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; xmlns:fab="bridge.*"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &amp;lt;fab:FABridge bridgeName="flash" id="flash" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &amp;lt;mx:Button id="button" label="Original Button" width="150"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The Flex application needs to refer to the action script part of the FABridge library (FABridge.as).&lt;br /&gt;&lt;br /&gt;Likewise, your Javascript will need to refer to the Javascript part of the library (FABridge.js).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SbF83Ivpw5I/AAAAAAAAB2s/NT4iYxPGYLg/s1600-h/FABridge_project.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 210px; height: 294px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SbF83Ivpw5I/AAAAAAAAB2s/NT4iYxPGYLg/s320/FABridge_project.PNG" alt="" id="BLOGGER_PHOTO_ID_5310162722328527762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The build.bat file is a simple command (&lt;span style="color: rgb(0, 153, 0);"&gt;mxmlc main.mxml -output main.swf&lt;/span&gt;) for building the SWF file.  But you can also use Flex Builder for this.&lt;br /&gt;&lt;br /&gt;Here is how the resulting SWF file looks like inside a very simple Liferay portlet:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V_sYr0AnKIc/SanqFkhInKI/AAAAAAAAB2E/N0VMGkUv0lI/s1600-h/original_FABridge_portlet.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 120px;" src="http://2.bp.blogspot.com/_V_sYr0AnKIc/SanqFkhInKI/AAAAAAAAB2E/N0VMGkUv0lI/s320/original_FABridge_portlet.PNG" alt="" id="BLOGGER_PHOTO_ID_5308031017255738530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The code for the wrapping portlet is contains inside the &lt;span style="color: rgb(0, 153, 0);"&gt;view.jsp&lt;/span&gt; file. I am using &lt;a href="http://code.google.com/p/swfobject/"&gt;SWFObject 2.0&lt;/a&gt; to &lt;a href="http://blog.innerfence.com/2008/06/05/using-fabridge-and-swfobject-together/"&gt;integrate the SWF file&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I am also using JQuery (I have added manually JQuery 1.2.6 lib - but I assume that I could leverage JQuery that comes with Liferay) to highlight the SWF container in green if the bridge succeeds at changing the content of the button:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V_sYr0AnKIc/SbF4kx2zd0I/AAAAAAAAB2U/snksWWVG1hE/s1600-h/bridge_ok.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 123px;" src="http://2.bp.blogspot.com/_V_sYr0AnKIc/SbF4kx2zd0I/AAAAAAAAB2U/snksWWVG1hE/s320/bridge_ok.PNG" alt="" id="BLOGGER_PHOTO_ID_5310158008900351810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If there is an expection, which is the case when the portlet is added in Liferay in Internet Explorer (IE 7.0) - refreshing the page works however! ). Then the container is highlighted in red:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V_sYr0AnKIc/SbF464rvzWI/AAAAAAAAB2c/a-uw3J4g40A/s1600-h/bridge_notok.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 118px;" src="http://2.bp.blogspot.com/_V_sYr0AnKIc/SbF464rvzWI/AAAAAAAAB2c/a-uw3J4g40A/s320/bridge_notok.PNG" alt="" id="BLOGGER_PHOTO_ID_5310158388690144610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is the whole code of the JSP file:&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;portlet:defineObjects /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;script type="text/javascript" src="&amp;lt;%= request.getContextPath() %&amp;gt;/js/swfobject.js"&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  swfobject.registerObject("myId", "9.0.0", "expressInstall.swf");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;script type="text/javascript" src="&amp;lt;%= request.getContextPath() %&amp;gt;/js/FABridge.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;script type="text/javascript" src="&amp;lt;%=request.getContextPath()%&amp;gt;/js/jquery-1.2.6.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   accessFlex();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   function accessFlex()  {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;       &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        var initCallback = function() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            try {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                    var root = FABridge.flash.root();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                    root.getButton().setLabel("Modified by FABridge");                       &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                    $("#swf_div").css("border","3px solid green");    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            catch(err) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                $("#swf_div").css("border","3px solid red");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            }  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        FABridge.addInitializationCallback("flash",initCallback);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;div id="swf_div"&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="350" height="70"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;param name="movie" value="&amp;lt;%= request.getContextPath() %&amp;gt;/flex/main.swf" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;!--[if !IE]&amp;gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;object type="application/x-shockwave-flash" data="&amp;lt;%= request.getContextPath() %&amp;gt;/flex/main.swf" width="350" height="70"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;!--&amp;lt;![endif]--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;p&amp;gt;Alternative content&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;!--[if !IE]&amp;gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;/object&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;!--&amp;lt;![endif]--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/object&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-7170198318575565816?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/7170198318575565816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=7170198318575565816' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/7170198318575565816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/7170198318575565816'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2009/02/liferay-and-flex-ajax-bridge-fabridge.html' title='Liferay and Flex Ajax Bridge (FABridge)'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_V_sYr0AnKIc/SbF83Ivpw5I/AAAAAAAAB2s/NT4iYxPGYLg/s72-c/FABridge_project.PNG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-3181737302173171826</id><published>2009-01-07T10:37:00.000-08:00</published><updated>2009-01-08T08:12:22.413-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlazeDS Flex LifeSensor Web Service Introspection Wizard'/><title type='text'>Flex Web Service Introspection Wizard and BlazeDS</title><content type='html'>In my previous post, I mentioned that if you want to fully use &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=data_4.html"&gt;Flex 3.0 Web Service introspection wizard&lt;/a&gt;, you will need to either use &lt;a href="http://www.adobe.com/products/livecycle/dataservices/"&gt;Adobe LifeCycle Data service&lt;/a&gt;, or have a &lt;a href="http://stackoverflow.com/questions/101427/flex-and-crossdomainxml"&gt;cross domain file&lt;/a&gt; installed on the server that expose the web services you want to use.&lt;br /&gt;&lt;br /&gt;However, if you use only BlazeDS, the web service wizard can still be useful to better understand which type of objects you obtain when calling 3rd party web services (besides looking at the wsdl file and debugging ResultEvent.result content).&lt;br /&gt;&lt;br /&gt;In this post I will describe how to use Flex Builder 3.0 to introspect the &lt;a href="http://www.icw-global.com/us/en/"&gt;ICW&lt;/a&gt; &lt;a href="http://www.icw-global.com/us/en/loesungen/lifesensor.html"&gt;LifeSensor&lt;/a&gt; &lt;a href="http://idn.icw-global.com/"&gt;Web Service API&lt;/a&gt;. Then I will build a small Flex based portlet to display information related to a patient who has his medical information stored in the &lt;a href="http://idn.icw-global.com/solutions/lifesensor/lifesensor.html"&gt;LifeSensor Personal Health Record (PHR)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A. Introspecting the Web Services&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For this, you will need to know the &lt;a href="http://en.wikipedia.org/wiki/Web_Services_Description_Language"&gt;WSDL  URL&lt;/a&gt; of your web services.&lt;br /&gt;&lt;br /&gt;In the case of  LifeSensor, I am accessing the WSDL file over HTTPS which is protected with a login and password but you can also &lt;a href="http://shardulbartwal.wordpress.com/2008/03/20/import-web-servicewsdl-wizard-in-flex-30/"&gt;test the intropection wizard&lt;/a&gt; with &lt;a href="http://www.xmethods.net/ve2/index.po"&gt;free available web services available on the internet&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;From Flex builder (I am using Flex Eclipse plugin), select "Data/Import Web Service (WSDL)...":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SWT9ov6IWTI/AAAAAAAABu8/38_GIOPzw-Q/s1600-h/wswiz_menu.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 70px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SWT9ov6IWTI/AAAAAAAABu8/38_GIOPzw-Q/s320/wswiz_menu.jpg" alt="" id="BLOGGER_PHOTO_ID_5288630738936682802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then select the folder you want to import your classes to, click next, then enter the WSDL URL and click next again:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SWT-Eq0mjYI/AAAAAAAABvE/K3WQ9RnS6UQ/s1600-h/wswiz1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 222px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SWT-Eq0mjYI/AAAAAAAABvE/K3WQ9RnS6UQ/s320/wswiz1.jpg" alt="" id="BLOGGER_PHOTO_ID_5288631218607656322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First you select the list of the operations you want to import. In my case, I just want to import the operation &lt;span style="font-weight: bold; font-style: italic;"&gt;findAccessibleRecords&lt;/span&gt;&lt;span style="font-style: italic;"&gt;. &lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;You can also change the default value of the packages for the classes that are going to be generated and the main class name.&lt;br /&gt;&lt;br /&gt;In my case, I just kept the default values, respectively &lt;span style="font-weight: bold; font-style: italic;"&gt;com.lifesensor&lt;/span&gt; and &lt;span style="font-weight: bold; font-style: italic;"&gt;RecordModuleWebServiceImplService&lt;/span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SWT_m9u76KI/AAAAAAAABvM/_CDRD6Nwgxs/s1600-h/wswiz2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 297px; height: 320px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SWT_m9u76KI/AAAAAAAABvM/_CDRD6Nwgxs/s320/wswiz2.jpg" alt="" id="BLOGGER_PHOTO_ID_5288632907311343778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It just takes few seconds to generate the proxy classes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V_sYr0AnKIc/SWT__fS-96I/AAAAAAAABvU/i8uQb3R3s_0/s1600-h/wswiz4.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 297px; height: 320px;" src="http://2.bp.blogspot.com/_V_sYr0AnKIc/SWT__fS-96I/AAAAAAAABvU/i8uQb3R3s_0/s320/wswiz4.jpg" alt="" id="BLOGGER_PHOTO_ID_5288633328637769634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Even though I am importing only one operation from LifeSensor, a little bit more than 80 classes are generated.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SWVBqsxi90I/AAAAAAAABvo/GctgxJaDWD8/s1600-h/classes.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 146px; height: 320px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SWVBqsxi90I/AAAAAAAABvo/GctgxJaDWD8/s320/classes.png" alt="" id="BLOGGER_PHOTO_ID_5288705539245799234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;RecordInfoXto &lt;/span&gt;and its dependent classes structure is very close to the object returned by the web service call. Therefore I will be using only the following files:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;AddressXto.as&lt;/li&gt;&lt;li&gt;CodeSystemXto.as&lt;/li&gt;&lt;li&gt;CodeXto.as&lt;/li&gt;&lt;li&gt;DateXto.as&lt;/li&gt;&lt;li&gt;EmbeddedObjectXto.as&lt;/li&gt;&lt;li&gt;RecordInfoXto.as&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SWVBbLiUFII/AAAAAAAABvg/OnAbeYvig-k/s1600-h/import.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 228px; height: 135px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SWVBbLiUFII/AAAAAAAABvg/OnAbeYvig-k/s320/import.png" alt="" id="BLOGGER_PHOTO_ID_5288705272625501314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; * RecordInfoXto.as&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; * This file was auto-generated from WSDL by the Apache Axis2 generator modified by Adobe&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; * Any change made to this file will be overwritten when the code is re-generated.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;package com.lifesensor&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    import mx.utils.ObjectProxy;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    import flash.utils.ByteArray;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    import mx.rpc.soap.types.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    /**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;     * Wrapper class for a operation required type&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;     */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    public class RecordInfoXto extends com.lifesensor.EmbeddedObjectXto&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        /**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;         * Constructor, initializes the type class&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;         */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public function RecordInfoXto() {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;           &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public var academicTitle:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public var address:com.lifesensor.AddressXto;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public var birthDate:com.lifesensor.DateXto;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public var birthPlace:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public var familyName:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public var gender:com.lifesensor.CodeXto;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public var givenName:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public var middleName:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public var scope:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public var subjectId:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   public class AddressXto extends com.lifesensor.EmbeddedObjectXto {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  /**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   * Constructor, initializes the type class&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public function AddressXto() {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var city:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var corpus:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var country:com.lifesensor.CodeXto;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var flat:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var line1:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var line2:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var organization:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var postalCode:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var state:com.lifesensor.CodeXto;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var streetAddressLine:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var zipCodeExtension:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        public class CodeXto extends com.lifesensor.CodeSystemXto&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  /**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   * Constructor, initializes the type class&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public function CodeXto() {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var key:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; public class DateXto extends com.lifesensor.EmbeddedObjectXto&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  /**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   * Constructor, initializes the type class&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public function DateXto() {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  public var isoDate:String;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;B. Creating the Flex component using BlazeDS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fandry.blogspot.com/2008/12/blazeds-and-secure-web-service-access.html"&gt;In a previous post&lt;/a&gt;, I have described in details how to create a BlazeDS application that uses BlazeDS to access web services. This one is very similar.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://learn.adobe.com/wiki/display/Flex/Creating+a+BlazeDS+web+service+application+in+Flex+Builder"&gt;proxy-config.xml &lt;/a&gt;describes the web service end-points and channel:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;destination id="ws-lifesensor-record"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            &amp;lt;wsdl&amp;gt;https://record2.us.lifesensor.com/phr/services/v2-5-0/RecordWebService?wsdl&amp;lt;/wsdl&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            &amp;lt;remote-username&amp;gt;????????&amp;lt;/remote-username&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            &amp;lt;remote-password&amp;gt;????????&amp;lt;/remote-password&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            &amp;lt;soap&amp;gt;https://record2.us.lifesensor.com/phr/services/v2-5-0/RecordWebService&amp;lt;/soap&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;/properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;adapter ref="soap-proxy"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;/destination&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;First,  I import the generated classes. Then populating the RecordInfoXto object is straightforward:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;import com.lifesensor.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;private function findAccessibleRecords_result(event:ResultEvent):void {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  if (event.result != null) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    var all_records:ArrayCollection = event.result as ArrayCollection;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    var record:Object = all_records.getItemAt(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    // State&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    var state:CodeXto = new CodeXto();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    state.key = record.address.state.key;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    // Country&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    var country:CodeXto = new CodeXto();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    country.key = record.address.country.key;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    // Address&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    var address:AddressXto = new AddressXto();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    address.streetAddressLine = record.address.streetAddressLine;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    address.city = record.address.city;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    address.postalCode = record.address.postalCode;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    address.state = state;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    address.country = country;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    // Gender&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    var gender:CodeXto = new CodeXto();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    gender.key = record.gender.key;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    // Birth Date&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    var date:DateXto = new DateXto();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    date.isoDate = record.birthDate.isoDate;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    // Record &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    patient_record = new RecordInfoXto();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    patient_record.givenName = record.givenName;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    patient_record.familyName = record.familyName;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    patient_record.gender = gender;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    patient_record.address = address;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    patient_record.birthDate = date;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The resulting Flex based portlet is very simple (with a very compact code):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V_sYr0AnKIc/SWVCUtQcurI/AAAAAAAABvw/NuvoipYaSH0/s1600-h/clinical_data_portlet.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 189px;" src="http://2.bp.blogspot.com/_V_sYr0AnKIc/SWVCUtQcurI/AAAAAAAABvw/NuvoipYaSH0/s320/clinical_data_portlet.PNG" alt="" id="BLOGGER_PHOTO_ID_5288706260929919666" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-3181737302173171826?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/3181737302173171826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=3181737302173171826' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/3181737302173171826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/3181737302173171826'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2009/01/flex-web-service-introspection-wizard.html' title='Flex Web Service Introspection Wizard and BlazeDS'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_V_sYr0AnKIc/SWT9ov6IWTI/AAAAAAAABu8/38_GIOPzw-Q/s72-c/wswiz_menu.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-5385068694028566788</id><published>2008-12-18T08:27:00.000-08:00</published><updated>2009-01-08T08:09:01.769-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlazeDS Flex Proxy HTTPS SSL LifeSensor Web Services'/><title type='text'>BlazeDS and secure Web Service access</title><content type='html'>In a &lt;a href="http://fandry.blogspot.com/2008/11/how-to-use-blazeds-for-web-service.html"&gt;previous post&lt;/a&gt;, I described how to use Flex/BlazeDS to a access remote &lt;a href="http://en.wikipedia.org/wiki/Web_services"&gt;Web Services&lt;/a&gt;.&lt;br /&gt;This time, I am explaining how to access a secure Web Service that requires basic authentication using the same mechanism. This involves additional changes in the configuration files.&lt;br /&gt;&lt;br /&gt;My goal is to create flex components that access &lt;a href="http://www.icw-global.com/us/en/solutions/lifesensor.html"&gt;ICW Lifesensor&lt;/a&gt; public &lt;a href="https://record2.us.lifesensor.com/phr/services"&gt;Web services&lt;/a&gt;.&lt;br /&gt;The additional complication is that the access to &lt;a href="http://en.wikipedia.org/wiki/Web_Services_Description_Language"&gt;wsdl file&lt;/a&gt; required authentication over &lt;a href="http://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Fortunately, I have the login and password of a Lifesensor Account (patient), so I can use them&lt;br /&gt;to access the Reporting Web Services in order to retrieve medical data entries. More information about the &lt;a href="http://www.icw-global.com/us/en/solutions/lifesensor.html"&gt; Lifesensor&lt;/a&gt; APIs and Web services are available on the &lt;a href="http://idn.icw-global.com/"&gt;ICW Developer Network&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To illustrate my point, I will use a very simple Web Service call &lt;a href="https://record2.us.lifesensor.com/phr/services/Version?wsdl"&gt;getVersion&lt;/a&gt; that return some general information about the web services such as the Axis version and build date (Lifesensor uses the open source &lt;a href="http://en.wikipedia.org/wiki/Apache_Axis"&gt;Apache Axis framework&lt;/a&gt; to provide Web Services).&lt;br /&gt;&lt;br /&gt;In the &lt;span style="font-weight: bold;"&gt;wsdl file&lt;/span&gt; for Version, the &lt;span style="font-weight: bold;"&gt;port description&lt;/span&gt; shows that the getVersion &lt;span style="font-weight: bold;"&gt;operation&lt;/span&gt; does not have any parameter, so the call to the Web Service will be straightforward:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&amp;lt;wsdl:porttype name="Version"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt; &amp;lt;wsdl:operation name="getVersion"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;  &amp;lt;wsdl:input message="impl:getVersionRequest" name="getVersionRequest"&amp;gt;&amp;lt;/wsdl:input&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;  &amp;lt;wsdl:output message="impl:getVersionResponse" name="getVersionResponse"&amp;gt;&amp;lt;/wsdl:output&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;  &amp;lt;/wsdl:operation&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&amp;lt;/wsdl:porttype&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/"&gt;BlazeDS&lt;/a&gt; offers a &lt;a href="http://en.wikipedia.org/wiki/Proxy_server"&gt;Proxy&lt;/a&gt; to access remote servers. This is necessary, if you &lt;a href="http://www.jroller.com/ndpar/entry/secure_proxy_blazeds"&gt;do not have a crossdomain.xml file on your remote server&lt;/a&gt;. As a result, there will be two hops. One from the shockwave component on the client to the Proxy, the other one from the Proxy to the remote server where the Web Services reside.&lt;br /&gt;&lt;br /&gt;For security reasons, &lt;a href="http://www.mail-archive.com/flexcoders@yahoogroups.com/msg95639.html"&gt;both bops have to be secure&lt;/a&gt;, as a result, the initial SWF access and loading has to be done through HTTPS.  In my case, my application (and the BlazeDS proxy) is served by &lt;a href="http://tomcat.apache.org/"&gt;Tomcat 6.0&lt;/a&gt; that has &lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html"&gt;been configured for SSL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The first configuration change is in the &lt;span style="font-weight: bold;"&gt;proxy-config.xml&lt;/span&gt;.  Besides the fact that the URL is now using HTTPS protocol, you will need also to specify the soap URL instead of using a wildchard in order &lt;a href="http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=60&amp;amp;catid=583&amp;amp;threadid=1344508&amp;amp;enterthread=y"&gt;to avoid a RPC Fault&lt;/a&gt; since "&lt;span style="font-style: italic;"&gt;a destination that allows multiple domains or ports does not allow authentication&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Also, since LifeSensor is using &lt;a href="http://en.wikipedia.org/wiki/Basic_authentication"&gt;basic access authentication&lt;/a&gt;, the easiest way to avoid the pop-up window from your browser asking you for the login and password (especially for the first hop, which is not relevant), is to set them in the proxy-config.xml initially via &lt;a href="http://www.adobeforums.com/webx?14@@.59b55459/1"&gt;remote-user and remote-password tags&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     &amp;lt;destination id="ws-lifesensor-version"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       &amp;lt;properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;           &amp;lt;wsdl&amp;gt;https://record2.us.lifesensor.com/phr/services/Version?wsdl&amp;lt;/wsdl&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;           &amp;lt;remote-username&amp;gt;?????&amp;lt;/remote-username&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;           &amp;lt;remote-password&amp;gt;?????&amp;lt;/remote-password&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;           &amp;lt;soap&amp;gt;https://record2.us.lifesensor.com/phr/services/Version&amp;lt;/soap&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       &amp;lt;/properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       &amp;lt;adapter ref="soap-proxy"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;   &amp;lt;/destination&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The MXML flex file is not very different from a Web Service access with no authentication. The following code is just specific to the Lifesensor Web Service API:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&amp;lt;mx:Script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     &amp;lt;![CDATA[&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       ...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       private function getData():void { webService_LS_Version.getVersion.send();}   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       ...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    ]]&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;   &amp;lt;/mx:Script&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;   &amp;lt;mx:WebService id="webService_LS_Version" destination="ws-lifesensor-version" useProxy="true"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       &amp;lt;mx:operation name="getVersion"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;               resultFormat="object"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;               result="getData_result(event);"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;               fault="getData_fault(event);"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       &amp;lt;/mx:operation&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;   &amp;lt;/mx:WebService&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Calling the &lt;span style="font-weight: bold;"&gt;Version &lt;/span&gt;Web Service from LifeSensor (via an application on https://localhost:8443/) returns the following text:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"Apache Axis version: 1.4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Built on Apr 22, 2006 (06:55:48 PDT)"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In addition to this, my recommendations will be to use &lt;a href="http://novaquarx.wordpress.com/2008/10/09/flex-3-remote-debugging/"&gt;Flex remote debugging&lt;/a&gt; and a &lt;span style="font-weight: bold;"&gt;HTTP debugging proxy&lt;/span&gt; such as &lt;a href="http://www.charlesproxy.com/"&gt;Charles&lt;/a&gt; or &lt;a href="http://www.fiddlertool.com/fiddler/"&gt;Fiddler&lt;/a&gt; which can be very handy to understand and debug  AMF and SOAP based HTTP wrapped requests.&lt;br /&gt;&lt;br /&gt;Also, &lt;a href="http://shardulbartwal.wordpress.com/2008/03/20/import-web-servicewsdl-wizard-in-flex-30/"&gt;Flex Builder 3.0&lt;/a&gt; has very nice &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=data_4.html"&gt;Web Service Introspection tool&lt;/a&gt;. Unfortunately, you will need to have a cross domain file on the server you want to introspect or have LifeCycle Data service to use the generated proxies. Apparently, if you only use BlazeDS, there are no direct ways to use the generated code out of the box. However, you can use some of the generated classes to store some of the data you obtain from the Web Services. This will be the topic of &lt;a href="http://fandry.blogspot.com/2009/01/flex-web-service-introspection-wizard.html"&gt;my next post&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-5385068694028566788?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/5385068694028566788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=5385068694028566788' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/5385068694028566788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/5385068694028566788'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2008/12/blazeds-and-secure-web-service-access.html' title='BlazeDS and secure Web Service access'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-7407607584821480200</id><published>2008-11-19T09:13:00.000-08:00</published><updated>2009-01-08T08:13:09.212-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex z-index div transparency liferay'/><title type='text'>Flex z-index and Liferay Portal</title><content type='html'>We recently encountered an issue when embedding Flex/Flash applications in &lt;a href="http://www.liferay.com/"&gt;Liferay&lt;/a&gt; Portlets.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://en.wikipedia.org/wiki/SWF"&gt;shockwave&lt;/a&gt; (.swf) file was showing on top of the liferay navigation menu:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SSRLEXS86eI/AAAAAAAABs0/dLWLC7ne08E/s1600-h/lr_flex_z-index1.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 202px;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SSRLEXS86eI/AAAAAAAABs0/dLWLC7ne08E/s320/lr_flex_z-index1.PNG" alt="" id="BLOGGER_PHOTO_ID_5270420002275387874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The usual solution is to specify the &lt;a href="http://segment7.net/projects/web/z-index.html"&gt;z-index&lt;/a&gt; for the &lt;a href="http://forums.asp.net/t/1315046.aspx"&gt;div layers&lt;/a&gt;.&lt;br /&gt;There are even some very cool things you can do with &lt;a href="http://note19.com/2007/11/27/how-to-overlay-a-flex-control-on-google-maps/"&gt;Flex overla&lt;/a&gt;&lt;a href="http://note19.com/2007/11/27/how-to-overlay-a-flex-control-on-google-maps/"&gt;y&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Liferay however is a third party portal platform and if you don't want to have to change the source code or extend Liferay, a quick fix is to use the &lt;a href="http://www.liferay.com/web/guest/community/forums/-/message_boards/message/716031?_19_redirect=%2Fweb%2Fguest%2Fcommunity%2Fforums%2F-%2Fmessage_boards%2Fsearch%3F_19_redirect%3D%252Fweb%252Fguest%252Fcommunity%252Fforums%26_19_breadcrumbsCategoryId%3D0%26_19_searchCategoryIds%3D0%26_19_keywords%3Dz-index"&gt;wmode argument for the embedded flex application&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   &amp;lt;embed wmode="transparent" src="&amp;lt;%= request.getContextPath() %&amp;gt;/flex/clinical_data.swf" height=250 width=500&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You just have to redeploy your portlet and now the menu appears on top of your portlet:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SSRK9PcW-lI/AAAAAAAABss/2C78PtYzgL8/s1600-h/lr_flex_z-index2.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 205px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SSRK9PcW-lI/AAAAAAAABss/2C78PtYzgL8/s320/lr_flex_z-index2.PNG" alt="" id="BLOGGER_PHOTO_ID_5270419879908276818" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-7407607584821480200?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/7407607584821480200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=7407607584821480200' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/7407607584821480200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/7407607584821480200'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2008/11/flex-z-index-and-liferay-portal.html' title='Flex z-index and Liferay Portal'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_V_sYr0AnKIc/SSRLEXS86eI/AAAAAAAABs0/dLWLC7ne08E/s72-c/lr_flex_z-index1.PNG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-2956705836969154052</id><published>2008-11-13T14:03:00.000-08:00</published><updated>2009-01-08T08:14:20.725-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Liferay portlets BlazeDS configuration Messier'/><title type='text'>Liferay Portlet using BlazeDS</title><content type='html'>In my &lt;a href="http://fandry.blogspot.com/2008/11/how-to-use-blazeds-for-web-service.html"&gt;previous post&lt;/a&gt;, I explained why and how I used &lt;a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS"&gt;BlazeDS&lt;/a&gt;,  a server-based Java remoting and web messaging technology, to call remote Web Services easily from &lt;a href="http://labs.adobe.com/wiki/index.php/Flex_3:Release_Notes#Overview"&gt;Adobe Flex&lt;/a&gt; applications.&lt;br /&gt;&lt;br /&gt;In this post I explain how to create a &lt;a href="http://fandry.blogspot.com/2008/08/liferay-portal-my-first-impressions.html"&gt;Liferay portlet&lt;/a&gt; that uses &lt;a href="http://www.liferay.com/web/guest/community/forums/-/message_boards/message/709987#_19_message_178913"&gt;Flex&lt;/a&gt; and &lt;a href="http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Adobe+Flex++BlazeDS+integration"&gt;BlazeDS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Creating the Liferay Portlet&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Adobe+Flex++BlazeDS+integration?_36_version=1.1"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Creating a new portlet is straightforward. Under &lt;span style="color: rgb(0, 153, 0);"&gt;./liferay-plugins-sdk-5.1.1/portlets&lt;/span&gt; at the prompt I just typed the command: &lt;span style="font-weight: bold;"&gt;create messier_object "Messier Object WS"&lt;/span&gt;. As a result, a &lt;span style="font-weight: bold;"&gt;messier_object-portlet&lt;/span&gt; folder is created with the skeleton of a working portlet (the first argument of create is the name of the portlet (always postfixed with '&lt;span style="font-weight: bold;"&gt;-portlet&lt;/span&gt;'), the second argument is the title of the portlet).&lt;br /&gt;&lt;br /&gt;I then modified the category name of &lt;span style="color: rgb(0, 153, 0);"&gt;messier_object-portlet/docroot/WEB-INF/liferay-display.xml&lt;/span&gt; to ICW.Test.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;display&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   &amp;lt;category name="ICW.Test"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;portlet id="messier_object"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   &amp;lt;/portlet&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/category&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I then added the Flex code by copying my &lt;a href="http://fandry.blogspot.com/2008/11/how-to-use-blazeds-for-web-service.html"&gt;testing Flex Application&lt;/a&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;Test_Flex_WS_messier.mxml&lt;/span&gt; under the &lt;span style="font-weight: bold;"&gt;docroot&lt;/span&gt; folder.&lt;br /&gt;&lt;br /&gt;Integrating the target shockwave file in the view.jsp file is also straightforward:&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   &amp;lt;embed src="&amp;lt;%= request.getContextPath() %&amp;gt;/Test_Flex_WS_messier.swf" heigth=350 width=350&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Adding BlazeDS Libraries and Configuration Files&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I then added a set of 10 jar files (backport-util-concurrent.jar to flex-messaging-remoting.jar) that came with the &lt;a href="http://opensource.adobe.com/wiki/display/blazeds/Release+Builds"&gt;turnkey BlazeDS installation sample code&lt;/a&gt; inside the &lt;span style="font-weight: bold;"&gt;WEB-INF/lib&lt;/span&gt; folder.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SRyvoeRhOzI/AAAAAAAABrs/p63gQJwApK8/s1600-h/messier-portlet.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 161px; height: 320px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SRyvoeRhOzI/AAAAAAAABrs/p63gQJwApK8/s320/messier-portlet.PNG" alt="" id="BLOGGER_PHOTO_ID_5268278773972810546" border="0" /&gt;&lt;/a&gt;In addition to this, I had to copy the four BlazeDS configuration files:&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;messaging-config.xml, proxy-config.xml, remoting-config.xml, services-config.xml&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The services defined in these files are generic and can be reuse if you want to access remote data either through Messaging, HTTService, WebService or RPC/AMF remote procedure calls.&lt;br /&gt;&lt;br /&gt;Only &lt;span style="color: rgb(0, 153, 0);"&gt;proxy-config.xml &lt;/span&gt;contains a specific web service destination (ws-sesame) to access astronomical data for the application.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Content of &lt;span style="color: rgb(0, 153, 0);"&gt;messaging-config.xml&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;service id="message-service" class="flex.messaging.services.MessageService"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;adapters&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;adapter-definition id="actionscript" class="flex.messaging.services.messaging.adapters.ActionScriptAdapter" default="true" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;adapter-definition id="jms" class="flex.messaging.services.messaging.adapters.JMSAdapter"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/adapters&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;default-channels&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;channel ref="my-streaming-amf"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;channel ref="my-polling-amf"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/default-channels&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Content of &lt;span style="color: rgb(0, 153, 0);"&gt;proxy-config.xml&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre style="color: rgb(0, 153, 0);"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;service id="proxy-service" class="flex.messaging.services.HTTPProxyService"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;lt;connection-manager&amp;gt;&lt;br /&gt;&amp;lt;max-total-connections&amp;gt;100&amp;lt;/max-total-connections&amp;gt;&lt;br /&gt;&amp;lt;default-max-connections-per-host&amp;gt;2&amp;lt;/default-max-connections-per-host&amp;gt;&lt;br /&gt;&amp;lt;/connection-manager&amp;gt;&lt;br /&gt;&amp;lt;allow-lax-ssl&amp;gt;true&amp;lt;/allow-lax-ssl&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;default-channels&amp;gt;&lt;br /&gt;&amp;lt;channel ref="my-http"/&amp;gt;&lt;br /&gt;&amp;lt;channel ref="my-amf"/&amp;gt;&lt;br /&gt;&amp;lt;/default-channels&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;adapters&amp;gt;&lt;br /&gt;&amp;lt;adapter-definition id="http-proxy" class="flex.messaging.services.http.HTTPProxyAdapter" default="true"/&amp;gt;&lt;br /&gt;&amp;lt;adapter-definition id="soap-proxy" class="flex.messaging.services.http.SOAPProxyAdapter"/&amp;gt;&lt;br /&gt;&amp;lt;/adapters&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;destination id="DefaultHTTP"&amp;gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&amp;lt;/destination&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;destination id="ws-sesame"&amp;gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;lt;wsdl&amp;gt;http://cdsws.u-strasbg.fr/axis/services/Sesame?wsdl&amp;lt;/wsdl&amp;gt;&lt;br /&gt;&amp;lt;soap&amp;gt;*&amp;lt;/soap&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&amp;lt;adapter ref="soap-proxy"/&amp;gt;&lt;br /&gt;&amp;lt;/destination&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/service&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Content of &lt;span style="color: rgb(0, 153, 0);"&gt;remoting-config.xml&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="color: rgb(0, 153, 0);"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;service id="remoting-service" class="flex.messaging.services.RemotingService"&amp;gt;&lt;br /&gt;&amp;lt;adapters&amp;gt;&lt;br /&gt;&amp;lt;adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/&amp;gt;&lt;br /&gt;&amp;lt;/adapters&amp;gt;&lt;br /&gt;&amp;lt;default-channels&amp;gt;&lt;br /&gt;&amp;lt;channel ref="my-amf"/&amp;gt;&lt;br /&gt;&amp;lt;/default-channels&amp;gt;&lt;br /&gt;&amp;lt;/service&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Content of &lt;span style="color: rgb(0, 153, 0);"&gt;services-config.xml&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;services-config&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;services&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;service-include file-path="remoting-config.xml" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;service-include file-path="proxy-config.xml" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;service-include file-path="messaging-config.xml" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;default-channels&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;     &amp;lt;channel ref="my-amf"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;/default-channels&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &amp;lt;/services&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;channels&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;channel-definition id="my-streaming-amf" class="mx.messaging.channels.StreamingAMFChannel"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/streamingamf" class="flex.messaging.endpoints.StreamingAMFEndpoint"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;/channel-definition&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;polling-enabled&amp;gt;false&amp;lt;/polling-enabled&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;/properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;/channel-definition&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;/channel-definition&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;polling-enabled&amp;gt;true&amp;lt;/polling-enabled&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;polling-interval-seconds&amp;gt;4&amp;lt;/polling-interval-seconds&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;/properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;/channel-definition&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;channel-definition id="my-http" class="mx.messaging.channels.HTTPChannel"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/http" class="flex.messaging.endpoints.HTTPEndpoint"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;/channel-definition&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;channel-definition id="my-secure-http" class="mx.messaging.channels.SecureHTTPChannel"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/httpsecure" class="flex.messaging.endpoints.SecureHTTPEndpoint"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;/channel-definition&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/channels&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;logging&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;!-- You may also use flex.messaging.log.ServletLogTarget --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;target class="flex.messaging.log.ConsoleTarget" level="Error"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;prefix&amp;gt;[BlazeDS] &amp;lt;/prefix&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;includeDate&amp;gt;false&amp;lt;/includeDate&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;includeTime&amp;gt;false&amp;lt;/includeTime&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;includeLevel&amp;gt;true&amp;lt;/includeLevel&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;includeCategory&amp;gt;false&amp;lt;/includeCategory&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;/properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;filters&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;pattern&amp;gt;Endpoint.*&amp;lt;/pattern&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;pattern&amp;gt;Service.*&amp;lt;/pattern&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;pattern&amp;gt;Configuration&amp;lt;/pattern&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;/filters&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;/target&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/logging&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;system&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;redeploy&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;watch-interval&amp;gt;20&amp;lt;/watch-interval&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;watch-file&amp;gt;{context.root}/WEB-INF/flex/services-config.xml&amp;lt;/watch-file&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;watch-file&amp;gt;{context.root}/WEB-INF/flex/proxy-config.xml&amp;lt;/watch-file&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;watch-file&amp;gt;{context.root}/WEB-INF/flex/remoting-config.xml&amp;lt;/watch-file&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;watch-file&amp;gt;{context.root}/WEB-INF/flex/messaging-config.xml&amp;lt;/watch-file&amp;gt;      &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;touch-file&amp;gt;{context.root}/WEB-INF/web.xml&amp;lt;/touch-file&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  &amp;lt;/redeploy&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/system&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/services-config&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Do not forget to copy the definitions of the listener and the MessageBroker Servlet in your &lt;a href="http://fandry.blogspot.com/2008/11/how-to-use-blazeds-for-web-service.html"&gt;web.xml&lt;/a&gt; file.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Compiling the Flex Application&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To compile the Flex application that will be encapsulated into the portlet, you will need to specify the portlet name as &lt;span style="font-weight: bold;"&gt;context root&lt;/span&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;mxmlc -strict=true -show-actionscript-warnings=true -use-network=true \&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;-services=WEB-INF/flex/services-config.xml -context-root=messier_object-portlet \&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;-output=./Test_Flex_WS_messier.swf ./Test_Flex_WS_messier.mxml&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Deploying the Portlet&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To be able to access BlazeDS from the portlet, you will also need to copy the BlazeDS  war file in tomcat under &lt;span style="color: rgb(0, 153, 0);"&gt;.\bundles\tomcat-6.0.16\webapps&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;To compile and deploy the whole portlet just type the command 'ant deploy' at the prompt in the&lt;span style="font-weight: bold;"&gt; messier_object-portlet&lt;/span&gt; folder.&lt;br /&gt;&lt;br /&gt;You can then add the portlet and test it:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SRy2s-jZBuI/AAAAAAAABr0/P92eeP69eGw/s1600-h/add-messier-portlet.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 266px; height: 320px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SRy2s-jZBuI/AAAAAAAABr0/P92eeP69eGw/s320/add-messier-portlet.PNG" alt="" id="BLOGGER_PHOTO_ID_5268286547938576098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SRy3hIJWInI/AAAAAAAABsM/-xNBFrfcg_4/s1600-h/working-messier-portlet.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 223px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SRy3hIJWInI/AAAAAAAABsM/-xNBFrfcg_4/s320/working-messier-portlet.PNG" alt="" id="BLOGGER_PHOTO_ID_5268287443866886770" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-2956705836969154052?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/2956705836969154052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=2956705836969154052' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/2956705836969154052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/2956705836969154052'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2008/11/liferay-portlets-using-blazeds.html' title='Liferay Portlet using BlazeDS'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_V_sYr0AnKIc/SRyvoeRhOzI/AAAAAAAABrs/p63gQJwApK8/s72-c/messier-portlet.PNG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-3811911824125598015</id><published>2008-11-07T10:19:00.000-08:00</published><updated>2009-01-08T08:15:04.873-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlazeDS Web Service Flex MXML ActionScript cross-domain'/><title type='text'>How to use BlazeDS for Web Service access</title><content type='html'>&lt;span style="font-family:arial;"&gt;I was recently asked to investigate how quickly aggregate medical content from various sources in a portal environment. One path I explored was to use &lt;/span&gt;&lt;a style="font-family: arial;" href="http://labs.adobe.com/wiki/index.php/Flex_3:Release_Notes"&gt;Adobe Flex&lt;/a&gt;&lt;span style="font-family:arial;"&gt; as front-end technology and access remote web services such as the ones offered by &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.icw-global.com/us/en/solutions/lifesensor.html"&gt;ICW LifeSensor&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;With &lt;/span&gt;&lt;a style="font-family: arial;" href="http://labs.adobe.com/wiki/index.php/Flex_3:Release_Notes"&gt;Flex 3.0&lt;/a&gt;&lt;span style="font-family:arial;"&gt; you &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.adobe.com/devnet/flex/articles/flex_ws.html"&gt;can easily use a Web Service directly&lt;/a&gt;&lt;span style="font-family:arial;"&gt; from your &lt;/span&gt;&lt;a style="font-family: arial;" href="http://blog.flexexamples.com/2008/04/14/calling-a-simple-web-service-from-flex-using-the-webservice-class/"&gt;MXML&lt;/a&gt;&lt;span style="font-family:arial;"&gt; or ActionScript code, including &lt;/span&gt;&lt;a style="font-family: arial;" href="http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_19327"&gt;.NET based web services&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;However there are some restrictions. For security reasons, applications running in Flash Player on client computers can only access remote data sources if one of the following conditions is met:&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;Your SWF file is in the same domain as the remote data source.&lt;/li&gt;&lt;li&gt;A &lt;a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14213"&gt;cross-domain policy file&lt;/a&gt; is installed on the web server hosting the data source. &lt;/li&gt;&lt;li&gt;You use a &lt;a href="http://www.blogger.com/www.adobe.com/go/16520#proxy"&gt;proxy&lt;/a&gt; and your SWF file is on the same server as the proxy.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:arial;"&gt;Since the Web services I want to use are not under my control and I know they do not have a cross-domain policy files installed, the only solution left is for me to use a &lt;/span&gt;&lt;a style="font-family: arial;" href="http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_16520&amp;amp;sliceId=2"&gt;proxy&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The good news is that &lt;/span&gt;&lt;a style="font-family: arial;" href="http://opensource.adobe.com/wiki/display/blazeds/Downloads"&gt;BlazeDS&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, in addition to add &lt;/span&gt;&lt;a style="font-family: arial;" href="http://en.wikipedia.org/wiki/Remote_procedure_call"&gt;RPC&lt;/a&gt;&lt;span style="font-family:arial;"&gt; capabilities to Flex,  acts as a  Proxy, so won't have to write my own!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installing and trying BlazeDS&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;a href="http://labs.adobe.com/wiki/index.php/BlazeDS:Release_Notes"&gt;BlazeDS&lt;/a&gt; is really easy to &lt;a href="http://daveturner.greatwideweb.com/wiki/index.php?title=Installing_BlazeDS"&gt;install&lt;/a&gt;. I choose to &lt;a href="http://opensource.adobe.com/wiki/display/blazeds/Downloads"&gt;download&lt;/a&gt; the &lt;a href="http://opensource.adobe.com/wiki/display/blazeds/Release+Builds"&gt;turnkey version&lt;/a&gt; to start because it includes a runtime environment (&lt;a href="http://tomcat.apache.org/"&gt;Apache Tomcat&lt;/a&gt;) and lot of samples.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SRSRvp36g2I/AAAAAAAABrc/wglh8Mdzcv0/s1600-h/turnkey.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 103px;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SRSRvp36g2I/AAAAAAAABrc/wglh8Mdzcv0/s320/turnkey.PNG" alt="" id="BLOGGER_PHOTO_ID_5265994112183206754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;After download and unzip, the only things I had to do was to start the database for the samples (&lt;a href="http://hsqldb.org/"&gt;Hypersonic/HSQLDB&lt;/a&gt;) and start tomcat and point to &lt;a href="http://localhost:8400/samples/"&gt;http://localhost:8400/samples/&lt;/a&gt;. The "&lt;a href="http://localhost:8400/samples/testdrive.htm"&gt;Take the test drive&lt;/a&gt;" of the tutorial contains a section (sample 2) using web services. The sample code is accessible  in &lt;span style="color: rgb(0, 153, 0);"&gt;.\blazeds_turnkey_3-0-0-544\tomcat\webapps\samples\testdrive-webservice\src\main.mxml:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;     &amp;lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"   backgroundColor="#FFFFFF"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;       &amp;lt;mx:WebService id="srv" destination="ws-catalog" useProxy="true" showBusyCursor="true"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;mx:DataGrid dataProvider="{srv.getProducts.lastResult}" width="100%" height="100%"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;          &amp;lt;mx:columns&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                  &amp;lt;mx:DataGridColumn dataField="productId" headerText="Product Id"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                  &amp;lt;mx:DataGridColumn dataField="name" headerText="Name"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;                  &amp;lt;mx:DataGridColumn dataField="price" headerText="Price"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;           &amp;lt;/mx:columns&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;       &amp;lt;/mx:DataGrid&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;       &amp;lt;mx:Button label="Get Data" click="srv.getProducts()"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   &amp;lt;/mx:Application&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;The destination of the web service is defined in &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-family:arial;font-size:100%;"  &gt;.\samples\WEB-INF\flex\&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span style="color: rgb(0, 153, 0);"&gt;proxy-config.xml&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   &amp;lt;destination id="ws-catalog"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;       &amp;lt;properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;           &amp;lt;wsdl&amp;gt;http://livecycledata.org/services/ProductWS?wsdl&amp;lt;/wsdl&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;           &amp;lt;soap&amp;gt;*&amp;lt;/soap&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;       &amp;lt;/properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;       &amp;lt;adapter ref="soap-proxy"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   &amp;lt;/destination&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span&gt;Installing and trying BlazeDS&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The next step for me was to try to build a new Flex application from scratch&lt;br /&gt;that uses a web service from an outside domain.&lt;br /&gt;I decided to use one of my favorite free testing Web service,&lt;br /&gt;the "&lt;span style="font-style: italic;"&gt;&lt;a href="http://cdsws.u-strasbg.fr/"&gt;&lt;span style="font-weight: bold;"&gt;CDS&lt;/span&gt;&lt;/a&gt; - &lt;span style="font-weight: bold;"&gt;Ce&lt;/span&gt;ntre de &lt;span style="font-weight: bold;"&gt;D&lt;/span&gt;onnées astronomiques de &lt;span style="font-weight: bold;"&gt;S&lt;/span&gt;trasbourg&lt;/span&gt;"&lt;br /&gt;located in Alsace, France which provides access to Astronomical data,&lt;br /&gt;including &lt;a href="http://en.wikipedia.org/wiki/List_of_Messier_objects"&gt;Messier Objects&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cdsws.u-strasbg.fr/axis/services/Sesame?wsdl"&gt;Sesame&lt;/a&gt; is one of the &lt;a href="http://cdsws.u-strasbg.fr/axis/services/Sesame?wsdl"&gt;apache axis based services&lt;/a&gt; hosted by &lt;a href="http://cdsweb.u-strasbg.fr/cdsws.gml"&gt;CDS&lt;/a&gt;.&lt;br /&gt;In the same way, this new service is declared in the &lt;span style="color: rgb(0, 153, 0);"&gt;proxy-config.xml&lt;/span&gt; file:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;      &amp;lt;destination id="ws-sesame"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            &amp;lt;wsdl&amp;gt;http://cdsws.u-strasbg.fr/axis/services/Sesame?wsdl&amp;lt;/wsdl&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            &amp;lt;soap&amp;gt;*&amp;lt;/soap&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;/properties&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;adapter ref="soap-proxy"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;/destination&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Flex program is very easy to construct.&lt;br /&gt;I have a list of Messier Objects in a combo box with their IDs (Mxxxx)&lt;br /&gt;that are passed as argument for the SesameXML web service operation (see &lt;a href="http://cdsws.u-strasbg.fr/axis/services/Sesame?wsdl"&gt;WDSL&lt;/a&gt; file).&lt;br /&gt;The web service call indicated that &lt;span style="font-weight: bold;"&gt;BlazeDS &lt;/span&gt;is used as as proxy (&lt;span style="font-weight: bold;"&gt;useProxy="true"&lt;/span&gt;)&lt;br /&gt;and define two ActionScripts methods to handle the result coming back&lt;br /&gt;from the remote service and to handle any error (respectively &lt;span style="font-weight: bold;"&gt; getData_result &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;getData_fault&lt;/span&gt;).&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre  style="font-family:arial;"&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;&amp;lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;    &amp;lt;mx:Script&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;        &amp;lt;![CDATA[&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;            import mx.controls.Alert;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;            import mx.rpc.events.ResultEvent;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;            import mx.rpc.events.FaultEvent;&lt;br /&gt;   import mx.utils.ObjectUtil;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;            &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;            // This software uses source code created at the Centre de Données astronomiques de Strasbourg, France.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;            private function getData():void { webService.SesameXML.send();}&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;            private function getData_result(evt:ResultEvent):void {textArea.text = ObjectUtil.toString(evt.result);}&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;            private function getData_fault(evt:FaultEvent):void {Alert.show(evt.type);}&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;        ]]&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;    &amp;lt;/mx:Script&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;    &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;    &amp;lt;mx:WebService id="webService" destination="ws-sesame" useProxy="true"&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;        &amp;lt;mx:operation name="SesameXML"&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                resultFormat="object"&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                result="getData_result(event);"&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                fault="getData_fault(event);"&amp;gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                &amp;lt;mx:request&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;    &amp;lt;name&amp;gt;{messier_object.selectedItem.data}&amp;lt;/name&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;  &amp;lt;/mx:request&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;        &amp;lt;/mx:operation&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;    &amp;lt;/mx:WebService&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt; &amp;lt;mx:ApplicationControlBar dock="true"&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;        &amp;lt;mx:Button id="button" label="get Messier Data" click="getData();" /&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;        &amp;lt;mx:Spacer width="10%"/&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;        &amp;lt;mx:ComboBox id="messier_object" width="200"&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;            &amp;lt;mx:dataProvider&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;               &amp;lt;mx:ArrayCollection&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                  &amp;lt;mx:source&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Crab Nebula" data="M1"/&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Butterfly Cluster" data="M6"/&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Butterfly Cluster" data="M6"/&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Ptolemy Cluster" data="M7"/&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Lagoon Nebula" data="M8"/&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Wild Duck Cluster" data="M11"/&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Great Globular Cluster in Hercules" data="M13"/&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Eagle Nebula" data="M16"/&amp;gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Omega Nebula" data="M17"/&amp;gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Trifid Nebula" data="M20"/&amp;gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Sagittarius Cluster" data="M22"/&amp;gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                    &amp;lt;mx:Object label="Sagittarius Star Cloud" data="M24"/&amp;gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                  &amp;lt;/mx:source&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;                &amp;lt;/mx:ArrayCollection&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;            &amp;lt;/mx:dataProvider&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;           &amp;lt;/mx:ComboBox&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;    &amp;lt;/mx:ApplicationControlBar&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;    &amp;lt;mx:TextArea id="textArea" editable="false" width="100%" height="100%" /&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;&amp;lt;/mx:Application&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;font-family:Georgia,serif;font-size:100%;"  &gt;&lt;span&gt;Building the SWF file&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;pre&gt;&lt;pre&gt;To build your shockwave executable file, it is important to indicate where the services&lt;br /&gt;configuration file is located, so the BlazeDS stub is added to the *.SWF file&lt;br /&gt;running in the browser inside the Flash Player and will make the connection&lt;br /&gt;of the BlazeDS proxy.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;mxmlc -strict=true \&lt;br /&gt;-show-actionscript-warnings=true \&lt;br /&gt;-use-network=true \&lt;br /&gt;-services=WEB-INF/flex/services-config.xml \&lt;br /&gt;-context-root=samples \&lt;br /&gt;-output=testdrive-webservice/main.swf testdrive-webservice/src/main.mxm&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;In fact, &lt;span style="color: rgb(0, 153, 0);"&gt;services-config.xml &lt;/span&gt;describes the different services&lt;br /&gt;that the web application is using:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &amp;lt;services-config&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;services&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;service-include file-path="proxy-config.xml" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        ...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   &amp;lt;/services&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;   ....&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &amp;lt;/services-config&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You will also need to modify your &lt;span style="color: rgb(0, 153, 0);"&gt;./docroot/WEB-INF/web.xml&lt;/span&gt; file&lt;br /&gt;by adding the definitions of the listener and the MessageBroker Servlet definition.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;web-app&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;display-name&amp;gt;WebTest&amp;lt;/display-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;description&amp;gt;Application with Samples&amp;lt;/description&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;context-param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;param-name&amp;gt;flex.class.path&amp;lt;/param-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;param-value&amp;gt;/WEB-INF/flex/hotfixes&amp;lt;/param-value&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;/context-param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;!-- Http Flex Session attribute and binding listener support --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;listener&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;listener-class&amp;gt;flex.messaging.HttpFlexSession&amp;lt;/listener-class&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;/listener&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;!-- MessageBroker Servlet --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;servlet&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;servlet-name&amp;gt;MessageBrokerServlet&amp;lt;/servlet-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;display-name&amp;gt;MessageBrokerServlet&amp;lt;/display-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;servlet-class&amp;gt;flex.messaging.MessageBrokerServlet&amp;lt;/servlet-class&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;init-param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            &amp;lt;param-name&amp;gt;services.configuration.file&amp;lt;/param-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            &amp;lt;param-value&amp;gt;/WEB-INF/flex/services-config.xml&amp;lt;/param-value&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;/init-param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;/servlet&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;servlet-mapping&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;servlet-name&amp;gt;MessageBrokerServlet&amp;lt;/servlet-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;        &amp;lt;url-pattern&amp;gt;/messagebroker/*&amp;lt;/url-pattern&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    &amp;lt;/servlet-mapping&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;/web-app&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is the result after querying information about Messier object (&lt;a href="http://en.wikipedia.org/wiki/Crab_Nebula"&gt;M1 - Crab Nebula&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SRTRK3q7mxI/AAAAAAAABrk/aMSPsj_auDw/s1600-h/messier.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 294px;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SRTRK3q7mxI/AAAAAAAABrk/aMSPsj_auDw/s320/messier.PNG" alt="" id="BLOGGER_PHOTO_ID_5266063848975866642" border="0" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;pre&gt;&lt;pre&gt;The next task for me to see how to &lt;a href="http://fandry.blogspot.com/2008/11/liferay-portlets-using-blazeds.html"&gt;integrate BlazeDS in a portal environment&lt;/a&gt;&lt;br /&gt;such as &lt;a href="http://fandry.blogspot.com/2008_08_01_archive.html"&gt;Liferay&lt;/a&gt; and explore authentication to Web Services and security features associated&lt;br /&gt;to the use of BlazeDS.&lt;/pre&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-3811911824125598015?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/3811911824125598015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=3811911824125598015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/3811911824125598015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/3811911824125598015'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2008/11/how-to-use-blazeds-for-web-service.html' title='How to use BlazeDS for Web Service access'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_V_sYr0AnKIc/SRSRvp36g2I/AAAAAAAABrc/wglh8Mdzcv0/s72-c/turnkey.PNG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-91107475353888880</id><published>2008-10-23T08:55:00.000-07:00</published><updated>2009-01-08T08:16:00.440-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Health 2.0 conference San Francisco health care IT ICW'/><title type='text'>Health 2.0 - 2008 (San Francisco) - Day 2</title><content type='html'>Second day of  the  &lt;a href="http://www.health2con.com/sf08.html"&gt;Health 2.0 2008 conference.&lt;/a&gt;&lt;br /&gt;* the presentation from &lt;a href="http://www.sermo.com/"&gt;Sermo's CEO&lt;/a&gt; was quite impressive, especially in terms of number of US physicians that are part of their network.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0); font-weight: bold;font-size:130%;" &gt;3 Health 2.0 CEOs&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;JonathanBush, CEO&lt;/span&gt; &lt;a href="http://www.athenahealth.com/"&gt;AthenaHealth&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;process medical claims from doctors and put them into charts (EMR)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;40 millions different cases&lt;/li&gt;&lt;li&gt;in business for 10 years&lt;br /&gt;&lt;/li&gt;&lt;li&gt;try to make the doctor office paperless&lt;/li&gt;&lt;li&gt;process paper based documents (40,000 per day)&lt;/li&gt;&lt;li&gt;Statistics: doctors get 11% more revenue when using &lt;a href="http://www.athenahealth.com/"&gt;AthenaHealth&lt;/a&gt;&lt;/li&gt;&lt;li&gt;89 pages of paper come every day for each doctor (mostly by Fax &amp;amp; Teleprinters)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;business model: fee based (by the doctors)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Daniel Palestrant, MS,&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;CEO&lt;/span&gt; &lt;a href="http://www.sermo.com/"&gt;Sermo&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;social network for doctors&lt;/li&gt;&lt;li&gt;company started 3 years ago&lt;/li&gt;&lt;li&gt;90,000 US  physicians 7,000 added each months&lt;/li&gt;&lt;li&gt;20% of the US physicians at end of the year.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;direct communication between physician and drug manufacturers (e.g. Pfizer) and the result is published for the whole Sermo community.&lt;/li&gt;&lt;li&gt;should be cash positive sometimes next year&lt;/li&gt;&lt;li&gt;extension to the international market planned in 2009&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;business model: no charge for the physician (in fact they pay the doctors to be part of the network), no advertising, get revenue from sponsors (e.g. drugs manufacturers)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;work with FDA&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mmm-online.com/Sermo-Bloomberg-partner-on-service-for-healthcare-investors/article/119831/"&gt;Partnership with Bloomberg&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Kerry Hicks, CEO &lt;/span&gt;&lt;a href="http://www.blogger.com/www.healthgrades.com/"&gt;Healthgrades&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;provide rating and information on healthcare services&lt;br /&gt;&lt;/li&gt;&lt;li&gt;5000 hospitals and most of the physicians, nursing homes etc ...&lt;/li&gt;&lt;li&gt;13 millions piece of information coming each month&lt;/li&gt;&lt;li&gt;list 88 conditions&lt;br /&gt;&lt;/li&gt;&lt;li&gt;information on 40,000 prescription drugs&lt;/li&gt;&lt;li&gt;users: 55% women, 45% men&lt;/li&gt;&lt;li&gt;&lt;a href="http://seekingalpha.com/article/15481-health-grades-inc-a-deal-with-google-in-the-works"&gt;partnerhip with Google&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;80% of the traffic comes from patients who have seen the patient in the last 30 days&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;br /&gt;Panel: Health 2.0 around the world&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Video: &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;India: diagnosis over the phone including SMS (300 millions cell phones in india), 720 millions by 2012.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;UK: UK: how to reduce healthcare cost&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Thomas Liedtke, Emerging Health Care&lt;/span&gt;, &lt;a href="http://www.icw-global.com/"&gt;ICW&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;statistics show that 20-30% of the patients get the wrong medication&lt;/li&gt;&lt;li&gt;OptiMed deployed for &lt;a href="http://www.aok.de/bundesweit/"&gt;AOK, Germany&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;compliance control device&lt;/li&gt;&lt;li&gt;use iPhone to scan medication&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Marlene WinField, SVP,&lt;/span&gt; &lt;a href="http://www.connectingforhealth.nhs.uk/"&gt;NHS connecting for health&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;improve universal HealthCare in UK&lt;/li&gt;&lt;li&gt;aggregate services for patients&lt;br /&gt;&lt;/li&gt;&lt;li&gt;15 million patients&lt;/li&gt;&lt;li&gt;enable two ways communications between patients and care givers via a Personal Health Organizer / &lt;a href="http://en.wikipedia.org/wiki/Personal_health_record"&gt;PHR&lt;/a&gt; called &lt;a href="http://www.connectingforhealth.nhs.uk/systemsandservices/healthspace?searchterm=healthspace"&gt;healthspace&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;appointments, calendar, reminders,&lt;/li&gt;&lt;li&gt;over the counter medication&lt;br /&gt;&lt;/li&gt;&lt;li&gt;access to health organizer&lt;/li&gt;&lt;li&gt;audit trail for users (who logged etc ...)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Alex Savic, CEO &lt;/span&gt;&lt;a href="http://www.alensa.com/"&gt;Alensa&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;based in switzerland&lt;/li&gt;&lt;li&gt;customers in Romenia, Serbia&lt;/li&gt;&lt;li&gt;eCmmerce platform for para-pharmacy products (selling drugs online is still illegal in Europe)&lt;/li&gt;&lt;li&gt;health blog network is very useful to help monetize their content (premium posts canbe  paid by mobile phone).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;biggest issues are legal issues in europe.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Paul Meyer, chairman&lt;/span&gt; &lt;a href="http://www.voxiva.com/solutionspage.php?catname=mHealth"&gt;Voxiva&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;company started 7 years ago&lt;/li&gt;&lt;li&gt;provide patients with tips and information on living with a chronic condition&lt;/li&gt;&lt;li&gt;e.g. disease surveillance system (Peru 2002)&lt;/li&gt;&lt;li&gt;e.g. interactive risk assessment on hearth and cardiac conditions via SMS (Mexico 2007)&lt;/li&gt;&lt;li&gt;tools to quickly build applications (e.g. diabetes risk profile population)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Josh Nesbit&lt;/span&gt;, &lt;a href="http://www.frontlinesms.com/"&gt;FrontlineSMS&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;enables users to send and receive text messages with large groups of people through mobile phones. &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Deb Levine,&lt;/span&gt; &lt;a href="http://isis.inc.org/"&gt;ISIS&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;non profit organization located in Oakland, CA&lt;/li&gt;&lt;li&gt;SMSs for prevention and referral&lt;/li&gt;&lt;li&gt;Sexinfo, Realtalk, Data violence prevention etc ...&lt;/li&gt;&lt;li&gt;E.g. SMS to 61827 '&lt;span style="font-style: italic;"&gt;HIVinfo&lt;/span&gt;' or '&lt;span style="font-style: italic;"&gt;Text Meds&lt;/span&gt;'&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Doug Solomon, CTS, &lt;/span&gt;&lt;a href="http://www.ideo.com/"&gt;IDEO&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;design company (device, software, organization)&lt;/li&gt;&lt;li&gt;integrate human, business, technology aspects&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Brooke Partridge, CEO&lt;/span&gt;, &lt;a href="http://www.vitalwaveconsulting.com/"&gt;Vital Wave Consulting&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;provide HealthCare studies for emerging countries&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);font-size:130%;" &gt;Deep Dive:  American Well&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;       Demo of the &lt;a href="http://www.americanwell.com/"&gt;AmericanWell&lt;/a&gt;, an online medical care services product:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;online services for patients and physicians&lt;/li&gt;&lt;li&gt;two way conversation (video conference or voice over IP) between doctor and patient &lt;/li&gt;&lt;li&gt;patient:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;agenda, assessment, provider search, message center, health profile and history.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;integrated with Health Vault&lt;/li&gt;&lt;li&gt;ability to rate the service delivered by the doctor&lt;/li&gt;&lt;li&gt;forward conversation to the patient PCP&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;doctor:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;claim submitted automatically&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;       &lt;a href="http://www.hmsa.com/onlinecare/"&gt;HMSA Online Care&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hawaii -  7,000 members&lt;/li&gt;&lt;li&gt;rural country with a large growing senior population&lt;/li&gt;&lt;li&gt;uninsured young population&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Panel: Tools for Consumers&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Personalized, Analytical, Supporting Decisions, Enabling Transactions&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Kevin Nolan, CEO&lt;/span&gt; &lt;a href="http://www.adam.com/"&gt;ADAM&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;ADAM content using the iphone&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;David Clymer, CEO,&lt;/span&gt; &lt;a href="http://www.blogger.com/www.mymedlab.com/"&gt;MyMedLab&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;purchase test online&lt;/li&gt;&lt;li&gt;go to a local lab&lt;br /&gt;&lt;/li&gt;&lt;li&gt;results are reviewed and put into a PHR&lt;/li&gt;&lt;li&gt;available in 47 US states (except RI, NJ, NY)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Linda Avey, Co-CEO, &lt;/span&gt;&lt;a href="https://www.23andme.com/"&gt;23andMe&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;account can be shared&lt;/li&gt;&lt;li&gt;study paternal/maternal Halogroups&lt;/li&gt;&lt;li&gt;study health risks (clinical reports, research reports)&lt;/li&gt;&lt;li&gt;compare family, friend genes&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Mari Baker, CEO,&lt;/span&gt; &lt;a href="http://www.blogger.com/www.navigenics.com/"&gt;Navigenics&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;goal: introduce personalized medecine in HealthCare&lt;/li&gt;&lt;li&gt;offers access to a genetic counselor&lt;/li&gt;&lt;li&gt;estimated lifetime risks&lt;/li&gt;&lt;li&gt;recommendations to reduce health risks&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Adam Bosworth, CEO,&lt;/span&gt; &lt;a href="http://keas.com/"&gt;KEAS&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.thehealthcareblog.com/the_health_care_blog/2008/08/adam-bosworth-s.html"&gt;demo of &lt;/a&gt;&lt;span style="font-style: italic;"&gt;&lt;a href="http://www.thehealthcareblog.com/the_health_care_blog/2008/08/adam-bosworth-s.html"&gt;My Health Plan&lt;/a&gt;  &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;todo list, overall progress, lab results, meal, exercise action plan&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;import data from google health&lt;/li&gt;&lt;li&gt;tracking vital signs and process over time&lt;br /&gt;&lt;/li&gt;&lt;li&gt;warning about health risks&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Roy Schoenberg, CEO&lt;/span&gt; &lt;a href="http://www.americanwell.com/"&gt;AmericanWell&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;demo online services for patients and physicians&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Stan Nowak, CEO,&lt;/span&gt; &lt;a href="http://www.silverlink.com/"&gt;Silverlink&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Michael Cho, CEO, &lt;/span&gt;&lt;a href="http://www.drx.com/"&gt;Destination Rx&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;50 millions customers&lt;/li&gt;&lt;li&gt;help manage medicine cabinet&lt;/li&gt;&lt;li&gt;provides warnings about drug interactions&lt;/li&gt;&lt;li&gt;offer ways to lower cost (therapeutic alternatives/generics) including dosage&lt;br /&gt;&lt;/li&gt;&lt;li&gt;therapeutic alternatives covers 200 tops drugs in the US&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Erick VonSchweber, CEO,&lt;/span&gt; &lt;a href="http://www.pharmasurveyor.com/"&gt;PharmaSurveyor&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;regimen survey tool&lt;/li&gt;&lt;li&gt;transferred from partners (Google, Destination Rx ...) using CCR&lt;/li&gt;&lt;li&gt;interaction drugs panel&lt;/li&gt;&lt;li&gt;ability to replace one drug by another one if there is an elevated risk&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Alexandra Drane, President,&lt;/span&gt; &lt;a href="http://www.elizacorp.com/"&gt;Eliza&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Marlene Beggelmman, CEO,&lt;/span&gt; &lt;a href="http://www.enhancedmd.com/"&gt;Enhanced Medical Decision&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;demo: &lt;a href="http://doublecheckmd.com/"&gt;doublecheckmd&lt;/a&gt;: Decision support tool for patients&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;use questionnaire&lt;/li&gt;&lt;li&gt;offer medical recommendations/advices&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Stefanie Fenton, Director Market Development,&lt;/span&gt; &lt;a href="http://quickenhealth.intuit.com/"&gt;Intuit Quicken Health Group&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(51, 204, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Getting Past the Privacy Conundrum&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Carol Diamond, &amp;amp; Josh Lemieux &lt;/span&gt;&lt;a href="http://www.markle.org/"&gt;Markle Foundation&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;presentation of &lt;a href="http://www.connectingforhealth.org/"&gt;connectingforhealth.org&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Kepa Zubeldia, EVP, &lt;/span&gt;&lt;a href="http://www.ingenix.com/"&gt;Ingenix&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;James Dempsey, Policy Director,&lt;/span&gt; &lt;/span&gt;&lt;a href="http://www.cdt.org/"&gt;Center for Democracy and Technology&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Phillips Marshall, VP,&lt;/span&gt; &lt;a href="http://www.webmd.com/"&gt;WebMD Health&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Richard Dick, CEO, &lt;/span&gt;&lt;a href="http://www.y-t-c.com/"&gt;You Take Control&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Jennifer Gilburg, &lt;/span&gt;&lt;a href="http://www.verisign.com/"&gt;Verisign&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;demo of &lt;a href="http://www.verisign.com/authentication/consumer-authentication/vip-authentication/index.html"&gt;VIP&lt;/a&gt; : a consumer solution for authentication&lt;/li&gt;&lt;li&gt;one time token ID generated by hardware token&lt;br /&gt;&lt;/li&gt;&lt;li&gt;hosted service&lt;/li&gt;&lt;li&gt;SSO usable across different web applications&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Robert Shelton, CEO, &lt;/span&gt;&lt;a href="https://www.privateaccess.info/"&gt;private Access&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;goal: harmonization of  privacy and access&lt;/li&gt;&lt;li&gt;demo of &lt;a href="https://www.privateaccess.info/private/products_services/privacylayer"&gt;&lt;span style="font-style: italic;"&gt;PrivacyLayer&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Alan Viars, CEO, &lt;/span&gt;&lt;a href="http://www.videntity.com/"&gt;Videntity&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Verification and authentication tools&lt;br /&gt;&lt;/li&gt;&lt;li&gt;REST based API&lt;/li&gt;&lt;li&gt;verification by voice over IP + Pin &amp;amp; voice recognition&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Panel: Genomics online&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; * For the patient, there is a benefit knowing in advance the health risks associated to his/her genetic background. This type of information give some type of empowerment to the patient as well.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Linda Avey, Co-CEO,&lt;/span&gt; &lt;a href="https://www.23andme.com/"&gt;23andMe&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;$399 per genetic analysis study&lt;/li&gt;&lt;li&gt;4-6 weeks for the result&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.23andme.com/research/"&gt;23andWe&lt;/a&gt;: sharing information about surveys (phenotype)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Tera Eerkes, CEO,&lt;/span&gt; &lt;a href="http://www.qtrait.com/"&gt;QTrait&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Genetic testing&lt;br /&gt;&lt;/li&gt;&lt;li&gt;$99 per genetic analysis study&lt;/li&gt;&lt;li&gt;dashboard with risk factors&lt;/li&gt;&lt;li&gt;technical reports that can be shared with the physician&lt;/li&gt;&lt;li&gt;non technical report to share with friends and family&lt;/li&gt;&lt;li&gt;specific tests for mate/couple genetic matching to reduce health risks&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Mari Baker, CEO, &lt;/span&gt;&lt;a href="http://www.blogger.com/www.navigenics.com/"&gt;Navigenics&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;partnership with &lt;a href="http://www.affymetrix.com/"&gt;affymetrix&lt;/a&gt; and Microsoft HealthVault.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.navigenics.com/Scripps"&gt;scripps genomics health initiative&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Ilya Kupershmidt, Co-founder, VP of Product Management ,&lt;/span&gt; &lt;a href="http://www.nextbio.com/"&gt;NextBio&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;1/2 million users (researcher, consumers)&lt;/li&gt;&lt;li&gt;60 million pages of resources&lt;/li&gt;&lt;li&gt;use public experimental data&lt;/li&gt;&lt;li&gt;clinical trials information&lt;br /&gt;&lt;/li&gt;&lt;li&gt;use ontology to summarize the relevant information data&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;  Daniel Reda, Co-Founder, &lt;/span&gt;&lt;a href="http://curetogether.com/"&gt;CureTogether&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;demo of CureTogether&lt;/li&gt;&lt;li&gt;health tracking tools will be added&lt;/li&gt;&lt;li&gt;data to be use for gene discovery&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/twitter.com/"&gt;&lt;span style="font-style: italic;"&gt;twitter &lt;/span&gt;&lt;/a&gt;for your health&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="color: rgb(51, 204, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Demo Panel: Disease Management 2.0&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Stan Nowak, CEO Silverlink,&lt;/span&gt;&lt;a href="http://www.silverlink.com/"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;Silverlink&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;recommendation: try to model and automate the routine healthcare activities&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;communication programs for disease management&lt;/li&gt;&lt;li&gt;a way to drive behavior (to reduce cost and improve performance of chealthcare).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;interactive phone calls with health coach&lt;br /&gt;&lt;/li&gt;&lt;li&gt;educate patients how to save money on drugs&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Suneel Ratan &amp;amp; Ileana Welte, SVP, &lt;/span&gt;&lt;a href="https://www.healthhero.com/"&gt;Health Hero Network&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;recommendation: keep give supports to your customers to improve the relationship with the patient&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;health body applicance / tele-health platform&lt;/li&gt;&lt;li&gt;connect patients and care givers (e.g. institutions)&lt;/li&gt;&lt;li&gt;27,000 customers every day&lt;/li&gt;&lt;li&gt;biggest provider to the veteran administration&lt;br /&gt;&lt;/li&gt;&lt;li&gt;reduce customer care cost by 20%&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Neal Kaufman, CEO,&lt;/span&gt; &lt;a href="http://www.blogger.com/www.dpshealth.com"&gt;DPS Health&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;recommendation: try to mimic face to face visits&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;weight management program application&lt;/li&gt;&lt;li&gt;internet coach send notes to the patient using past performance&lt;/li&gt;&lt;li&gt;integrated with an EMR&lt;/li&gt;&lt;li&gt;lessons, workbook, tracking plan, resources and communication tools&lt;/li&gt;&lt;li&gt;graphs showing performance&lt;/li&gt;&lt;li&gt;send weekly feedback&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;GUI need some refreshing/update (need a modern look and feel) !&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Don Kemper, CEO, &lt;/span&gt;&lt;a href="http://www.blogger.com/www.healthwise.org"&gt;HealthWise&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;recommendation: help each person to help themselves, improve their live and  say no to the caregiver  when needed!&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;guided self disease management&lt;/li&gt;&lt;li&gt;$60 per nurse call&lt;/li&gt;&lt;li&gt;for details, send email to  &lt;span style="font-style: italic;"&gt;moreinfo@healthwise.com&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Neal Kaufman, CEO,&lt;/span&gt; &lt;a href="http://www.blogger.com/www.dpshealth.com"&gt;DPS Health&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-91107475353888880?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/91107475353888880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=91107475353888880' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/91107475353888880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/91107475353888880'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2008/10/health-20-2008-san-francisco-day-2_23.html' title='Health 2.0 - 2008 (San Francisco) - Day 2'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-7583625421326802205</id><published>2008-10-22T10:17:00.000-07:00</published><updated>2009-01-15T14:42:05.491-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Health 2.0 conference San Francisco health care IT ICW'/><title type='text'>Health 2.0 - 2008 (San Francisco) - Day 1</title><content type='html'>This year, the &lt;a href="http://www.health2con.com/sf08.html"&gt;Health 2.0 2008 conference&lt;/a&gt; crowd is definitively larger than &lt;a href="http://www.thehealthcareblog.com/the_health_care_blog/files/health_2_0_attendee_list_by_organization.pdf"&gt;last year&lt;/a&gt;. I was expecting also a larger exhibition as well, but  in fact, the action really seems to take place in the panel discussions and &lt;a href="http://health20.org/wiki/People"&gt;meeting people and peers&lt;/a&gt; rather than on the demo booths. However there were some interesting demos during the panel sessions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);font-size:130%;" &gt;The future of Health 2.0 (Indu Subaiya - Matthew Holt)&lt;br /&gt;&lt;/span&gt;What is the best way to engage people to use Heathcare Apps?&lt;br /&gt;&lt;br /&gt;=&gt; A survey provided some interesting information:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; most frequent channel is conversation&lt;/li&gt;&lt;li&gt;social media is much more credible when coupled with Health expertise (e.g. blogs, videosharing, wikipedia).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;=&gt; Tools are changing dramatically (Personalized, Analysis, Decision support, transactions)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Search Social networks (still the top application), tools, content, Transaction data&lt;/li&gt;&lt;li&gt;Health 2.0 Accelerator initiative (To help launch Health 2.0 related ventures).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Keynote : Here Comes Health - Clay Shirky&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Clay talked abou this boook:&lt;br /&gt;&lt;a href="http://www.amazon.com/Here-Comes-Everybody-Organizing-Organizations/dp/1594201536/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1224699002&amp;amp;sr=1-1"&gt;Here Comes Everybody: The Power of Organizing Without Organizations&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;aggregation is different: a group of patient behave different from single patients&lt;/li&gt;&lt;li&gt;add more value (interaction between participants adds synergy&lt;/li&gt;&lt;li&gt;information: most of the traffic on the internet is between people, not computers&lt;/li&gt;&lt;ul&gt;&lt;li&gt; e.g Yahoo! 178,000 groups in Yahoo! groups&lt;/li&gt;&lt;li&gt;&lt;a href="http://archive.healthmgttech.com/archives/0600managedcare.htm"&gt;patient centric medicine&lt;/a&gt; (me and people/&lt;a href="http://www.patientslikeme.com/"&gt;patients like me&lt;/a&gt;).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Documentary: The Great American Health 2.0 Motorcycle Tour&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;An interesting video created by Health 2.0 &lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;wher David Kibbe visits (on a motorbike) new Health 2.0 companies and models models throughout the US&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Context: 47 millions americans do not have Health coverage&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/www.hellohealth.com/"&gt;Hello Health&lt;/a&gt; : New business model of primary care physicians and their patients&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.minuteclinic.com/en/USA/"&gt;Minute clinic&lt;/a&gt;: data is uploaded to Microsoft Health Vault and Google Health&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.changehealthcare.com/"&gt;Change Healthcare&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.google.com/health"&gt;Google Health&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.healthline.com/"&gt;Healthline&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.medhelp.org/"&gt;MedHelp&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kosmix.com/"&gt;Kosmix&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(51, 204, 0); font-weight: bold;font-size:130%;" &gt;Panel: The role of the Consumers Aggregators&lt;/span&gt; &lt;ul&gt;&lt;li style="color: rgb(0, 153, 0);"&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;Wayne Gattinelle, Philip Marshall, WebM&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;presentation of the &lt;a href="http://myaetnaepn.com/verizon_healthzone.html"&gt;Verizon HealthZone&lt;/a&gt; (branded &lt;a href="http://www.webmd.com/"&gt;WebMD&lt;/a&gt; web site/application)&lt;/li&gt;&lt;li&gt;alert, visit, Conditions, Medications, Allergies, Surgeries, Immunizations, Tests&lt;/li&gt;&lt;li&gt;medication advisor: decision support for cost and benefits&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 153, 0);"&gt;Michael Yang, Yahoo!&lt;/li&gt;&lt;ul&gt;&lt;li&gt;collaboration with water front&lt;br /&gt;&lt;/li&gt;&lt;li&gt;deal with &lt;a href="http://www.healthgrades.com/"&gt;healthgrades&lt;/a&gt;&lt;/li&gt;&lt;li&gt;presented new visual design for the next generation applications&lt;/li&gt;&lt;li&gt;new front door access from Yahoo! Health&lt;/li&gt;&lt;li&gt;a profile page describing the physician will be available&lt;/li&gt;&lt;li&gt; collaboration with water front media&lt;br /&gt;deal with healthgrades&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 153, 0);"&gt;Roni Zeiger, MD, Product Manager, Google Health &amp;amp; Brad Crosslin, PDX (Google partner)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Demo showing integration of Google Health with pharmacies&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Myer 10 Millions patients&lt;/li&gt;&lt;li&gt;Duane Reade (export data into Google Health) &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 153, 0);"&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;Peter Neupert, Health Solution Group, Microsoft&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;partnership with Kaiser (&lt;a href="http://blogs.msdn.com/familyhealthguy/archive/2008/10/23/awkward-turtle.aspx"&gt;glimpse at the demo&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;demonstration of PHR (www.myhealthManager.com) 2.5 millions users currently.&lt;/li&gt;&lt;li&gt;capabilities to export data into Microsoft HealthVault &lt;/li&gt;&lt;li&gt;shows which information is sent to Microsoft (wrapped into a HL7 document) &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 153, 0);"&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;Mark Bertolini, President, Aetna&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;3rd largest insurance in the US&lt;/li&gt;&lt;li&gt;3200 IT personal&lt;br /&gt;&lt;/li&gt;&lt;li&gt;cost of care tool&lt;/li&gt;&lt;li&gt;&lt;a href="http://tech.yahoo.com/news/ap/20081022/ap_on_hi_te/aetna_microsoft_collaboration"&gt;partnership with Microsoft&lt;/a&gt; (Health Vault)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PHR&lt;/li&gt;&lt;ul&gt;&lt;li&gt;7 millions users by the end of 2008&lt;/li&gt;&lt;li&gt;one million of alerts every 3 months&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="color: rgb(51, 204, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Panel:  Search, UGc and the Long Trail, Matthew Holt &amp;amp; Indu Subaiya&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;- Personalization is very important&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Venky Harinarayan, Co founder,&lt;/span&gt; &lt;a href="http://www.kosmix.com/"&gt;Kosmix/&lt;/a&gt;&lt;a href="http://www.righthealth.com/"&gt;Right health&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;demo of &lt;a href="http://www.righthealth.com/"&gt;Right health&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;vertical search engine&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;search results on medical content, community, forums&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;2nd web site after WebMD&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;aggregate services&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 153, 0);"&gt;Well Shell, CEO, &lt;a href="http://www.healthline.com/"&gt;HealthLine Networks&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;content provided from 20 partners&lt;/li&gt;&lt;li&gt;70% of the search are related to symptoms&lt;/li&gt;&lt;li&gt;learning centers automatically generated&lt;/li&gt;&lt;li&gt;drug search including FDA alerts and drugs interaction checker&lt;/li&gt;&lt;li&gt;patient decision support as outcome of the search &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 153, 0);"&gt;Steven Krein, CEO, &lt;a href="http://organizedwisdom.com/Home"&gt;Organized Wisdom&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;use a team of medical personal to search Google and hand craft search results&lt;/li&gt;&lt;li&gt;long tail search: very specific and personal questions (e.g. side effect of hip surgery) that are answered by organized wisdom.&lt;/li&gt;&lt;li&gt;research notes + top resources that are created for aggregated groups of users&lt;/li&gt;&lt;li&gt;20,000 patient cards&lt;/li&gt;&lt;li&gt;Organized Wisdom is going to create profiles for every doctors, dentists and practitioners. &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 153, 0);"&gt;Tom Eng, President, &lt;a href="http://www.healia.com/"&gt;Healia&lt;/a&gt;/&lt;a href="http://www.webpronews.com/blogtalk/2007/06/18/meredith-acquires-health-search-engine-healia"&gt;Meredith Group&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;vertical search engine: provides high quality trusted results (patent pending algorithm)&lt;/li&gt;&lt;li&gt;health communities: locate patients close by and '&lt;span style="font-style: italic;"&gt;ask questions&lt;/span&gt;' feature.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 153, 0);"&gt;Bill Allman, &lt;a href="http://www.healthcentral.com/"&gt;The H&lt;/a&gt;&lt;a href="http://www.healthcentral.com/"&gt;ealthCentral Network&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Ben Heywood, &lt;/span&gt;&lt;a href="http://www.patientslikeme.com/"&gt;PatientsLikeMe&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;300 patients answering questions related to ALS &amp;amp; Lithium&lt;/li&gt;&lt;li&gt;look at prediction models for patients (&lt;a href="http://en.wikipedia.org/wiki/Evidence-based_medicine"&gt;evidence based medecine&lt;/a&gt;).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Daniel Palestrant, Founder and CEO&lt;/span&gt;, &lt;a href="http://www.sermo.com/"&gt;Sermo&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;millions of questions on their site&lt;/li&gt;&lt;li&gt;very interesting study case of allergy form Victoria's secret Bras that was detected by Sermo after studying new group posts.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;John De Souza, CEO, &lt;/span&gt;&lt;a href="http://www.sermo.com/"&gt;MedHel&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Gilles Frydman, Founder &lt;/span&gt;&lt;a href="http://www.blogger.com/www.acor.org/"&gt;ACOR(Association of Cancer Online Resources)&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;provides specific information not found on google (e.g. very rare medical cases)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Demo Panel: Managing Money in Health 2.0&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;* Money starts to play a role in Health 2.0 as transactions start to take more importance.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Christopher Parks, CEO,&lt;/span&gt; &lt;a href="https://www.changehealthcare.com/"&gt;Change HealthCare&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;demo: tool to share, compare and track healthcare expense&lt;/li&gt;&lt;li&gt;business models: licensing by employers&lt;br /&gt;&lt;/li&gt;&lt;li&gt;detailed medical bills&lt;/li&gt;&lt;li&gt;summary by family member, by provider, by service date, by health issue&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;average cost per providers for 5 providers in the same area &lt;= nice!&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Stefanie Fenton,&lt;/span&gt; &lt;a href="http://quickenhealth.intuit.com/"&gt;Quicken Health Group, Intuit&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;demo of Quicken Health to be launch in 2009 for UnitedHealthcare, CIGNA HealthCare, and Medical Mutual of Ohio initially&lt;/li&gt;&lt;li&gt;business model: pay per transaction + license fees&lt;br /&gt;&lt;/li&gt;&lt;li&gt;visited more than 300 people to understand their healthcare finance need (the amount of bills/paper tracks can be very large)&lt;/li&gt;&lt;li&gt;3 years of development&lt;br /&gt;&lt;/li&gt;&lt;li&gt;health plan claims are dowloaded&lt;/li&gt;&lt;li&gt;claims to be paids, deductibles with break down on each items how it is reimbursed  (as tooltips)&lt;/li&gt;&lt;li&gt;payment history with patterns of spending that can be exported for taxe purpose&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Phil Micali, CEO,&lt;/span&gt; &lt;a href="http://www.bwell-inc.com/"&gt;Bwell-inc.com&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;demo of &lt;a href="http://www.bwell-informed.com/"&gt;bwell informed&lt;/a&gt; launched last year (B2B and B2C)&lt;/li&gt;&lt;li&gt;business models: licensing by employers&lt;/li&gt;&lt;li&gt;include saving accounts, health profile, &lt;span style="color: rgb(255, 0, 0);"&gt;compare family plans &lt;= very nice!&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Chini Krishnan, CEO,&lt;/span&gt; &lt;a href="http://www.vimo.com/"&gt;Vimo&lt;/a&gt; &amp;amp; &lt;a href="https://www.getinsured.com/"&gt;GetInsured.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Brandt Cannici, Co-Founder and COO, &lt;/span&gt;&lt;a href="http://www.medicaresaver.com/"&gt;Medicaresaver.com&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;demo of medicaresaver.com&lt;/li&gt;&lt;li&gt;business model: commisions and strategic partneships&lt;br /&gt;&lt;/li&gt;&lt;li&gt;includes &lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;therapeutic  interchange  proposal and generate letter for doctor &lt;= cool!&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;compare restricted and non-restricted plans&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;focus on seniors&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;no advertizing, &lt;a href="http://www.hipaa.org/"&gt;HIPAA&lt;/a&gt; compliant&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;Demo Panel: Clinician Social Networks&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 153, 0);"&gt;Rex Jabovits, &lt;a href="http://www.mypacs.net/"&gt;Mypac.net&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;YouTube&lt;/span&gt; or &lt;em&gt;Flickr for radiology&lt;/em&gt;&lt;/li&gt;&lt;li&gt;more than 18,000 cases containing more than 90,000 images&lt;/li&gt;&lt;li&gt;Sharing of medical images (flash + ajax)&lt;/li&gt;&lt;li&gt;free service funded                in part by the National Institutes of Health.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="color: rgb(0, 153, 0);"&gt;Jason Bhan, Co-founder, &lt;a href="https://www.ozmosis.com/home"&gt;Ozmosis&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;online Medical Knowledge Exchange&lt;/li&gt;&lt;li&gt;accelerates learning and knowledge exchange across medicine&lt;/li&gt;&lt;li&gt;journal club, clinical cases, groups etc ...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Michael Sands, Co-Founder, &lt;/span&gt;MedicalPlexus&lt;/li&gt;&lt;ul&gt;&lt;li&gt;ecosystem/network in which doctors and life science researchers can connect, interact, and share their work&lt;/li&gt;&lt;li&gt;learning from and Sharing Knowledge with other professionals/colleagues using questions and answers&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Lance Hilll, CEO&lt;/span&gt;, &lt;a href="http://www.within3.com/"&gt;Within 3&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;private professional networking site for health and life science practitioners    to find, connect and collaborate (the &lt;span style="font-style: italic;"&gt;linkedin &lt;/span&gt;for medical practitioners)&lt;/li&gt;&lt;li&gt;ability to communicate news and event information&lt;/li&gt;&lt;li&gt;find colleagues with similar interest by location&lt;/li&gt;&lt;li&gt;consultation with specialist on atypical cases, new treatments etc ...&lt;/li&gt;&lt;li&gt;offer ways to build communities&lt;br /&gt;&lt;/li&gt;&lt;li&gt;REST APIs will be available in 2009 to access member data&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Tobin Arthur, CEO,&lt;/span&gt; &lt;a href="https://www.imedexchange.com/"&gt;iMedExchange&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;online community for physicians&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;See also &lt;a href="http://fandry.blogspot.com/2008/10/health-20-2008-san-francisco-day-2_23.html"&gt;Day 2 of the conference&lt;/a&gt;.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-7583625421326802205?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/7583625421326802205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=7583625421326802205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/7583625421326802205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/7583625421326802205'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2008/10/health-20-2008-san-francisco.html' title='Health 2.0 - 2008 (San Francisco) - Day 1'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-2065905856192302060</id><published>2008-09-30T19:29:00.000-07:00</published><updated>2009-01-08T08:17:04.972-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Health Data API PHR java authentication'/><title type='text'>The ABCs of Google Health Data API</title><content type='html'>Recently, I have been involved in a small project to aggregate medications from various &lt;a href="http://en.wikipedia.org/wiki/Personal_health_record"&gt;Personal Health Records&lt;/a&gt; (PHR), including &lt;a href="http://www.google.com/health/"&gt;Google Health&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The documentation for the &lt;a href="http://code.google.com/apis/gdata/javadoc/"&gt;Google Data APIs Client Library&lt;/a&gt; and &lt;a href="http://code.google.com/apis/health/getting_started.html"&gt;the Health Data API&lt;/a&gt;  is quite complete and extensive. But it can be also be quite complex for someone who want to develop quickly a prototype or just test a proof of concept using these APIs.&lt;br /&gt;&lt;br /&gt;Since I was going to develop my project in Java, I first downloaded he most recent &lt;a href="http://code.google.com/p/gdata-java-client/downloads/list"&gt;GData Java Client Library&lt;/a&gt; (version 1.22 with samples - 6.8 MB).&lt;br /&gt;&lt;br /&gt;The sample code can be used out of the box for a simple stand-alone java testing program.&lt;br /&gt;&lt;br /&gt;I did import the sample code and the library in my IDE (&lt;a href="http://www.blogger.com/www.eclipse.org/"&gt;eclipse&lt;/a&gt;) and just changed the credentials (&lt;span style="font-weight: bold;"&gt;sample.credentials.username&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;sample.credentials.password&lt;/span&gt;)  in &lt;span style="font-style: italic;"&gt;gdata/java/build-samples/build.propertie&lt;/span&gt;s using my google health account login and password.&lt;br /&gt;&lt;br /&gt;To run the Google Health sample program,  at the prompt under ./gdata/java just run: &lt;b&gt;ant -f build-samples.xml sample.health.run&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;The next step for me was to reuse the sample code to develop a web application (I am creating small &lt;a href="http://fandry.blogspot.com/2008/08/liferay-portal-my-first-impressions.html"&gt;Liferay&lt;/a&gt; JSP based portlets).&lt;br /&gt;&lt;br /&gt;Google offers &lt;a href="http://code.google.com/apis/health/getting_started.html#Differences"&gt;two platforms&lt;/a&gt; for the developers to test their applications:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://www.google.com/health"&gt;Google Health&lt;/a&gt; (production server, highly secure)&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.google.com/h9"&gt;H9 Sandbox&lt;/a&gt; (fewer restrictions than the production version&lt;/li&gt;&lt;/ul&gt; For my small web project I initially tested my code against H9, as recommended by Google.&lt;br /&gt;The main reason is because the authentication with H9 is more simple than with Google Health production.&lt;br /&gt;&lt;br /&gt;The application I wanted to build is supposed to connect to various PHRs (&lt;a href="http://www.icw-global.com/us/en/solutions/lifesensor.html"&gt;ICW LifeSensor&lt;/a&gt;, &lt;a href="http://www.healthvault.com/"&gt;Microsoft Health Vault&lt;/a&gt; and &lt;a href="http://www.google.com/health/"&gt;Google Health&lt;/a&gt;/&lt;a href="https://www.google.com/h9/p/"&gt;H9&lt;/a&gt;) and retrieve the medication lists. For Google I don't need to enter a login and password in my web application since I am going to use Google &lt;a href="http://code.google.com/apis/gdata/authsub.html"&gt;AuthSub&lt;/a&gt; mechanism:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V_sYr0AnKIc/SO9426cBiaI/AAAAAAAABc0/LF_EKLvJvNs/s1600-h/medications_connect.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_V_sYr0AnKIc/SO9426cBiaI/AAAAAAAABc0/LF_EKLvJvNs/s320/medications_connect.png" alt="" id="BLOGGER_PHOTO_ID_5255552174959724962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By clicking on the Google 'connect' button, I am redirected to the Google AuthSub web site:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;     &lt;span style="color: rgb(51, 204, 0);"&gt;&amp;lt;input id="btn_connect_google" name="Disconnect" type="submit"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;         value="Connect" onClick="connectToGoogle();return false;"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is the Javascript function I use for URL redirection:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;     &lt;span style="color: rgb(51, 204, 0);"&gt;function connectToGoogle() { &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       if (btn_connect_google.value == "Connect") {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;          window.location.href = googleAuthSubURL.value;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       else {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;          btn_connect_google.value = "Connect"; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;I construct the AuthSub URL in advance in my JSP java code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;public String getGoogleAuthSubURL(HttpServletRequest request) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       gh9s = new H9Service("ICW-H9Medications-1.0");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       String nextUrl = "http://localhost:8080/sample/hello.jsp";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       String scope = "https://www.google.com/h9/feeds/";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       boolean secure = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       boolean session = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       String authSubLink = AuthSubUtil.getRequestUrl(nextUrl, scope, secure, session);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       authSubLink += "&amp;amp;permission=1";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       authSubLink = authSubLink.replaceFirst("/accounts/AuthSubRequest", "/h9/authsub");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;      return authSubLink;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;I store the URL in an hidden field:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;   &lt;span style="color: rgb(51, 204, 0);"&gt;&amp;lt;input type=hidden id="googleAuthSubURL" value="&lt;%= getGoogleAuthSubURL(request) %&gt;" &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;You can refer to the &lt;a href="http://code.google.com/apis/gdata/javadoc/"&gt;Google Data API&lt;/a&gt; and &lt;a href="http://code.google.com/apis/health/"&gt;Google Health API&lt;/a&gt;, including &lt;a href="http://code.google.com/apis/accounts/docs/AuthSub.html#AuthSubRequest"&gt;security settings for AuthSub Request&lt;/a&gt; and application identification (for logging purpose).&lt;br /&gt;&lt;br /&gt;I am redirected to the Google AuthSub WebSite where I can choose which H9 account I want to use.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V_sYr0AnKIc/SO-J8_mpczI/AAAAAAAABc8/919vl_8YfoA/s1600-h/google_account.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_V_sYr0AnKIc/SO-J8_mpczI/AAAAAAAABc8/919vl_8YfoA/s320/google_account.png" alt="" id="BLOGGER_PHOTO_ID_5255570971123348274" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V_sYr0AnKIc/SO-KWtKGW5I/AAAAAAAABdE/0bL5wid6puQ/s1600-h/google_account_linking.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_V_sYr0AnKIc/SO-KWtKGW5I/AAAAAAAABdE/0bL5wid6puQ/s320/google_account_linking.png" alt="" id="BLOGGER_PHOTO_ID_5255571412848368530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then I am redirected back to my original application, with a single use token associated to the request. I can then parse the request and extract the token that I exchange for the token session:&lt;br /&gt;&lt;pre&gt;  &lt;span style="color: rgb(255, 102, 0);"&gt;http://localhost:8080/sample/hello.jsp?token=1%2FBtOEh.....lsYenOFQ&amp;amp;permission=1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;  if (gh9s != null)  {        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;      try {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;         // Extract Single Use Token for the session&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;         String queryString = request.getQueryString();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                  if (queryString != null) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;           &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                      String singleUseToken = AuthSubUtil.getTokenFromReply(queryString);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                      if (singleUseToken != null) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                        String sessionToken = AuthSubUtil.exchangeForSessionToken(URLDecoder.decode(singleUseToken, "UTF-8"), null);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                        gh9s.setAuthSubToken(sessionToken);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                        System.out.println("Google SetAuthSubToken");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                          &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                        URL profile_url = new URL(PROFILE_DEFAULT_PATH);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                        System.out.println("Google ProfileURL:"+profile_url);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                        gh_feed = gh9s.getFeed(profile_url, ProfileFeed.class);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;               &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                        createReferences(gh_feed.getEntries());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                      }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;            } catch (AuthenticationException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                throw new RuntimeException(e);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;            } catch (IOException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                throw new RuntimeException(e);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;            } catch (ServiceException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                throw new RuntimeException(e);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For my portlet version (&lt;a href="http://fandry.blogspot.com/2008/08/liferay-portal-my-first-impressions.html"&gt;Liferay&lt;/a&gt;), I just had to replace the definition of the current URL:&lt;br /&gt;&lt;pre&gt;   &lt;span style="color: rgb(51, 204, 0);"&gt;String singleUseToken = AuthSubUtil.getTokenFromReply(getCurrentURL(request).getQuery());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;   private URL getCurrentURL(HttpServletRequest request) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    try {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;       return(new URL(request.getScheme(), request.getServerName(), request.getServerPort(), request.getAttribute("CURRENT_URL").toString())); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    } catch (MalformedURLException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    throw new RuntimeException(e);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;The next step is to obtain medication entries by parsing the Google &lt;a href="http://en.wikipedia.org/wiki/Continuity_of_Care_Record"&gt;CCR&lt;/a&gt; data feed:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;  &lt;span style="color: rgb(51, 204, 0);"&gt;private void createReferences(List&lt;/span&gt;&lt;profileentry&gt;&lt;span style="color: rgb(51, 204, 0);"&gt; entries) { &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     if (entries != null) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        for (ProfileEntry entry : entries) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;           System.out.println("Google CCR:"+entry.getContinuityOfCareRecord().getXmlBlob().getBlob());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                 GoogleCCRWrapper ccrWrapper = getDomRepresentation(entry);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                 if (ccrWrapper.containsMedications()) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                    medication_list.add(ccrWrapper.getMedication());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;                    source_list.add(SRC_GOOGLE_HEALTH);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;         }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;/profileentry&gt;&lt;/pre&gt;&lt;br /&gt;The GoogleCCRWrapper java class parses the &lt;a href="http://code.google.com/apis/health/ccrg_reference.html"&gt;CCRg XML data feed&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    &lt;span style="color: rgb(51, 204, 0);"&gt;public GoogleCCRWrapper(String xml) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        DocumentBuilder builder = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        try {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;            builder = documentBuilderFactory.newDocumentBuilder();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        } catch (ParserConfigurationException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;            throw new RuntimeException("Error creating DocumentBuilder.", e);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        try {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;            document = builder.parse(new ByteArrayInputStream(xml.getBytes()));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        } catch (SAXException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;            throw new RuntimeException("Error parsing XML.", e);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        } catch (IOException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;            throw new RuntimeException("Error parsing XML.", e);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;public boolean containsMedications() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;        return document.getElementsByTagName("Medications").getLength() &gt; 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    public String getMedication() {   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     Element e = getElementFromDocument("Medications");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     e = getElement(e, "Medication");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     e = getElement(e, "Product"); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     e = getElement(e, "ProductName");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     e = getElement(e, "Text"); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;     return getText(e);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Here is the resulting portlet (Google Health and Lifesensor Medications):&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SP-UXeiwFgI/AAAAAAAABfU/5oH4utJRQxs/s1600-h/medications.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SP-UXeiwFgI/AAAAAAAABfU/5oH4utJRQxs/s320/medications.JPG" alt="" id="BLOGGER_PHOTO_ID_5260086020848752130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-2065905856192302060?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/2065905856192302060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=2065905856192302060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/2065905856192302060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/2065905856192302060'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2008/09/abcs-of-google-health-data-api.html' title='The ABCs of Google Health Data API'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_V_sYr0AnKIc/SO9426cBiaI/AAAAAAAABc0/LF_EKLvJvNs/s72-c/medications_connect.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-2223782889006256020</id><published>2008-08-29T20:22:00.000-07:00</published><updated>2008-09-04T09:25:28.981-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='componentization'/><category scheme='http://www.blogger.com/atom/ns#' term='theme'/><category scheme='http://www.blogger.com/atom/ns#' term='liferay'/><category scheme='http://www.blogger.com/atom/ns#' term='portlet'/><category scheme='http://www.blogger.com/atom/ns#' term='portal'/><category scheme='http://www.blogger.com/atom/ns#' term='skin'/><title type='text'>Liferay Portal : My first impressions</title><content type='html'>&lt;br&gt;&lt;br /&gt;My company &lt;a href="http://www.icw-global.com/"&gt;ICW&lt;/a&gt; creates Health Care web applications and solutions.&lt;br /&gt;&lt;br /&gt;We have a need to create reusable components that can be bundled into highly customizable and personalized web applications.  Our stack uses Java Enterprise and Web 2.0 technologies, so we naturally turned to the open source &lt;a href="http://www.liferay.com/"&gt;&lt;span style="font-weight: bold;"&gt;Liferay Portal.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This was my first experience with &lt;a href="http://www.liferay.com/"&gt;Liferay&lt;/a&gt;. By looking at the features, it seems that this portal solution had a lot of things we were looking for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A well recognized open source product (1.5 million downloads, 6000+ registered participants ...)&lt;/li&gt;&lt;li&gt;A business-friendly MIT License&lt;/li&gt;&lt;li&gt;Compatibility with all major servers, databases and operating systems (we are using Tomcat, Oracle, Windows for development and Linux for production).&lt;/li&gt;&lt;li&gt;Compatibility with our stack (J2E) and light container (Spring).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;An easy way to create new skins and branding&lt;/li&gt;&lt;li&gt;An integrated content management system&lt;/li&gt;&lt;li&gt;Highly secure platform (especially important for Health Care applications)&lt;/li&gt;&lt;/ul&gt;Installing Liferay (version 5.1.0) was a little bit longer than expected (&gt;1 GB), but after this, it went pretty smoothly besides minor MySQL configuration issues.  This installation included all the source code of Liferay (I did not have to customize the code initially, but it seems nice to have all the source code available in case ...).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V_sYr0AnKIc/SLjUX1lnTGI/AAAAAAAABbM/FdgEd7T3buo/s1600-h/phr_portal_assembly.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_V_sYr0AnKIc/SLjUX1lnTGI/AAAAAAAABbM/FdgEd7T3buo/s320/phr_portal_assembly.JPG" alt="" id="BLOGGER_PHOTO_ID_5240171672432495714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I did create a specific project for our need  - a portal version of our Personal Health Record (PHR) - call phr-portal-assembly (see screen shot on the left):&lt;br /&gt;&lt;br /&gt;I liked the fact that the runtime portion of the portal is contained inside the project: bundles/tomcat/ (although this takes a lot of space if you have several projects).&lt;br /&gt;&lt;br /&gt;To be up and running, you just have to start MySQL and Tomcat and open a browser at &lt;a href="http://localhost:8080/web/guest/home"&gt;http://localhost:8080/web/guest/home&lt;/a&gt; (I am using Firefox).&lt;br /&gt;&lt;br /&gt;I find it easy to create new plugins (portlets and &lt;a href="http://www.javalobby.org/articles/liferay/"&gt;themes&lt;/a&gt;).  You just have to open a prompt under the liferay-plugins-sdk-5.1.0/portlets or liferay-plugins-sdk-5.1.0/themes directory and use the command:&lt;br /&gt;&lt;br /&gt;create new_portlet_name new_portlet_title and&lt;br /&gt;create new_theme_name new_theme_title&lt;new_portlet_name&gt;&lt;new_portlet_title&gt;&lt;new_theme_name&gt;&lt;new_theme_title&gt;&lt;new_portlet_name&gt;&lt;new_portlet_title&gt;&lt;new_theme_name&gt;&lt;new_theme_title&gt;&lt;br /&gt;&lt;br /&gt;I was then able to start to modify my portlet skeletons (by modifying the default view.JSP file under docroot) and redeploy them (without having to restart tomcat!) by using the &lt;span style="font-weight: bold;"&gt;ant deploy  &lt;/span&gt;command. Easy and efficient!&lt;br /&gt;&lt;br /&gt;For the themes, I was a little bit different:  The style sheet changes/differences is specified under the docroot/_diffs and the new theme is built by adding the differences to the default classic look and feel.&lt;br /&gt;&lt;br /&gt;Becoming familiar with the portal application itself was not too complicated. Especially with version 5.1.0 which can give admin rights to any type of users, so I was able to customize my portal page without having to log a as an administrator.&lt;br /&gt;&lt;br /&gt;&lt;/new_theme_title&gt;&lt;/new_theme_name&gt;&lt;/new_portlet_title&gt;&lt;/new_portlet_name&gt;&lt;/new_theme_title&gt;&lt;/new_theme_name&gt;&lt;/new_portlet_title&gt;&lt;/new_portlet_name&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V_sYr0AnKIc/SLjgBJM_9fI/AAAAAAAABbk/1pbTVtPagek/s1600-h/look_and_feel_button.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_V_sYr0AnKIc/SLjgBJM_9fI/AAAAAAAABbk/1pbTVtPagek/s320/look_and_feel_button.JPG" alt="" id="BLOGGER_PHOTO_ID_5240184476700505586" border="0" /&gt;&lt;/a&gt;To make the border/chrome disappear, I just had to click on the look-and-feel icon.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;new_portlet_name&gt;&lt;new_portlet_title&gt;&lt;new_theme_name&gt;&lt;new_theme_title&gt;&lt;new_portlet_name&gt;&lt;new_portlet_title&gt;&lt;new_theme_name&gt;&lt;new_theme_title&gt;&lt;/new_theme_title&gt;&lt;/new_theme_name&gt;&lt;/new_portlet_title&gt;&lt;/new_portlet_name&gt;&lt;/new_theme_title&gt;&lt;/new_theme_name&gt;&lt;/new_portlet_title&gt;&lt;/new_portlet_name&gt;&lt;br /&gt;&lt;new_portlet_name&gt;&lt;new_portlet_title&gt;&lt;new_theme_name&gt;&lt;new_theme_title&gt;&lt;new_portlet_name&gt;&lt;/new_portlet_name&gt;&lt;/new_theme_title&gt;&lt;/new_theme_name&gt;&lt;/new_portlet_title&gt;&lt;/new_portlet_name&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V_sYr0AnKIc/SLjgOU00FxI/AAAAAAAABbs/YFK4LqJ1r1E/s1600-h/show_borders.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_V_sYr0AnKIc/SLjgOU00FxI/AAAAAAAABbs/YFK4LqJ1r1E/s320/show_borders.JPG" alt="" id="BLOGGER_PHOTO_ID_5240184703158589202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This opens a new window where I had to uncheck '&lt;span style="font-weight: bold;"&gt;Show Borders' &lt;/span&gt;&lt;span&gt;and refresh the browser.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V_sYr0AnKIc/SLjgX0ThrkI/AAAAAAAABb0/ZoSvOVn6jpc/s1600-h/toggle_edit_controls.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_V_sYr0AnKIc/SLjgX0ThrkI/AAAAAAAABb0/ZoSvOVn6jpc/s320/toggle_edit_controls.JPG" alt="" id="BLOGGER_PHOTO_ID_5240184866227727938" border="0" /&gt;&lt;/a&gt;After this, I had to uncheck the 'Toggle Edit Controls' check box.&lt;br /&gt;&lt;br /&gt;The resulting portal had the same look and feel as our initial PHR, but was now highly customizable.I did some also some quick tests with different layouts and themes that was provided by one of my colleague with fast and good and results. We also did some tests encapsulating an existing Flex based application and some widgets with great success.&lt;br /&gt;&lt;br /&gt;Overall my first impression of Liferay portal is a very positive one.&lt;br /&gt;&lt;br /&gt;I am now looking forward to tackle the re-factoring of our existing products with this technology (we are using &lt;a href="https://www.liferay.com/web/guest/community/forums/-/message_boards/message/498468"&gt;JSF&lt;/a&gt;, Ajax and Flex as  front-end technology)!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;new_portlet_name&gt;&lt;new_portlet_title&gt;&lt;new_theme_name&gt;&lt;new_theme_title&gt;&lt;new_portlet_name&gt;&lt;new_portlet_title&gt;&lt;new_theme_name&gt;&lt;new_theme_title&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/new_theme_title&gt;&lt;/new_theme_name&gt;&lt;/new_portlet_title&gt;&lt;/new_portlet_name&gt;&lt;/new_theme_title&gt;&lt;/new_theme_name&gt;&lt;/new_portlet_title&gt;&lt;/new_portlet_name&gt;&lt;pre class="code-java"&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-2223782889006256020?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/2223782889006256020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=2223782889006256020' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/2223782889006256020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/2223782889006256020'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2008/08/liferay-portal-my-first-impressions.html' title='Liferay Portal : My first impressions'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_V_sYr0AnKIc/SLjUX1lnTGI/AAAAAAAABbM/FdgEd7T3buo/s72-c/phr_portal_assembly.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-3520516440595836776</id><published>2008-07-06T18:05:00.000-07:00</published><updated>2008-07-08T00:36:54.678-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openEHealth'/><category scheme='http://www.blogger.com/atom/ns#' term='ICW'/><category scheme='http://www.blogger.com/atom/ns#' term='eHealth Applications'/><category scheme='http://www.blogger.com/atom/ns#' term='Diabetes'/><title type='text'>IEEE HealthCom 2008</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:Verdana,Arial,Helvetica,sans-serif;font-size:85%;"  &gt;               The Tenth IEEE International Conference on e-Health Networking,     Applications &amp;amp; Services                (&lt;a href="http://www.healthcom2008.org/index.html"&gt;IEEE HealthCom 2008&lt;/a&gt;) takes place from 7th July to 9th July 2008 in     Singapore (&lt;a href="http://www.biomed-singapore.com/bms/sg/en_uk/index/newsroom/speeches/2003/launch_of_biopolis.html"&gt;BioPolis&lt;/a&gt; - Matrix building 4th floor).&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:Verdana,Arial,Helvetica,sans-serif;font-size:85%;"  &gt;130 attendees. 50% from oversea.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:Verdana,Arial,Helvetica,sans-serif;font-size:85%;"  &gt;papers: 40% acceptance rate&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Below are my notes of  the presentations/sessions I have attended:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Keynote: A Road to Disease Prevention through Telemedecine and e-Health - Prof. Luis Kun Ph.D. FAIMBE, FIEEE.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Very interesting presentation on various topics: &lt;span style="font-weight: bold;"&gt;Interoperability&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;Globalization&lt;/span&gt;!&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Interoperability &lt;/span&gt;is needed not only in &lt;span style="font-weight: bold;"&gt;Technology&lt;/span&gt;, but also in &lt;span style="font-weight: bold;"&gt;Process &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;People.&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Dimension of time in CPR:&lt;/span&gt; Very often patient Dental, Mental health, Behavioral, Immunization, Prenatal, Labor and Delivery, Family postmortem related information is often not available at the hospital which increase medical errors.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;We need single PHRs throughout the lives of the individuals (e.g. Dod and VA administration do not have access to non-military information sources).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Longitudinal Health Record (LHR) and intelligent Data WareHouses will be able to acquire and store multi-modality medical Data, fuse it into clinical records, along with laboratory, anatomical pathology, pharmacy, imaging and bio-molecular data, importing data from existing EHR.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;However, privacy, confidentiality and ethical issues remain.&lt;/li&gt;&lt;li&gt;Prof Kun also mentionned the &lt;a href="http://www.healthbanking.org/"&gt;HRBA&lt;/a&gt; (Health Record Banking Alliance), a  way to promote community repositories      of electronic health records - in competition with Goolge Health &amp;amp; MS Health Vault private initiatives?&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Mobile interoperability&lt;/span&gt;: we need better wireless devices integration through standards.&lt;/li&gt;&lt;li&gt;More use of micro-systems body worn, implanted mobile systems and location based systems.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Chronobiology &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;chronotherapeutics&lt;/span&gt;: taking in consideration the time when you take drugs can be very important.&lt;/li&gt;&lt;li&gt;PHRs should be compatible across countries (to take into account he health history of immigrants for example).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Globalization&lt;/span&gt; We are more interdependent that we think, thus increasing health risks, war, pollution:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Populations size and migration increase.&lt;/li&gt;&lt;li&gt;Food is imported/exported from more and more countries.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Global dust cloud across continents can help transmit diseases.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Session: Geriatrics and Eldercare : &lt;/span&gt;a lot of various sensors and methods are used automatically to track behavior.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;    IC Tag Monitoring System Identifies an Unusual Pattern of Toilet use by Patient with Vascular Dementia - (Japan - Hospital Chubu region)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Tags are put on the shoulder of the patients with patches.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Technology is used to complement training of personnel provides more precise real time monitoring, especially at night-time.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Allow statistical studies when merged with demographic and other health related data.&lt;/li&gt;&lt;li&gt;Discover specific unusual behavior patterns - e.g. a patient can walk up to 10 km per day, or up to 150 times per day to the toilet (non incontinent patient).&lt;/li&gt;&lt;li&gt;Future work will involve combination of tracking staff activities with patient activities.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Automatic detection of Activities of Daily  living from detecting and classifying electrical events on the residential power line - Norbet Noury -  (university of Grenoble)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Goal tracking: tracking systems, used to trigger alarms.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Watteco : a detector placed in the main electrical supply board to detect instantaneous signatures.&lt;/li&gt;&lt;li&gt;Issues: non automatic learning system: setup has to be done manually.&lt;/li&gt;&lt;li&gt;Use different weight for various appliances.&lt;/li&gt;&lt;li&gt;Issues: need to take into account seasonal variations&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Activities tracking:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;feeding, grooming, toilets, day vs night activities&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Smart Wireless Continence Management System for Elderly with Dementia.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;use sensor / wetness detection / placed in diapers (cost $50 per sensor -reusable).&lt;/li&gt;&lt;li&gt;plan to use RFID as well&lt;br /&gt;&lt;/li&gt;&lt;li&gt;care giver alerted through LED, Buzzer, 3D /GUI and SMS alerts.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; Eating Activity Primitives Detection - a step towards ADL recognition.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;basic safety, daily living and social interactions&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;person location&lt;/li&gt;&lt;li&gt;use of potential harmful objects&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Combination of sensors: motion detecting PIS, pressure, accelerometer, RFID.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Approaches and Principles of Fall Detection for Elderly and Patient.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;4 types of falls: from sleeping, from sitting, from walking or standing, from standing on ladder, stool.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.chhsys.com/"&gt;Devices&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Wearable devices (postures, motion) - e.g. walking sticks&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Camera based (inactivity detection, body shapec change, 3D head motion)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Ambiance devices (presence, posture)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Session: Knowledge Management and Ontology in HealthCare.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;    &lt;/span&gt;Design and implementation of a Knowledge-Based Applications in Specimen Collection&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Tests collection by phlebotomy stations - tracking done via ATOM system&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Barcode Lab Information System (LIS) based demographic and session ID labels are added to testing tubes/containers.&lt;/li&gt;&lt;li&gt;COW (Computer on Wheels) systems at point of care (used by doctor and phlebotomist).&lt;/li&gt;&lt;li&gt;Reduce the number of human errors dramatically.&lt;/li&gt;&lt;li&gt;Issue: multiple distributed systems can still lead to errors (e.g. if there has been delays in the production of the lab results).&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;An Ontology-Based Framework for Managing Semantic Interoperability Issues in e-Health (Singapore).&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Need to decouple domain knowledge from underlying intelligent agent infrastructure.&lt;/li&gt;&lt;li&gt;Use ontology (explicit domain knowledge) used by multi-agent systems.&lt;/li&gt;&lt;li&gt;However, domain knowledge can be very complex.&lt;/li&gt;&lt;li&gt;Semantic interoperability is an issue in Health Care - same object for various terms e.g. Anemometer or Sphygmomanometer.&lt;/li&gt;&lt;li&gt;Context must be brought in.&lt;/li&gt;&lt;li&gt;Use of dialogs/predictions&lt;/li&gt;&lt;li&gt;Issues: multi-language interpretation&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Management of Mobile Social ntework services for families with Developmental Delay Children (Taiwan)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Assessment of User Satisfaction with an Internet-Based Integrated Patient Education System for Diabetes Management.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;different types of formats are used (e.g. text, powerpoint etc ...)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;A Framework for Personalized HealthCare Service Recommendation (South Korea)&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;see Healthcare provider recommendation system (Bachus et al.) - US patent&lt;/li&gt;&lt;li&gt;However there is a need for personalization&lt;/li&gt;&lt;li&gt;HSRF provides personalized results.&lt;/li&gt;&lt;li&gt;Integrated with MUSS - Mobile U-Health Service Ststem (see Lee et al)&lt;/li&gt;&lt;li&gt;Health Status is a combination of Bio Signals &amp;amp; Symptoms&lt;/li&gt;&lt;li&gt;Health Vector is generated from patient information.&lt;/li&gt;&lt;li&gt;Heuristic calculates the distanced between users vectors and vectors of services&lt;/li&gt;&lt;li&gt;Use satisfaction / user feedback to refine the recommendations.&lt;/li&gt;&lt;li&gt;Technology use is JSP, AXIS, MYSQL&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Session: Security and Privacy in HealthCare&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;  A Web-Based Wireless Mobile System design of Security and Privacy Framework for ubiquituous HealthCare (u-HealthCare) - San Jose, CA&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;SSL, data encryption, Windows based solution&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Secure WBAN Usng Rule-Based IDS with Biometrics and MAC Authentication - India&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Use Wireless Sensor Networks (sink +sensor) for medical monitoring.&lt;/li&gt;&lt;li&gt;Take into account constraints in Sensor Network Security&lt;/li&gt;&lt;li&gt;Use strong public key Cryptography technology&lt;/li&gt;&lt;li&gt;Cost factor is the limitation&lt;/li&gt;&lt;li&gt;Denial of service are the type of attacks that are prevented&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Privacy-preserving EHR linkage using pseudonyms identifiers.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Need to allow patient to keep certain linkages private (e.g. abortion, drug addiction clinics)&lt;/li&gt;&lt;li&gt;Need to link only records belonging to the same patient&lt;/li&gt;&lt;li&gt;Need to override privacy rules in emergencies?&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Session: Discovery&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://elifesensor.com/healthcom2008/ICW_IEEE_HEALTHCOM08_FINAL.pdf"&gt;Highly&lt;span style="font-style: italic;"&gt;&lt;/span&gt; Interactive and User Friendly Web Application for People with Diabetes&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;based on open platform (&lt;a href="http://www.blogger.com/www.openehealth.org"&gt;openEHealth.org&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Training Program for e-Health in Tokai University (Japan)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ride Comfort Analysis Based on Tilting Train Simulator for e-Health Train (Korea)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Development of the Support System to Help Team Care for Home Care&lt;/li&gt;&lt;li&gt;Security and Privacy fro WiMoHS (Wireless Mobile Healthcare System)&lt;/li&gt;&lt;li&gt;A Case Report on a e-Learning for Health Initiative in the Philippines&lt;/li&gt;&lt;li&gt;Comparison and Optimization of Methods fro Intra-Disc Vascular Architecture Extraction&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Keynote: e-Health from the hands of Patients - Prof Yu-Chuang (Institute Biomedical Informatics, National Yang-Ming University Tapei).&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;H2H Exchange: Medical Information Exchange Center. Attempts to interconnect EHRs were not very sucessful. The main reason is that the providers were reluctant.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Could ATM machines be a model for Hospital-centric exchange? The problem is that hospitals are afraid to loose patients/customers (in the case of ATM machines, bank accounts are not transfered, whereas EHR transfer would be similar to full bank account transfer).&lt;/li&gt;&lt;li&gt;Patients should be the one who initiate the transferts: H2P2H exchange and the content of Health Record belongs to the patient.&lt;/li&gt;&lt;li&gt;Standard format?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Health Smart Card started in 2004 was a success however.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;23M Health Smart cards (non RSA card)&lt;/li&gt;&lt;li&gt;100K Health professionals would would have RSA cards&lt;/li&gt;&lt;li&gt;issues:&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;too small for EHR (8KB)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;patients do not have a reader for their card&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;TMT: Taiwan Electronic Medical Record Templates (2007-2011)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;70 templates, 24K data elements, 3 years.&lt;/li&gt;&lt;li&gt;A couple of days are necessary to map templates to hospital documents&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Patient centric, initiated and own exchange (PIX).&lt;/li&gt;&lt;li&gt;XML based, signed , but not encrypted&lt;/li&gt;&lt;li&gt;Masking function available for the user to keep privacy&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Patients will be able to use viewers at home to see their records (open source)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Data can be stored on USB disks  or to Health Data Bank&lt;/li&gt;&lt;li&gt;11 largest hospitals (27K beds) -&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2000 pilot patients&lt;/li&gt;&lt;li&gt;Would expand to 7M (30% of the population) in 5 years.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;TET (Travelers Electronic Health Summary)&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;template-based approach&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Endorsed by APEC, IMIA, EFMI, AMIA, &lt;a href="http://www.blogger.com/www.apami.org"&gt;APAMI&lt;/a&gt;&lt;/li&gt;&lt;li&gt;some degree if international interoperability&lt;/li&gt;&lt;li&gt;88 data elements. Similar to CCR.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Session: e-Health&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Assistive Care Loop with Electronic Maternity Record -D.B. Hoang - &lt;a href="http://it.uts.edu.au/research/"&gt;Univ. Sydney&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;provide alert, notifications, advices (SMS, email)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;A Framework for Assessing ICT Preparedness for e-Health Implementation&lt;/li&gt;&lt;li&gt;Information and Communications Technology Needs Assessment of Philippine Rural Health.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;few people own laptops, but a lot of people have cell phones.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;An Approach for E-Health System Assessing ICT Preparedness for e-Health Implementations.&lt;/li&gt;&lt;li&gt;An Empirical Analysis of Reduction of Medical Expenditures by the e-Health System: Further Results.&lt;/li&gt;&lt;li&gt;Challenging Interoperability and Bandwidth Issues in National e-Health Strategies by a Bottom-up Approach: Establishing a Performant IT Infrastructure Network in a Middle East . State Vienna University of Technology.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Session: Communication Technology in Mobile HealthCare&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;   &lt;/span&gt;&lt;span&gt;Power and Delay Aware Mobile Application Data Flow Adaptation: the Mobihealth System Case study - Kataryna Wac - University Geneva.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;patient tele-monitoring services (cardiac sensor: HR, SpO2, pleth, 3 led ECG, alarm (128 Hz)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;use 2.5/3G WLAN and bluetooth and&lt;/span&gt;&lt;span&gt;TMSI box (NL)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;started in 2001 with Vodafone (Mobihealth) -  &lt;/span&gt;&lt;span&gt;worked with mobihealth, vodafone and Myotel&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;in 205-06 (project HealthService24)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;in 2004-08 : Freeband-awareness  - location, time, standing status of the patient.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;in 2008 - MobiHealth BV  - Commercial application&lt;/li&gt;&lt;li&gt;&lt;span&gt;in 2009 - Myotel project&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;study the optimization of the battery consumption (li-ion polymer 1490 mAh), match delay requirement to emergency/non emergency case.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Mobile device: Qtek 9090, Windows Mobile 203 (battery drain!)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;WWLAN (802.11b) &amp;amp; WWAN-GPRS (class 10: 4+1/3+2 slots)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Appplication flow: 5-14 Bytes, 128 Hz, aggregation 1 sec of Data., compression (ZIP) 38-85%, TCI/IP end to end path. continuous 1.2, 1.5, 5.5 or .7.7 kbps or burst 5.5 or 7.7 kbps&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;A study on Intra-Body Communication for Personal HeathCare Monitoring System - Waseda University, Japan&lt;/li&gt;&lt;ul&gt;&lt;li&gt;use human body (skin and muscle) as signal transmission medium&lt;/li&gt;&lt;li&gt;use ECG (future plan to use other types of sensors)&lt;/li&gt;&lt;li&gt;use central hub&lt;br /&gt;&lt;/li&gt;&lt;li&gt;use 3-USB receiver Unit (USB2.0/1-1 12mbps&lt;/li&gt;&lt;li&gt;transmiter: Agilent E443B, receiver: tektronix WCAA230&lt;/li&gt;&lt;li&gt;75 MHZ is found to be the optimal frequency for intra-Body human skin communication (electrostatic coupling model).&lt;/li&gt;&lt;li&gt;weather and sweating have small effects on the results.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;A Platform for Personalized Mobile u-Health Application Design and Development - Korea&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;MUSS  Mobile U-Health Service System (Application Platform) + Workbench&lt;/li&gt;&lt;li&gt;Application model i sbased on 5 phases (sensing, Questionaire, Data processing, Disease Management User feedback).&lt;/li&gt;&lt;li&gt;MUSS: 3 layers&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Component : combine web services&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Process : BPM engine&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Application: Application Designer + scenario player are store in application portal&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Application designer generates Application scenario in XML format for stand alone or web application.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Process consist of activities&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;the platform is written in Java&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the client is written in C++ and C#&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Heath Care specialist can create questionaires via the Questionaire composer.&lt;/li&gt;&lt;li&gt;Example: Stress Application&lt;/li&gt;&lt;ul&gt;&lt;li&gt;sensing: Bluetooth PPG sensor&lt;/li&gt;&lt;li&gt;questionaire: stress response inventory&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Future work: application designer will use conditional and more complex workflow.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-3520516440595836776?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/3520516440595836776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=3520516440595836776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/3520516440595836776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/3520516440595836776'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2008/07/ieee-healthcom-2008.html' title='IEEE HealthCom 2008'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-743578218566083321.post-9210379353581949054</id><published>2008-06-02T08:36:00.000-07:00</published><updated>2009-01-08T08:18:11.276-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google IO 2008 cloud Vic Gundotra Marissa Mayer'/><title type='text'>Google IO 2008</title><content type='html'>&lt;pre id="line322"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Keynote: Client, Connectivity, and the Cloud - Vic Gundotra, Vice President, Engineering&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Historically access to computing and deployment of applications have not been easy&lt;/li&gt;&lt;ul&gt;&lt;li&gt;in the 50s &amp;amp; 60s Mainframe were powerful but not very accessible, deployment was easy (terminal were dumb)&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;in the 70s &amp;amp; 80s PCs were not powerful, but accessible, deployment were difficult (complex deployment on all clients)&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;since the 90s Internet made access to power and deployment easier, but there is sill some progress to be made&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Google wants to move the internet forward by&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;making clouds more accessible (providing more power to web applications)&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;making clients (browsers) more powerful&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;keeping (internet) connectivity pervasive&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Technologies offered by Google to achieve these 3 goals*&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;a href="http://code.google.com/more/#products-featured-gears"&gt;Google Gear&lt;/a&gt;&lt;a href="http://code.google.com/more/#products-featured-gears"&gt;s&lt;/a&gt;: an open source browser extension that lets you create web applications that run offline.It lets you store and serve application resources locally, store data locally in a fully-searchable relational database, and run asynchronous JavaScript to improve application responsiveness  - to be compared with &lt;a href="http://www.adobe.com/products/air"&gt;Adobe AI&lt;/a&gt;&lt;a href="http://www.adobe.com/products/air"&gt;R&lt;/a&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;a href="http://code.google.com/more/#products-featured-android"&gt;Androi&lt;/a&gt;&lt;a href="http://code.google.com/more/#products-featured-android"&gt;d&lt;/a&gt;: a software stack for mobile devices including an operating system, middleware and key applications.&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/more/#products-featured-appengine"&gt;Google App Engine&lt;/a&gt;(Google Cloud) - New MEMCACHE &amp;amp; Image APIs available - (see also &lt;a href="ttp://blogoscoped.com/archive/2008-05-28-n22.html"&gt;pricing&lt;/a&gt;)&lt;span style="font-family:monospace;"&gt; - &lt;/span&gt;to be compared with &lt;a href="http://aws.amazon.com/ec2"&gt;Amazon Elastic Compute Cloud&lt;/a&gt; (Amazon EC2)&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;a href="http://code.google.com/more/#products-featured-ajaxsearch"&gt;Google AJAX Search API&lt;/a&gt; &lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;a href="http://code.google.com/more/#products-featured-chart"&gt;Google Chart API&lt;/a&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;a href="http://code.google.com/more/#products-dataapis-gdata"&gt;Google Data APIs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/more/#products-featured-gadgets"&gt;Google Gadgets API&lt;/a&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;a href="http://code.google.com/more/#products-featured-maps"&gt;Google Maps API&lt;/a&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;a href="http://code.google.com/more/#products-featured-opensocial"&gt;OpenSocial&lt;/a&gt;  OpenSocial defines a common API for social applications across multiple websites.&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;With standard JavaScript and HTML, developers can create apps that access a social network's friends and update feeds.&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;Identity: &lt;a href="http://openid.net/"&gt;OpenID&lt;/a&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;Authentication + Authorization: &lt;a href="http://oauth.net/"&gt;OAuth&lt;/a&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;Applications: &lt;a href="http://sites.google.com/a/opensocial.org/opensocial/"&gt;OpenSocial&lt;/a&gt; - see reference implementation:Apache &lt;a href="http://incubator.apache.org/shindig/"&gt;shindig&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;    &lt;a href="http://code.google.com/more/#products-featured-webtoolkit"&gt;Google Web Toolkit&lt;/a&gt; *Version 1.5 available with support to Java 5* - The Google Web Toolkit (GWT) is an open source Java software development framework that helps you produce user-friendly AJAX applications.&lt;span style="font-family:monospace;"&gt; &lt;/span&gt;With GWT, you can use your favorite Java development tools to build AJAX applications without having to tackle the steep learning curve of JavaScript/CSS browser quirks. GWT has bee used to develop &lt;span style="font-weight: bold;"&gt;Google Health&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/more/#products-featured-youtube"&gt;YouTube Data API&lt;/a&gt; - Integrate YouTube videos into your website or application.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;See &lt;a href="http://perspectives.mvdirona.com/2008/05/29/RoughNotesFromSelectedSessionsAtGoogleIODay1.aspx"&gt;other blo&lt;/a&gt;&lt;a href="http://perspectives.mvdirona.com/2008/05/29/RoughNotesFromSelectedSessionsAtGoogleIODay1.aspx"&gt;g&lt;/a&gt; on this topic&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre id="line322"&gt;&lt;span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Keynote: Imagination, Immediacy and Innovation... plus a little glimpse under the hood at Google&lt;br /&gt;      Marissa Mayer, Vice President of Search and User Experience&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Georgia,serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Google focus on most popular Web Applications on the Web:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;EMail&lt;/li&gt;&lt;li&gt;Social Networks&lt;/li&gt;&lt;li&gt;Blogs&lt;/li&gt;&lt;li&gt;News&lt;/li&gt;&lt;li&gt;Search&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;    &lt;span style="font-style: italic;"&gt;"The simplest design is probably the best"&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;e.g. in Google Search, everytime a search query is done, it hits between 700-1000 Google servers. This involves load balancers, mixers, several search engines (image, blogs, books, news, videos, maps ...). The whole process takes 0.16 seconds. However the GUI still hides the complexity of the process and remains very simple. E.g. Use an unified logging/authentication/authorization system (eg. &lt;a href="http://oauth.net/"&gt;OAut&lt;/a&gt;&lt;a href="http://oauth.net/"&gt;h&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;On User Usability&lt;/li&gt;&lt;ul&gt;&lt;li&gt;a lot of studies are done regularly with a lot of statistics gathered on very small changes on Google Applications. e.g. small changes such as the space between lines e.g. testing various background colors&lt;/li&gt;&lt;li&gt;performance remains one of the most important criteria for users&lt;/li&gt;&lt;li&gt;user want instant feedback (e.g. uploaded content should be available right away)&lt;/li&gt;&lt;li&gt;novice users become very quickly experts users (e.g. simple google search page to iGoogle portal).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It is therefore important to not spend too much effort to coach novice users and/or provide too much guidance (this could slow expert users)&lt;/li&gt;&lt;li&gt;experts users are those who will being more revenue&lt;/li&gt;&lt;li&gt;usability studies should target expert users&lt;/li&gt;&lt;li&gt;Google uses a mix of direct user feedbacks (such as emails), existing applications user studies (instrumentation + metrics) and testing new designs changes with controlled panels of&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Use an Happiness Matrix for your products to measure user satisfaction&lt;/li&gt;&lt;li&gt;Use Design more as a Science than an Art&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Try to think 10 years ahead&lt;/span&gt;- Goal: Aim at quantum leap (a good example is the iPhone)&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Build on real flexible technologies&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Be Scrappy. Revel in constraints&lt;/span&gt;. Google works in small groups and create quickly prototypes for testing and try to address very difficult problems that seem impossible to solve.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Imagination is a muscle&lt;/span&gt; : Do not hesitate to brain storm about crazy projects with your team even if you do not intend to make a product of it. Try to come up with solutions and mockups (at Google 50% of the product features come from 20% time given to Googlers to work on personal project). &lt;/li&gt;&lt;li&gt;On Google Health: We will never be able to have all the medical record information online, but Google hope to make a difference in this domain too.&lt;/li&gt;&lt;li&gt;On Future Directions for Google Applications and Services&lt;/li&gt;&lt;ul&gt;&lt;li&gt;All: Personalization&lt;/li&gt;&lt;li&gt;Search Engines: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;search on Phones&lt;/li&gt;&lt;li&gt;search on Graphs&lt;/li&gt;&lt;li&gt;Location based search (GPS will be soon integrated by default in most cars and vehicles)&lt;/li&gt;&lt;li&gt;Take into account previous search to improve future searches.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;pre id="line322"&gt;See &lt;a href="http://perspectives.mvdirona.com/CommentView,guid,2f69bbdc-a3be-4138-a770-360ede5fd9f6.aspx"&gt;other blog&lt;/a&gt; on this topic&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743578218566083321-9210379353581949054?l=fandry.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fandry.blogspot.com/feeds/9210379353581949054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=743578218566083321&amp;postID=9210379353581949054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/9210379353581949054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/743578218566083321/posts/default/9210379353581949054'/><link rel='alternate' type='text/html' href='http://fandry.blogspot.com/2008/06/google-io-2008.html' title='Google IO 2008'/><author><name>fandry</name><uri>http://www.blogger.com/profile/01990790629557446302</uri><email>fandry@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18246996973025590965'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>