tag:blogger.com,1999:blog-30447281520010001822024-02-08T07:18:15.809+05:30harshadura-gsoc"Write Codes, Save Lives!" with #OpenMRSharshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.comBlogger30125tag:blogger.com,1999:blog-3044728152001000182.post-3934877199521075432013-09-20T20:26:00.000+05:302013-09-20T20:40:17.978+05:30OpenMRS SoC - Final week update<br />
Hello Everyone,<br />
<br />
It's the final week of GSoC 2013. And this week I was focused to scrub the code base, transfer repo's to OpenMRS github umbrella and improve documentation stuff for my
project.<br />
<br />
Here's the user documentation (<a href="https://wiki.openmrs.org/display/projects/Patient+Narratives+Module+-+User+Guide" target="_blank">User Guide</a>) I have written for the patient narratives module.<br />
<br />
Also I did a lil presentation about my project at this week's OpenMRS Developer Forum - Interns Final Presentation: <a href="http://notes.openmrs.org/Developers-Forum-2013-09-19">http://notes.openmrs.org/Developers-Forum-2013-09-19</a><br />
<br />
You can find more resources I used for that right here:
<br />
<ul>
<li><a href="https://docs.google.com/file/d/0B6VZalYLynLrdlppV2wyUmVZeUU/edit?usp=sharing" rel="nofollow" target="_blank">Presentation Slides</a></li>
<li><a href="http://youtube.com/watch?v=AlIhLVnNB10" rel="nofollow" target="_blank">Video Demo</a></li>
<li><a href="https://wiki.openmrs.org/display/projects/Patient+Narratives+Module+-+User+Guide" target="_blank">User Guide</a></li>
</ul>
Code Repository: <a href="https://github.com/openmrs/openmrs-module-patientnarratives" rel="nofollow" target="_blank">https://github.com/openmrs/<wbr></wbr>openmrs-module-<wbr></wbr>patientnarratives</a><br />
Report Issues/Tickets: <a href="https://tickets.openmrs.org/browse/PNM" rel="nofollow" target="_blank">https://tickets.openmrs.org/<wbr></wbr>browse/PNM</a><br />
<br />
I would like to thank the OpenMRS community, especially my mentor <span name="Saptarshi Purkayastha">Saptarshi Purkayastha,</span> Daniel Kayiwa, Mark Goodrich, for the great help given at designing and developing the project.<br />
<div class="yj6qo ajU">
<div class="ajR" data-tooltip="Show trimmed content" id=":14w" role="button" tabindex="0">
<img class="ajT" src="https://mail.google.com/mail/u/0/images/cleardot.gif" /></div>
</div>
<br />
And I must say it was an awesome learning experience, I gathered through this year's Google summer of Code. I had to learn
various new technologies, namely: SpringAOP, DWR, WebRTC, Xuggler, HTML
Form entry module, Xforms Module and lots of functions in OpenMRS
framework (played with Concept dictionary, Observations, ComplexObs,
Encounters, etc) <br />
<br />
One more point I wanna mention is, GSoC will be over from today, but its not the end of the development work for this module or contributing OpenMRS. I will be continuing my work and contribute OpenMRS even more next. Best is yet to come! :-)<br />
<br />
Thank you very much Lord.Budhdha for always
blessing me to get done this work properly! නමෝ බුද්ධාය.<br />
<br />
~~~ GSoC 2013 is over ~~~<br />
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-64776617156039372412013-09-13T21:29:00.001+05:302013-09-13T21:30:54.047+05:30OpenMRS SoC - 12th week update<br />
Hello Everyone,<br />
<br />
Its the final week just before the firm pencils down date which will be starting from next Monday! I am really glad that I have been able to complete most of the essential end to end functionality of my project by today. <br />
<br />
This week I was focusing on improving user experience (UX) and UI design.. So now the UI looks much simpler to follow and very responsive.<br />
<br />
You can check out the latest DEMO (its a nice BETA release!) from below URL.<br />
I have hosted it for you guys to check it out :-) <br />
<br />
URL: <a href="http://54.235.163.128:8080/openmrs">http://54.235.163.128:8080/openmrs</a><br />
Username: admin, password: Admin123<br />
<br />
Starting from next week I will be focusing on improve documentation stuff for my project, and I will be presenting about my project at next Week's OpenMRS Developer Forum too!<br />
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-48306794917256346542013-09-07T00:43:00.000+05:302013-09-07T00:43:28.835+05:30OpenMRS SoC - 11th week update<br />
Hello Everyone,<br />
<br />
It was a big week for the Patient Narratives Module project. So many new improvments and feature developments happened in this week.<br />
<br />
After lot of struggle Finally, I have been able to parse the complex obs to a byte stream and view it as a video playback under care provider console. I have used
Video JS to show the video in a inbuilt flash player which is really
cool to have controls like in youtube.<br />
Then I have added Multi-file upload feature to the care seeker interface. Along with its care provider console interface to view and download those files. Similarly I have used openmrs complex obs to save the user uploaded files.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.diigo.com/item/p/prebeqbzbqrrsqdsbzbbdceacd/973e0f2334d42893064fa3e8bef9e2f8" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="617" src="https://www.diigo.com/item/p/prebeqbzbqrrsqdsbzbbdceacd/973e0f2334d42893064fa3e8bef9e2f8" width="640" /></a></div>
<br />
<br />
<br />
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-70082496943522141742013-08-31T01:47:00.005+05:302013-08-31T02:41:18.980+05:30OpenMRS SoC - 10th week update<br />
<br />
Hello Everyone,<br />
<br />
This week, I have added a new feature to update status of the selected narrative. So the reviewers will able to easily change the statuses of the narrative they are working on.<br />
<br />
And discussion panel (comment system) for care provider's to discuss things about the patient's sickness for patient narratives retrieved by the system.<br />
<br />
Meanwhile, I have been working to display the saved patient narrative video
(complex observation) back in the care provider console for the care
providers review. Unfortunately this feature isn't completed yet. There
are some weird issues like Broken pipe which i will need to resolve soon.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.diigo.com/item/p/prebeqbzbqqssoeebzbbcqpccd/f62d3931d297dacb5ba5d1571cfecd13" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="152" src="https://www.diigo.com/item/p/prebeqbzbqqssoeebzbbcqpccd/f62d3931d297dacb5ba5d1571cfecd13" width="320" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.diigo.com/item/p/prebeqbzbqqsseqrqzbbcqpbrp/1e5cf4cd172381267a67d43dd921c30b" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="275" src="https://www.diigo.com/item/p/prebeqbzbqqsseqrqzbbcqpbrp/1e5cf4cd172381267a67d43dd921c30b" width="320" /></a></div>
<br />
<br />
<br />
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-66173328720647377882013-08-23T21:39:00.002+05:302013-08-23T21:39:35.852+05:30OpenMRS SoC - 9th week update<br />
<br />
Hello everyone,<br />
<br />
Its almost the end of a ninth week of GSoC 2013. yeap! more than 2 months has been passed already. In this week i have worked for the <a href="https://wiki.openmrs.org/display/projects/Patient+Narratives+Upload">Patient Narratives</a> video stream capturing feature. It wasn't that much easy task. The WebRTC mediastream API isn't that much of mature tool yet. (Its actually an ongoing project by Mozilla and Chrome team) But this the most suitable option to use in my project -- since its a web based, Open source tool.<br />
<br />
Basically <a href="http://www.webrtc.org/">WebRTC</a> API will allow developers to create apps (which will capture web-cam video/audio recording, Streaming and things like that) simply using the power of HTML5 and JavaScript. The main advantage of using WebRTC technology is, the user will not have trouble to install Video capture softwares/drivers since it uses the Web as the platform. So everything will be take cared by the web browser. Currently latest versions of Chrome and Firefox browsers support the WebRTC technology.<br />
<br />
Here's a quick demo about how WebRTC works : <a href="http://harshadura.github.io/record-rtc-together/">http://harshadura.github.io/record-rtc-together/</a> <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJcurxIO2DQOiJf7QItwXTK_Zh6S-eC9djvOKxH9yYmk2zR24GtOTY0H3H-77zbh9qP1syABYiwrKvTiZzc4Yc-6dz998KDMhijOQgD86j8xMs2OdzDcoUHAm8vAFj0i3kdvI-FMkdRkX5/s1600/webrtc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJcurxIO2DQOiJf7QItwXTK_Zh6S-eC9djvOKxH9yYmk2zR24GtOTY0H3H-77zbh9qP1syABYiwrKvTiZzc4Yc-6dz998KDMhijOQgD86j8xMs2OdzDcoUHAm8vAFj0i3kdvI-FMkdRkX5/s400/webrtc.png" width="380" /></a></div>
<br />
<br />
Well, the media-stream API is real cool to play with but still it lacks an essential feature specially for my project. Thats media-stream api still doesn't have the capability to return the recorded media as a single file (which contains both audio and video together). What it currently does is generate audio and video as separate blobs (files). Apparently this issue open the door for a real big mess to merge the two files later time.<br />
<br />
So I was searching for a solution to get rid of this issue. And I found there's a popular library called <a href="http://www.ffmpeg.org/">FFMPEG</a> which will allow to merge two video+audio files together. Then i tried to find a Java wrapper for it. And finally I found the best tool for the work called <a href="http://www.xuggle.com/xuggler">Xuggle</a> which will internally process FFMPEG stuff and behave as a Java API.<br />
<br />
So I used this Xuggle API to successfully merge the two files i generate with the WebRTC. The merging will happens on server side. after passing the video and audio. (Still there's no obvious way to handle it on client side)<br />
<br />
So now everything works as intended! :-)<br />
<br />
<br />
<br />
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-46658521845255956402013-08-16T19:58:00.000+05:302013-08-16T19:58:42.225+05:30OpenMRS SoC - 8th week update<div>
<div>
<br />
Hello Everyone, </div>
<br />
I have completed the allow logged
in care-provider user to review uploaded information, register valid
patient by creating a new
patient and automatically transfer the appropriate encounter to the
newly created
patient functionality.</div>
<div>
<br />
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://s3.amazonaws.com/awesome_screenshot/2714173?AWSAccessKeyId=0R7FMW7AXRVCYMAPTPR2&Expires=1376664046&Signature=hfAyLRJ8RPh18U4GANLA8sMqJbI%3D" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="http://s3.amazonaws.com/awesome_screenshot/2714173?AWSAccessKeyId=0R7FMW7AXRVCYMAPTPR2&Expires=1376664046&Signature=hfAyLRJ8RPh18U4GANLA8sMqJbI%3D" width="640" /></a></div>
<div>
<br /></div>
<div>
Screenshots:<br />
<br />
<a href="http://awesomescreenshot.com/02d1m69d55" target="_blank">http://awesomescreenshot.com/<wbr></wbr>02d1m69d55</a><br />
<a href="http://awesomescreenshot.com/0731m69p4d" target="_blank">http://awesomescreenshot.com/<wbr></wbr>0731m69p4d</a><br />
<a href="http://awesomescreenshot.com/0eb1m69uea" target="_blank">http://awesomescreenshot.com/<wbr></wbr>0eb1m69uea</a><br />
<a href="http://awesomescreenshot.com/0801m69z57" target="_blank">http://awesomescreenshot.com/<wbr></wbr>0801m69z57</a></div>
<br />
Currently I am working on the WebRTC implementation to capture the video/audio media stream from the care seekers.<br />
<div>
<br /></div>
Thank you,<br />
Harsha<br />
<br />
harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-66223848262026270762013-08-09T19:14:00.001+05:302013-08-09T19:28:51.485+05:30OpenMRS SoC - 7th week update<br />
Hi All,<br />
<br />
I had my university mid semester exams this week, So there's nothing much progress this week, I am sure will get back to you with a good update in next week!<br />
<br />
-Harshaharshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-49612745421036889402013-07-26T21:19:00.000+05:302013-07-26T21:19:56.157+05:30OpenMRS SoC - 6th week update<br />
Hi All,<br />
<br />
I'm really glad to announce that, I have got completed the main end
to end functionality as my mentor expected from me, before the mid term which gonna
happen next week. <br />
<br />
Features completed:<br />
<ul>
<li>HTML/X form entry submissions.</li>
<li>Anonymous submissions.</li>
<li>Care Provider Console (For Care providers: to review the received patient narratives--encounters)</li>
<li>Module
settings panel: (For admins: to switch X/HTML form as they wish and
config the default patient used by the encounters and encounter type.)</li>
<li>Captcha validation before form submissions.</li>
<li>
Initial WebRTC integration.</li>
</ul>
<div>
I have updated the current version of the Module at my EC2 server so you can check the progress of my work: <br />
<br />
URL: <a href="http://54.235.163.128:8080/openmrs" target="_blank">http://54.235.163.128:8080/<wbr></wbr>openmrs</a><br />
user name: admin<br />
password: Admin123<br />
<br />
</div>
And I have documented a brief user guide at wiki: <a href="https://wiki.openmrs.org/x/IAIzAw" target="_blank">https://wiki.openmrs.org/x/<wbr></wbr>IAIzAw</a><br />
<br />
And... Here are some screenshots :-)<br />
<br />
<br />
<div style="text-align: center;">
<a href="https://www.diigo.com/item/p/prebeqbzbqdorecarzbasspdeo/9e341c4c950c49bfcd578fb84827a689"><img class="confluence-embedded-image confluence-external-resource" data-image-src="https://www.diigo.com/item/p/prebeqbzbqdorecarzbasspdeo/9e341c4c950c49bfcd578fb84827a689" height="262" src="https://www.diigo.com/item/p/prebeqbzbqdorecarzbasspdeo/9e341c4c950c49bfcd578fb84827a689" width="400" /></a> </div>
<br />
<br />
<br />
<div style="text-align: center;">
<a href="https://www.diigo.com/item/p/prebeqbzbqdodddadzbasseabd/34a7befd67ed1f2a201c10ac95207990"><img class="confluence-embedded-image confluence-external-resource" data-image-src="https://www.diigo.com/item/p/prebeqbzbqdodddadzbasseabd/34a7befd67ed1f2a201c10ac95207990" height="270" src="https://www.diigo.com/item/p/prebeqbzbqdodddadzbasseabd/34a7befd67ed1f2a201c10ac95207990" width="400" /></a> </div>
<br />
<br />
<br />
<div style="text-align: center;">
<a href="https://www.diigo.com/item/p/prebeqbzbqdoddccozbasseaao/81dd504062a8ba08e3f70989c727bd72"><img class="confluence-embedded-image confluence-external-resource" data-image-src="https://www.diigo.com/item/p/prebeqbzbqdoddccozbasseaao/81dd504062a8ba08e3f70989c727bd72" height="176" src="https://www.diigo.com/item/p/prebeqbzbqdoddccozbasseaao/81dd504062a8ba08e3f70989c727bd72" width="400" /></a> </div>
<br />
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-73798070540015396192013-07-19T11:33:00.001+05:302013-07-19T11:34:43.884+05:30OpenMRS SoC - 5th week update<br />
<br />
Hi All,<br />
<br />
The module work is going really well. I have finished
embedding of the both Xforms and HTML forms into the module and now both
allows to fill forms, gets saved properly and creates new encounters.
Care seeker panel also have the basic functionality. In overall module
works pretty well with Authenticated (logged in) users.<br />
<br />
Currently I am focusing on the Anonymous submission stuff; Things
seems like lil bit complicated than I expected since the other modules
(X and HTML form entry modules) depends on some parameters which
collects while authentication process. So currently I am trying to
by-pass them using the Spring AOP advicer class (as daniel suggested) or
if not using a deamon thread (as wyclif suggested)<br />
<br />
I have hosted the current version of the Module at my EC2 server so you can check the progress of work: <br />
<br />
URL: <a href="http://54.235.163.128:8080/openmrs" target="_blank">http://54.235.163.128:8080/<wbr></wbr>openmrs</a><br />
user name: admin<br />
password: Admin123<br />
<br />
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-43027842403224763652013-07-12T19:59:00.003+05:302013-07-12T20:01:12.788+05:30OpenMRS SoC - 4th week update<br />
Hi All,<br />
<br />
Its the 4th week of GSoC, well just passed a big month of period after the GSoC coding start date! This week was a great week, So many improvements and development happened.<br />
<br />
1. Created a Xform (customized for the patient narratives' collection) Of course I have created required concepts to map the observations used at Form.<br />
<br />
I wanna Thank bunch for Daniel Kayiwa for the great help and guidance given for me from the very beginning of Xform integration till the end of Xforms creation process.<br />
<br />
Final look after the Xform integration<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.diigo.com/item/p/prebeqbzbqbrdqdcpzbarrodee/4fa71d04f6fc85927032646dbe6f43d7" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="227" src="https://www.diigo.com/item/p/prebeqbzbqbrdqdcpzbarrodee/4fa71d04f6fc85927032646dbe6f43d7" width="400" /></a></div>
<br />
<br />
2. The care provider console improvements.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzr0NLVx3ZID-Qyio2aQNe1H5tIEKGdTTCYOkTgApy-a-DX_TL6stptFHA2kWXw_1OOLpaLOGqfHaJTAMQphyphenhyphen8oAzzKDl-xWygkT2jtHEPjI-EbZs4oFIVOKOF6TMjjb1gchVK01GLbCwW/s1600/2432927.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxgeK7jv3CATBvljc6Bhg1WQ4dnV4mIxXMNzSYYtQyYUUKaiNchCmhqNfRMeQx0whka0EtDyofYmAEhZ9hURCMbHse9u0ytiP1lBU1eYhAuaQ4aTon-02ZUNfkTpuCJQPCea7rY6dI4g4L/s1600/2497796.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxgeK7jv3CATBvljc6Bhg1WQ4dnV4mIxXMNzSYYtQyYUUKaiNchCmhqNfRMeQx0whka0EtDyofYmAEhZ9hURCMbHse9u0ytiP1lBU1eYhAuaQ4aTon-02ZUNfkTpuCJQPCea7rY6dI4g4L/s400/2497796.png" width="400" /></a></div>
<br />
<br />
<br />
3. HTML form entry integration -- I wanna thank Mark Goodrich for the valuable guidance given for me to get done things related to HTML forms integration in my custom module UI.<br />
<br />
After getting things done, I have created a small guide including my learning’s related to this case: <a href="https://wiki.openmrs.org/display/docs/How+to+Embed+HTML+Form+%28generated+by+HTML+Form+Entry+module%29+in+a+custom+module">How to Embed HTML Form (generated by HTML Form Entry module) in a custom module</a><br />
<br />
<br />
Look after the HTML form integration.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.diigo.com/item/p/prebeqbzbqbqccscczbarqsarr/45612e4f45b68a53727ed844df6fbee3" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="177" src="https://www.diigo.com/item/p/prebeqbzbqbqccscczbarqsarr/45612e4f45b68a53727ed844df6fbee3" width="400" /></a></div>
<br />
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-33870467965309411292013-07-05T20:41:00.001+05:302013-07-06T12:31:10.245+05:30OpenMRS SoC - 3rd week updateHi All,<br />
<br />
Its the end of the third week of gsoc and it was a busy week for me.<br />
So much research and development happened this week. Since i haven't work with Concept dictionary , Encounters and Observations before, I had to read lot about them. Actually now I understand why OpenMRS is a very unique software amoung all other healthcare related software products, Its because of the wonderful *Concept-Dictionary* it made of and the extensible framework it has. <br />
<br />
Currently I am working on to build a basic Care provider console which will show up all the encounters filtered by a particular encounter type.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.diigo.com/item/p/prebeqbzbqbbasbcozbardeebe/583acc5b011e56f614d01fc088ad9109" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="281" src="https://www.diigo.com/item/p/prebeqbzbqbbasbcozbardeebe/583acc5b011e56f614d01fc088ad9109" width="640" /></a></div>
<br />
If all goes well it should look like this :-)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.gliffy.com/pubdoc/4487237/L.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="342" src="http://www.gliffy.com/pubdoc/4487237/L.png" width="640" /></a></div>
<br />
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-20548548265219415362013-07-01T18:16:00.000+05:302013-07-01T18:16:09.626+05:30Understanding OpenMRS "Concepts"<h2 id="ConceptDictionaryBasics-Introduction">
Introduction</h2>
At the heart of every OpenMRS implementation is a concept dictionary
that defines the medical concepts (questions and answers) used as the
building blocks for forms, orders, clinical summaries, reports and
almost every aspect of the data. Most OpenMRS implementations have an
open concept dictionary - one that is considered incomplete and evolves
over time. Therefore, as clinicians document conditions, the OpenMRS
concept dictionary must be expandable to accommodate meaningful clinical
data.<br />
What follows is an introduction to the Concept Dictionary, OpenMRS's
unique foundation, and how it provides flexibility for the
implementation.<br />
<h2 id="ConceptDictionaryBasics-Definitions">
Definitions</h2>
<h3 id="ConceptDictionaryBasics-ConceptDictionary">
Concept Dictionary</h3>
The concept dictionary represents a fundamental building block of
OpenMRS. Similar to a dictionary defining the function, meaning, and
relationships of the words, the concept dictionary defines the name,
code, and appropriate attributes for any observations or data collected
(including medical tests, drugs, results, symptoms and conditions). To
even further simplify the concept dictionary, one could compare it to an
infinitely large Excel spreadsheet, where patients are represented as
rows and concepts are represented by columns.<br />
<h3 id="ConceptDictionaryBasics-Concept">
Concept</h3>
The concept is the basic element of flexibility in OpenMRS. Concepts
are the individual data points collected from a population of patients.
Concepts include both questions and answers.<br />
For example, blood type data is collected for a patient. The
question is "What is the blood type for the patient?", with a set of
discrete answers of "A, B, AB or O". To implement this in OpenMRS with
concepts, the question is a concept ("<strong>blood type</strong>") and each response ("<strong>A</strong>", "<strong>B</strong>", "<strong>AB</strong>" and "<strong>O</strong>") is also a concept. For this one question, a total of 5 concepts are required.<br />
What about a question where the answer is not a discrete answer? If
the question is "What is the name of your first pet?", the answer would
be expressed in a text box. It would not be possible to provide a
complete list of every possible name for your pet. In this example,
there would be one concept -- "<strong>name of first pet</strong>".<br />
The bottom line is, if you need a medical word within your electronic
records system, it needs to be defined within the concept dictionary.
More detail about all the possible concepts <strong><em>in a later section</em></strong>.<br />
<h3 id="ConceptDictionaryBasics-Encounter">
Encounter</h3>
A single, specific interaction between the patient and a provider. An
encounter can be any interaction and includes doctor visits, laboratory
tests, food distribution, home visits, counselor appointments, etc.
Encounters are typically represented as a form (consisting of hundreds
of observations), but could also be a touch-screen patient registration
or a single lab test for CD4. For example, a patient visits a health
center or hospital. For each electronic form completed for that
patient, a new encounter is created. Each will have a unique
encounter_id and encounter_type. Forms could be completed by different
departments (ie. drug pickup, visit with an HIV clinician, Diabetes
visit, food package received), and will have an associated
encounter_type (ie. ART Drug Regimen Pickup, Adult intake, food
assistance, lab test, etc). Each encounter has an encounter type,
date/time, location and provider.<br />
<h3 id="ConceptDictionaryBasics-Observations">
Observations</h3>
Anything actively measured or observed during an encounter. As an
example, patients' weights, heights, blood pressures, and BMIs are
observations, as well as qualitative facts including the number of years
a patient smoked, the activities in which the patient experiences
shortness of breath, and finding on an X-ray. Although typically an
observable question, demographics are an exception, and are recorded as
separate concepts. Each observation has a unique obs_id. <br />
These are possible scenarios for encounters and observations:<br />
<ul>
<li>One visit with one encounter without observations – Touch screen patient registration in Haiti</li>
<li>One visit with one encounter with one observation – Touch screen patient registration in Rwinkwavu, Rwanda with weight recorded</li>
<li>One visit with one encounter and many observations – HIV followup form</li>
<li>One visit with multiple encounters and many observations – HIV
followup form along with ART drug regimen pickup. This would show 2
encounters, where each encounter would have a different encounter id and
encounter type.</li>
</ul>
<h3 id="ConceptDictionaryBasics-Demographics">
Demographics</h3>
Demographics are any descriptive characteristic of a person. This
includes: name, address, date of birth, age, and any other social
construct involvement.<br />
<br />
<div id="ConceptDictionaryBasics-Fully-SpecifiedName">
<span style="font-weight: normal;">Ref: <a href="https://wiki.openmrs.org/display/docs/Concept+Dictionary+Basics">https://wiki.openmrs.org/display/docs/Concept+Dictionary+Basics</a></span></div>
harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-70827726386614871612013-06-28T19:28:00.004+05:302013-06-28T19:28:36.280+05:30OpenMRS SoC - 2nd week updateHi Everyone,<br />
<br />
Its second week already and feels like the time is flying to reach mid term! My mentor Saptarshi advised me to develop a simple End to End working system as the time to mid term so I could improve upon after that to final.<br />
<br />
This week I have successfully embedded an Xform into my module. And the intend of this embedding is to enable care providers to customize Xform any time to fit their needs and edit question fields, And I have a plan to create an Android App based on ODK Clinic so the care seeker's will able to fill patient narratives with their Mobile devices too! Xforms are a great Form type to cater all of these requirements. <br />
<br />
Currently the User interface looks like below, I have studied about Google recaptcha api and added it to this new UI and server side coding. (actually it wasn't that much hard as i thought) And ready to start work on the Care provider console next week.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3tyGgxB070RgQCr5k2OM2n5A62WaTYzrO2iIABMfC3ZiYdwGYRjMuSPAnF8LA9_X2IRKsD0r9wry5sVi7pbnjTdQ_s9DHMmIxCxgJvxa3YXfGfDLZy0vB1IrWu58GIUHKQfQfbloqgfzs/s1350/2432927.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="342" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3tyGgxB070RgQCr5k2OM2n5A62WaTYzrO2iIABMfC3ZiYdwGYRjMuSPAnF8LA9_X2IRKsD0r9wry5sVi7pbnjTdQ_s9DHMmIxCxgJvxa3YXfGfDLZy0vB1IrWu58GIUHKQfQfbloqgfzs/s640/2432927.png" width="640" /></a></div>
<br />
<br />
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-24629568424087332812013-06-23T09:58:00.000+05:302013-06-23T10:06:56.177+05:30"Story of the Floss" -- About a great phrase commonly use in open source software development.<br />
<div class="separator" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;">
<br /></div>
Yesterday at the discussion with my mentor Saptarshi, he mentioned a really nice phrase called "Story of the Floss" I studied more about it. Its a really great phrase and can learn lots of thing from it.<br />
<br />
Simply it means: Keep it simple, Build an End to End solution,
Most importantly take action(code) without thinking/talking too much and adding more
and more fancy ideas into the problem.<br />
<br />
Here's the related story. (Reference: <a href="https://wiki.openmrs.org/display/RES/The+Story+of+the+Floss">https://wiki.openmrs.org/display/RES/The+Story+of+the+Floss</a>)<br />
<br />
<br />
<div style="text-align: center;">
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYrk8YrC5oY47370X_CmamHuDlX9oWolNO9SlsKd6_EY1Cvmw3P6fDWwX5zYGuW6EzNARA29EvEed47c63kxOJ_7Vzi7aRfAGygGJFw9oXKM6kUGkqzJGTdBam3Vh2TzQKQOsaSCvIahSO/s1600/floss.png" height="188" width="200" /></div>
<h4>
<span style="font-size: small;"><span style="line-height: 1.25em;"><b>Clem and another group are faced with the same challenge: build a bridge across a canyon.</b></span></span></h4>
<span style="font-size: small;"><span style="line-height: 1.25em;">
The other group — like most of us would — gathers engineers, draws up
specifications, and begins planning on how the bridge should be
constructed properly. Meanwhile, Clem pulls a box of dental floss out
of his pocket, unwinds it, and throws it across the canyon. Almost
immediately, he's got something across the canyon. It's only floss, but
it's there — end to end.
<br class="atl-forced-newline" />
<br class="atl-forced-newline" />
The other group is arguing about whether the bridge should be a beam,
suspension, truss, or arch bridge. Clem starts layering paper mâché
onto the floss.
<br class="atl-forced-newline" />
<br class="atl-forced-newline" />
The other group has finally decided on a suspension bridge and begins
preparing the materials according to specifications. Clem has people
walking across his paper mâché bridge.
<br class="atl-forced-newline" />
<br class="atl-forced-newline" />
The other group realizes that they would probably be better off with a
truss bridge, begins discussions on the new specifications, and then
realizes that they are too far over budget and the project is shut
down. Clem has people driving across his bridge.
<br class="atl-forced-newline" />
<br class="atl-forced-newline" />
The other group finally creates their version of the bridge, only to
realize it doesn't reach over to the other side where they initially
intended it to!</span></span><br />
<span style="font-size: small;"><span style="line-height: 1.25em;"></span></span><br />
<h4 id="TheStoryoftheFloss-TheLesson">
The Lesson</h4>
Whenever possible, start with the floss. See the solution through
end-to-end, since this is often the best way to understand the problem
and often informs the next pass at the solution. In the end, it is rare
that we fully understand the problem until the third iteration of the
solution.<br />
Be agile, open to corrections, and iterate on your solutions. But, most importantly, take action.<br />
<b> </b><br />
<h4>
<b>My Thoughts</b></h4>
<span style="font-size: small;"><span style="line-height: 1.25em;">In my words the lesson of this story is dont try to be so smart and keep expanding the idea of your project. Just start simply from sctratch and add lil by lil, But the goal should be to develop an end to end solution (that means a product which is something useful and usable in a practical scenario.) After getting accomplish the basic goals of the project you can proceed into your other fancy ideas. Note that those fancy ideas could take a longer time to develop (or might get failed) but if you have followed the floss way, you still have a basic product which is really a usable one!</span></span><br />
<br />
<span style="font-size: small;"><span style="line-height: 1.25em;">Actually
I think this phrase isn't only related to the open source software
development, This is a truly awesome phrase which we can adopt in our life in general!</span></span><br />
<span style="font-size: small;"><span style="line-height: 1.25em;"><br /></span></span>
<span style="font-size: small;"><span style="line-height: 1.25em;"><br /></span></span>harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-6123526742426530502013-06-19T13:40:00.000+05:302013-06-19T13:45:51.120+05:30OpenMRS SoC - 1st week update<br />
Hello Everone!<br />
<br />
GSoC coding period has just started (June 18th) and I am really excited about it, I am going to speed up my coding for the project in the coming few days! As an open source freak I really like to keep my repo clean and nice! So I have integreted my github repo with Travis CI, Cool heh > So anytime i push code to repo. travis willl build and tell if the build is okay or failing.. xD cool huh. Notice the Green label in my repo snap below. :-)<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdUit0DXKlMJ_4BMZ9DBBm6JvldJonOEjmLAWBSVEFoN64iajgBE8HXMXmX_U8N_Bo3rJpgZToOn_99ozHJnQ2wOan-KUWItgEc24TCE6fHSEKoAbY61lVXXd5bhWk-_UFPL4nyG3z_yXB/s1600/333.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdUit0DXKlMJ_4BMZ9DBBm6JvldJonOEjmLAWBSVEFoN64iajgBE8HXMXmX_U8N_Bo3rJpgZToOn_99ozHJnQ2wOan-KUWItgEc24TCE6fHSEKoAbY61lVXXd5bhWk-_UFPL4nyG3z_yXB/s640/333.png" width="640" /></a></div>
<br />
<br />
Since travis isnt provide any build artifacts to the outsiders, I am going to implement a Jenkins on a free OpenShift server So i can link it to my github repo displaying as "nightly builds" :-)<br />
<br />
Watch out this space for more interesting things on the coming days with OpenMRS GSoC!<br />
<br />
Until next time hack-on!<br />
-Harshaharshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-48791917704780785302013-05-28T17:33:00.000+05:302013-06-18T17:44:47.190+05:30Google Summer of Code 2013.<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixN9utwCgm3t_t7sJxHKLnq0lYBHeoJ0QIc7FpHjXGOdbob1GaV5U_gUCakqzN929GK81j2ocmvq7mLH1v2l4MXxtfgd_3owx8JH5mos-WBogGPtlux_85HWaXot15dAoxIggQoaNdGJnF/s1600/url2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixN9utwCgm3t_t7sJxHKLnq0lYBHeoJ0QIc7FpHjXGOdbob1GaV5U_gUCakqzN929GK81j2ocmvq7mLH1v2l4MXxtfgd_3owx8JH5mos-WBogGPtlux_85HWaXot15dAoxIggQoaNdGJnF/s1600/url2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="107" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixN9utwCgm3t_t7sJxHKLnq0lYBHeoJ0QIc7FpHjXGOdbob1GaV5U_gUCakqzN929GK81j2ocmvq7mLH1v2l4MXxtfgd_3owx8JH5mos-WBogGPtlux_85HWaXot15dAoxIggQoaNdGJnF/s640/url2.png" width="640" /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixN9utwCgm3t_t7sJxHKLnq0lYBHeoJ0QIc7FpHjXGOdbob1GaV5U_gUCakqzN929GK81j2ocmvq7mLH1v2l4MXxtfgd_3owx8JH5mos-WBogGPtlux_85HWaXot15dAoxIggQoaNdGJnF/s1600/url2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
So Glad to heard that I have been selected for "Google summer of code 2013" as a Student this year again, yeap for the second time! :-) This year it was very amazing and much more competitive than last year. To mention a lil wow fact: I have been selected for *two* open source organizations this time!! In-fact those are two great organizations:"Raxa" and "OpenMRS" both are related to Healthcare informatics. (Sometimes we need to take some crucial decisions in our life.) So finally I chose OpenMRS as my organization, because of my love towards this awesome open source community which I have been with over year now, <br />
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMEfEgNtJrG9C1Qbx27KOivYKwcJFTVBu2UCsZjPpRXGQ4cM5mAIvZp4ZzjazEVmC-d63Dipv5OZigbNrKNh2w_9FpV5qkV4YfBaiB6tWNO-e8ENtAhnzUJqq_HgGVs3j62RqLkN221rBy/s400/OpenMRS_2008_logo_web.jpg" width="400" /></div>
And ripen, I love this concept by now, "Write codes, Save lives!" I dont think we (as coders) can do much better work than this to serve the global healthcare informatics force. Saving human lives is a priority among all other alms-giving stuff. <br />
<br />
Lastly I wanna thank Lord Budhdha who were always blessed me to get through this big achievement! නමෝ බුද්ධාය.<br />
<br />
Congratz everyone! Looking forward for a great summer with OpenMRS!<br />
<br />
If you are interested, My Project details can be found here: <br />
I will be developing a "User-driven healthcare" system by integrating OpenMRS-core as the base.<br />
<br />
1) <a href="https://google-melange.appspot.com/gsoc/project/google/gsoc2013/durapix/118001">https://google-melange.appspot.com/gsoc/project/google/gsoc2013/durapix/118001</a><br />
2) <a href="https://wiki.openmrs.org/display/projects/Patient+Narratives+Upload+-+Project+Proposal">https://wiki.openmrs.org/display/projects/Patient+Narratives+Upload+-+Project+Proposal</a><br />
<br />
<img border="0" height="324" src="http://www.gliffy.com/pubdoc/4484591/L.png" width="640" /><br />
<br />
Few Links:<br />
OpenMRS GSoC 2013 students list: <a href="https://wiki.openmrs.org/display/RES/Summer+Of+Code+2013#SummerOfCode2013-Interns,Mentors,andProjects">https://wiki.openmrs.org/display/RES/Summer+Of+Code+2013#SummerOfCode2013-Interns,Mentors,andProjects </a><br />
<br />
GSoC 2013 Accept students at Google Melange web: <a href="https://google-melange.appspot.com/gsoc/projects/list/google/gsoc2013">https://google-melange.appspot.com/gsoc/projects/list/google/gsoc2013</a><br />
<br />
<br />
<div style="text-align: center;">
<a href="http://www.pcworld.com/article/2035651/open-source-is-taking-over-the-software-world-survey-says.html"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6L9gFEbBwUdnBF3js_z_HqzyPV7sjQfJEfrIPbrDzZX8TIK2TIsF8fAfbM6abtYe9HeXh7cfAIBPt88QUUZj3-kA67xi4_wScwfZJ5-3ooaEW87os-O8FkRqq1TWApqWLrgfZFHg9Zx_8/s400/uncle-sam-open-source-311x400.png" width="310" /></a></div>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6L9gFEbBwUdnBF3js_z_HqzyPV7sjQfJEfrIPbrDzZX8TIK2TIsF8fAfbM6abtYe9HeXh7cfAIBPt88QUUZj3-kA67xi4_wScwfZJ5-3ooaEW87os-O8FkRqq1TWApqWLrgfZFHg9Zx_8/s1600/uncle-sam-open-source-311x400.png" style="margin-left: 1em; margin-right: 1em;"><br /></a>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6L9gFEbBwUdnBF3js_z_HqzyPV7sjQfJEfrIPbrDzZX8TIK2TIsF8fAfbM6abtYe9HeXh7cfAIBPt88QUUZj3-kA67xi4_wScwfZJ5-3ooaEW87os-O8FkRqq1TWApqWLrgfZFHg9Zx_8/s1600/uncle-sam-open-source-311x400.png" style="margin-left: 1em; margin-right: 1em;"><br /></a>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6L9gFEbBwUdnBF3js_z_HqzyPV7sjQfJEfrIPbrDzZX8TIK2TIsF8fAfbM6abtYe9HeXh7cfAIBPt88QUUZj3-kA67xi4_wScwfZJ5-3ooaEW87os-O8FkRqq1TWApqWLrgfZFHg9Zx_8/s1600/uncle-sam-open-source-311x400.png" style="margin-left: 1em; margin-right: 1em;"><br /></a>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-83834475915918406812012-10-03T07:30:00.000+05:302012-10-03T07:32:30.621+05:30OpenMRS Feedback Module - User Guide Presentation<br />
OpenMRS Feedback Module - User guide Presentation: Targeting implementers usage Done by me @<b>OpenMRS</b> University Forum :)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/6m3rSWPoQx4?feature=player_embedded' frameborder='0'></iframe></div>
<h3>
<u><b><a class="twitter-timeline-link" data-expanded-url="http://youtu.be/6m3rSWPoQx4" dir="ltr" href="http://t.co/HtM03xCo" target="_blank" title="http://youtu.be/6m3rSWPoQx4"><span class="js-display-url"><br /></span></a></b></u></h3>
<h3>
<u><b><span class="js-display-url">Notes</span></b></u></h3>
<div class="" id="magicdomid2">
<span class="author-g-5t0pmxukw6mbhd5g b"><b>OpenMRS University 2012-09-19</b></span><span class="author-g-7uxp3mg7g5pmsmfi b"><b> - Feedback Module</b></span></div>
<div class="" id="magicdomid3">
<br /></div>
<div class="" id="magicdomid4">
<span class="author-g-5t0pmxukw6mbhd5g">Recording at:</span></div>
<div class="" id="magicdomid5">
<ul class="list-bullet1">
<li><span class="author-g-7uxp3mg7g5pmsmfi">pre-recorded presentation: </span><span class="author-g-7uxp3mg7g5pmsmfi url"><a href="http://www.youtube.com/watch?v=6m3rSWPoQx4&feature=youtu.be">http://www.youtube.com/watch?v=6m3rSWPoQx4&feature=youtu.be</a></span></li>
</ul>
</div>
<div class="" id="magicdomid6">
<ul class="list-bullet1">
<li><span class="author-g-7uxp3mg7g5pmsmfi">Adobe
Connect recording (nothing extra here, just watch the presentation on
youtube and look at the comments lower on this etherpad): </span><span class="author-g-7uxp3mg7g5pmsmfi url"><a href="http://connect.iu.edu/p95nol8t68q/">http://connect.iu.edu/p95nol8t68q/</a></span></li>
</ul>
</div>
<div class="" id="magicdomid7">
<br /></div>
<div class="" id="magicdomid8">
<span class="author-g-7uxp3mg7g5pmsmfi">=== Feedback module ===</span></div>
<div class="" id="magicdomid9">
<br /></div>
<div class="" id="magicdomid10">
<span class="author-g-7uxp3mg7g5pmsmfi">As an administrator, what do I need to do to get started:</span></div>
<div class="" id="magicdomid11">
<ul class="list-bullet1">
<li><span class="author-g-7uxp3mg7g5pmsmfi">Install the module</span></li>
</ul>
</div>
<div class="" id="magicdomid12">
<ul class="list-bullet1">
<li><span class="author-g-7uxp3mg7g5pmsmfi">Assign the "Add Feedback" privilege to all roles I want to be able to give feedback</span></li>
</ul>
</div>
<div class="" id="magicdomid13">
<ul class="list-bullet2">
<li><span class="author-g-7uxp3mg7g5pmsmfi">e.g. to the Authenticated role for everyone</span></li>
</ul>
</div>
<div class="" id="magicdomid14">
<ul class="list-bullet1">
<li><span class="author-g-7uxp3mg7g5pmsmfi">(Recommended) change Predefined Subjects</span></li>
</ul>
</div>
<div class="" id="magicdomid15">
<ul class="list-bullet1">
<li><span class="author-g-7uxp3mg7g5pmsmfi">(Optional, not necessary) Statuses</span></li>
</ul>
</div>
<div class="" id="magicdomid16">
<br /></div>
<div class="" id="magicdomid17">
<span class="author-g-7uxp3mg7g5pmsmfi">ada> where can we find the add feedback privillege?</span></div>
<div class="" id="magicdomid18">
<ul class="list-bullet1">
<li><span class="author-g-7uxp3mg7g5pmsmfi">harshadura: inside roles u will able to see in the list of privliges</span></li>
</ul>
</div>
<div class="" id="magicdomid19">
<ul class="list-bullet1">
<li><span class="author-g-7uxp3mg7g5pmsmfi">(i.e. inside the regular Manage Roles administration page)</span></li>
</ul>
</div>
<div class="" id="magicdomid20">
<br /></div>
<div class="" id="magicdomid21">
<span class="author-g-9hbwf8mlq0kfo7id">Slides: </span><span class="author-g-9hbwf8mlq0kfo7id url"><a href="https://docs.google.com/open?id=0B6VZalYLynLrVTY5VHFsUlhJMEU">https://docs.google.com/open?id=0B6VZalYLynLrVTY5VHFsUlhJMEU</a></span></div>
<div class="" id="magicdomid22">
<br /></div>
<div class="" id="magicdomid23">
<span class="author-g-9hbwf8mlq0kfo7id">OpenMRS
Feedback Module: Allows general OpenMRS Users to communicate with
System Admins/Supporters regarding System-related (non
patient-specific) messages/issues.</span></div>
<div class="" id="magicdomid24">
<br /></div>
<div class="" id="magicdomid25">
<span class="author-g-9hbwf8mlq0kfo7id">Feedback Module - User Documentation : </span><span class="author-g-9hbwf8mlq0kfo7id url"><a href="https://wiki.openmrs.org/x/uIAvAg">https://wiki.openmrs.org/x/uIAvAg</a></span></div>
<div class="" id="magicdomid26">
<br /></div>
<div class="" id="magicdomid27">
<span class="author-g-9hbwf8mlq0kfo7id">Installation</span></div>
<div class="" id="magicdomid28">
<br /></div>
<div class="" id="magicdomid29">
<span class="author-g-9hbwf8mlq0kfo7id">To
install the Feedback Module download the distribution .omod package
from here[1] at OpenMRS Module Repository and upload it into your
OpenMRS system.</span></div>
<div class="" id="magicdomid30">
<br /></div>
<div class="" id="magicdomid31">
<span class="author-g-9hbwf8mlq0kfo7id">[1] </span><span class="author-g-9hbwf8mlq0kfo7id url"><a href="https://modules.openmrs.org/modules/view.jsp?module=feedback">https://modules.openmrs.org/modules/view.jsp?module=feedback</a></span></div>
<div class="" id="magicdomid32">
<br /></div>
harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-43156712766834396972012-10-03T07:26:00.001+05:302012-10-03T07:28:13.781+05:30finally my GSoC T-Shirt and Certificate reached home!<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNuum3rWJ9Rl3XL9dKIhPOj7J0kkvwXQGHDgtQn5qps_Zwp5BlgH9npvST83YKiSBSv35oeDmODJ8ADMKSSAWJM3eEkqaR-Wp2iYXB2BAWpWraLgRXiDPRITN3k7EghJ4pAcEv75SR6ZHj/s1600/20121002_081531.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNuum3rWJ9Rl3XL9dKIhPOj7J0kkvwXQGHDgtQn5qps_Zwp5BlgH9npvST83YKiSBSv35oeDmODJ8ADMKSSAWJM3eEkqaR-Wp2iYXB2BAWpWraLgRXiDPRITN3k7EghJ4pAcEv75SR6ZHj/s640/20121002_081531.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrYorEz-mKH7DakjndP41nDvT7S-OghUdbqWMoxkorTbRDGmBJP66JSY4SGcOmCcyYzIqJxyU-FRsjxIuOnCgZnmRGQROP__GNFbASlXnOrefX5RlUvJH0RnzFBzDGBlB_vKcgLReGgnhq/s1600/20121002_081531.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQOb4F9bGfIAgMqUVRKzO1sA85tSQ9pOqGOZnyCB9LjCL_kj57ENb8lwCjHYBtfbu8AxGyMWxbSOTG7MemOHoORO5CZxGB9aLklrnNEBigMVUNZtfTzb4Avlewen6KMhZFnkJo-e6XV5Lz/s1600/20121002_102545.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQOb4F9bGfIAgMqUVRKzO1sA85tSQ9pOqGOZnyCB9LjCL_kj57ENb8lwCjHYBtfbu8AxGyMWxbSOTG7MemOHoORO5CZxGB9aLklrnNEBigMVUNZtfTzb4Avlewen6KMhZFnkJo-e6XV5Lz/s640/20121002_102545.jpg" width="480" /></a></div>
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-82512075097766038962012-08-21T17:28:00.001+05:302012-08-25T14:49:32.484+05:30End of GSoC thoughtz, OpenSource Software and my project at a glance!<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-gAVNxqVu06oGV0SvteYWirOCa3jxDOXvL2lthdZlZG3lXxxEDpVub9Mn6NqTa5qE9rmAzO3_WLfUe5m7_-Ey9bn35lYCBXjyBjCbqJJ1uRSep__hp_y8LiNDHrD0K0QmgD4j8x9ZHWxq/s640/banner-gsoc2012.png" width="640" /></div>
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br />
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">Well, After long time of hard work with coding stuff, <a href="http://www.google-melange.com/"><span style="color: blue;">GSoC</span></a>
has come to an End ! I am extremely happy to say about my experience
which I got on these last few months during my Google Summer of Code Internship
at <a href="http://openmrs.org/"><span style="color: blue;">OpenMRS</span></a>. I
real loved my project and the marvelous Open Source Community I have worked with.
By any chance If you are not aware about OpenMRS, the name says what it does,
It's a Medical Record Management System made for the developing world. "Write
Codes, Save Lives!" how cool intention, isn't it ?</span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwm8v_YYSfhJkgy85FbcujWVJPDgIQtFFfRjiGQkC1_fK4s_tD-5SOctONhIh2nPLoETI32AnST3gdF9G79_2fVnrGZM7IBgSjTDNfJA1G9lsDrEpWxgUJeTGn9Ohav2wodqpGXOyAeNTb/s400/OpenMRS_2008_logo_web.jpg" width="400" /></div>
<br />
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">Okay!
Now I will tell you bit about my GSoC project.</span><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";"> My project is <a href="https://wiki.openmrs.org/display/projects/Better+Error+Submission+Process+for+FDBK+Module"><span style="color: blue;">Better Error Submission process for Feedback Module</span></a>,
Basically this is an extension of the Project called <u>General Feedback Mechanism of </u></span><u><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">OpenMRS</span></u><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">. The
new version of <b>OpenMRS Feedback Module</b> follows some of the cool features in <a href="http://www.google.com/tools/feedback/intl/en/"><span style="color: blue;">Google
Feedback</span></a> tools. (something like Automated Screenshot capture and
edit process within web browser, You may have seen that functions or may have
tried it in YouTube or somewhere else on Google Products, if not you can try
that from <a href="https://www.google.com/tools/feedback/reports?hl=en"><span style="color: blue;">here</span></a>.) My project is a Web Based Java EE
Application, Of course its an OpenMRS Module application. 60% of entire project coded in JavaScript, Jquery (I had real nice time working with these JS stuff lol) 40% of it has coded using Java and related its server side
technologies.</span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br />
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<b><u><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">OpenMRS
Feedback Module v2.0 at a Glance</span></u></b><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";"></span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<b><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">What's New ? </span></b></div>
<ul style="font-family: Georgia,"Times New Roman",serif; text-align: justify;" type="square">
<li class="MsoNormal" style="line-height: normal;"><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">User friendly, Wizard driven
Feedback Form</span></li>
<li class="MsoNormal" style="line-height: normal;"><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">Automated Screenshot
Capture/Edit process within Web Browser.</span></li>
<li class="MsoNormal" style="line-height: normal;"><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">User-to-User Communication
within Feedback System. (Comment System) </span></li>
</ul>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<div style="text-align: center;">
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6eYnitl7ZmmEWhw7HfYQqm1-lylz9UNNb57OSKpEkQu8YS3tb-pXN3Pl2VOKWheNzUOVgRtF_k97Y33HWNLmMkDFav2CE9gM6Ln3tl5QjDSu8iQbUCf3BjaeggR8aqlm8AXMMD7QYJCkG/s1600/feedback-cartoon.jpg" /><b><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";"> </span></b></div>
<br />
<b><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">About Feedback Module v2.0</span></b></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">Basically
Feedback module provides a mechanism for users to communicate with system
Supporters/Admins with system-related (non-patient-specific) messages. In this
new version of Feedback module provides a really cool feature which will
automatically Capture the Screenshot and allow user to edit it
(highlight/blackout) within Web Browser itself. So this will reduce the time
taken to process Screenshots manually. And the users will able to submit their
problem/feedback directly to the most responsible person rather than same
Admin. Multiple OpenMRS users can be mapped into a single Feedback Ticket by
Admin, So faster problem solving can be happen. User-to-User communication is a
great way to interact with other users regarding a Feedback Ticket in this new version
of Feedback Module.</span><br />
<br />
<br />
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">You
can read User Documentation from below link. </span><br />
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";"><a href="https://wiki.openmrs.org/display/projects/Feedback+Module+-+User+Documentation" target="_blank"><span style="color: blue;">Feedback Module - User Documentation</span></a></span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br />
<br />
<u><b>Installation and Usage</b></u><br />
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";"><a href="https://modules.openmrs.org/modules/view.jsp?module=feedback" target="_blank"><span style="color: blue;">Download the OMOD from OpenMRS Module
Repository</span></a></span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">OMOD
file is a specialized WAR file which is used as a <u>OpenMRS Module</u> file
installed as plugins into OpenMRS System. Installation isn't just straight forward thing, So
if you aren't aware of installing OpenMRS modules, I prefer you to watch the
<b>Demo Video</b> below to get an idea how it works! :)</span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br />
<br />
<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="http://www.youtube.com/embed/Nd8vCNdMDJo" width="560"></iframe>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br />
<br />
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";"><span style="color: blue;"><br /></span></span>
<br />
<div class="picture">
<img alt="Feedback Wizard" src="https://modules.openmrs.org/modules/downloadImage?id=80" /><br />
<div style="text-align: right;">
<b><br /></b></div>
<div style="text-align: center;">
<b><a href="https://modules.openmrs.org/modules/images.jsp?module=feedback">Check all Screenshots from here</a></b></div>
</div>
</div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br />
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">I
must say! Entire OpenMRS community is really nice and helpful! They are like a family working
towards a single goal to make the world even better place to live. They
helped me every time when I was in trouble. For my Coding problems to Technical
issues I got great support from #openmrs IRC channel and mailing lists.</span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">I
can't never forget my </span><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">Primary Mentor</span><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">, Gaurav Paliwal. He helped me every time when I
was in trouble and guided my path all the time</span><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">. I have to thank alot for his great commitment done for
me. And my Backup mentor Ben Wolfe, being a Core developer of OpenMRS his
advices were really helped for me to get succeed in project work too.</span><br />
<br />
<div style="text-align: center;">
<img border="0" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkzafcsVl3rucLQ3cAAKc-QjghVB_lDO2HnO6zAu570RdQIWRHccK5znTk_o67uJuC0fZOfnvzMH64A79LbdYTEIp_gRK3FJ0pu_eGy8r7s1p6e7Ql2SS9ZXN5wHpU_mDC3xCcxLlJy1BJ/s400/open_source.gif" width="400" /><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";"> </span></div>
</div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">I
have completed main goals and objectives of my GSoC project, And now GsoC is
over! Well is that all over now....? Nope its not! I am not going to run away
from this wonderful place where I learnt lots of Coding, gained lots of knowledge
about Open Source software and Community involvement. I'll definitely stay with OpenMRS in
future too. I know Thats the true
spirit of Open Source software development! </span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">OpenMRS
is a really cool Open Source Project, If you are skillful in Java you should definitely
join to it. Not only coding, There are so many other things available to do, If
you are skillful in technical writing stuff you can contribute by documenting
wiki docs, You can contribute by help testing product, etc. Don't forget your work
is not just a task, Thats a hard work done for the sake of Humanity, For the
intention of saving lives! You can proud being a part of something huge! Your
contribution for this great project will be an indirect help for the well-being of
Global Healthcare.</span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br />
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">"Write
Codes! Save Lives!" Code for Humanity, Join with OpenMRS !</span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<br /></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">නමෝ
බුද්ධාය! </span><span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">Thank god for giving me the strength
to successfully complete my Google Summer of Code Internship at OpenMRS.org ! This is one of
my lifetime achievement indeed!
<br />
<br />
"Nothings Forgotten. Nothing's ever forgotten."</span></div>
<br />
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">Regards,</span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; line-height: normal; text-align: justify;">
<span style="font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">- harshadura</span></div>
<div class="MsoNormal" style="font-family: Georgia,"Times New Roman",serif; text-align: center;">
<br /></div>
harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-12900603177587436472012-06-21T12:17:00.003+05:302012-06-22T07:51:00.670+05:30Better Error Submission Process for FDBK Module - Presentation<br />
<h3 class="separator" style="clear: both; text-align: center;">
<u><b>GSoC Project Progress Presentation</b></u></h3>
<h3 class="separator" style="clear: both; text-align: center;">
<u><b>21th June 2012 @ OpenMRS Dev Forum</b></u></h3>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/-o-tamGnsCE?feature=player_embedded' frameborder='0'></iframe> </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: center;">
<b>Playback Recording</b></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<br /></div>
<br />
<iframe height="480" src="https://docs.google.com/file/d/0B6VZalYLynLrZ2o3ZGJzZ3RkMFU/preview?pli=1" width="640"></iframe>
<br />
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<b>Presentation Slides</b> </div>
<br />
<br />
<u><b>Reference links used in the Presentation - Feedback Module</b></u><br />
<br />
<a href="http://goo.gl/yjBLz">Project Contents </a><br />
<br />
<a href="http://goo.gl/KjKuO">Demo of the work done so far (Hosted OpenMRS)</a><br />
<br />
Username: admin<br />
Password: Admin123<br />
<br />
<a href="http://goo.gl/PtX6b">User Documentation</a><br />
<div style="text-align: center;">
</div>
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-21905255903621974322012-06-16T14:05:00.001+05:302012-06-16T14:05:10.916+05:30What do I do when I see java.lang.OutOfMemoryError: PermGenTroubleshooting JVM Memory Errors<br />
<h2>
java.lang.OutOfMemoryError: PermGen space</h2>
<h2>
<a class="userLogoLink userlink-2" data-user-hover-bound="true" data-username="jmwogi" href="https://wiki.openmrs.org/display/%7Ejmwogi" title="">
</a>
</h2>
<div class="comment-header">
<h4 class="author">
<a class="url fn confluence-userlink userlink-2" data-user-hover-bound="true" data-username="jmwogi" href="https://wiki.openmrs.org/display/%7Ejmwogi" title="">By, Jonah S. Mwogi</a></h4>
</div>
<div class="comment-body">
<div class="comment-content wiki-content">
In my endeavors to troubleshoot tomcat memory issues i performed the following in Ubuntu 10.04:<br />
<b><em>sudo gedit /etc/init.d/tomcat6</em></b><br />
Changed (~line 81):<br />
<b><em>if [ -z "$JAVA_OPTS" ]; then</em></b><br />
<b><em> JAVA_OPTS="-Djava.awt.headless=true -Xmx128M"</em></b><br />
<b><em>fi</em></b><br />
To:<br />
<b><em>if [ -z "$JAVA_OPTS" ]; then</em></b><br />
<b><em> JAVA_OPTS="-Djava.awt.headless=true -Xmx1024M -Xms1024M</em></b><span style="color: #888888;"><b><em> </em></b></span><span style="color: #888888;"><b><em>-XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m</em></b></span><b><em>"</em></b><br />
<b><em>fi</em></b><br />
You can as well explicitly state in catalina.sh file as follows (in bold):<br />
#!/bin/sh<br />
<b>CATALINA_OPTS="-Xms1024m -Xmx1024m"</b><br />
</div>
</div>
<br />
___________<br />
REF : <a href="https://wiki.openmrs.org/display/docs/Troubleshooting+Memory+Errors">https://wiki.openmrs.org/display/docs/Troubleshooting+Memory+Errors</a><br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-37368279562216717362012-06-01T17:05:00.000+05:302012-06-01T17:05:01.195+05:30Preventing from Mysql holding hand shake problem for OpenMRS WebApp.<pre class="code-java">Waiting <span class="code-keyword">for</span> changelog lock....
Waiting <span class="code-keyword">for</span> changelog lock....
Waiting <span class="code-keyword">for</span> changelog lock....
Waiting <span class="code-keyword">for</span> changelog lock....
ERROR - Listener.contextInitialized(124) |2009-05-26 12:07:49,197| Got exception <span class="code-keyword">while</span> starting up:
javax.servlet.ServletException: java.lang.RuntimeException: error getting unrun updates on the database
at org.openmrs.web.Listener.setupNeeded(Listener.java:144)</pre>
<br />
Solution.<br />
<br />
<div class="action-body flooded">
You must have attempted an upgrade
at some point and it failed in the middle. The liquibase changelog lock
is not getting released in these cases. You can manually clear the
lock by emptying the liquibasechangeloglock table:<br />
<br />
By firing the following command in mysql<br />
<br />
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<pre class="code-java">delete from liquibasechangeloglock;</pre>
</div>
</div>
<br />
(Make sure to <b>not</b> delete the liquibasechangelog table contents, those are important!)<br />
<br />
</div>
<br />
REF : <a href="http://openmrs-mailing-list-archives.1560443.n2.nabble.com/Waiting-for-changelog-lock-td5166981.html">http://openmrs-mailing-list-archives.1560443.n2.nabble.com/Waiting-for-changelog-lock-td5166981.html</a><br />
<br />
<a href="http://dev.openmrs.org/ticket/1524">http://dev.openmrs.org/ticket/1524 </a>harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-3817915233806245482012-05-31T14:04:00.003+05:302012-05-31T14:04:45.618+05:30Technical Overview - OpenMRS architecture<br />
<br />
OpenMRS has been designed to have a tiered
architecture. The real strength of OpenMRS is in its robust and flexible
data model. However, not all users want to have to know this data model
inside and out. The ?<a href="https://wiki.openmrs.org/display/docs/API" title="API">API</a>
layer allows a developer to only have to know Java objects and
read/save to them. This layer can be used in a standalone application
or, as most people use it, in a J2EE web application.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhULh316mAZyzh_plcwdA0M_LAkG8Vq_FeYc1C6LjI-eLTX7_TJApY-kGQaj_4IzHjovLJpNCJInJizu5YLfwJiAEfLTpOi9XBwAX6OXcoQA13A4lA8UFoSayPBYyuBdcOq51Ag0MQzOnEv/s1600/Application-layers-2.4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="341" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhULh316mAZyzh_plcwdA0M_LAkG8Vq_FeYc1C6LjI-eLTX7_TJApY-kGQaj_4IzHjovLJpNCJInJizu5YLfwJiAEfLTpOi9XBwAX6OXcoQA13A4lA8UFoSayPBYyuBdcOq51Ag0MQzOnEv/s400/Application-layers-2.4.png" width="400" /></a></div>
<h1>
<a href="http://www.blogger.com/blogger.g?blogID=580545777711126611" name="TechnicalOverview-Context"></a> Context</h1>
The backbone of OpenMRS is the core ?<a href="https://wiki.openmrs.org/display/docs/API" title="API">API</a>.
This API has methods for all of the basic functions like
adding/updating a patient, adding/updating a concept, etc. These methods
are provided in services. There are classes named <b>PatientService</b>, <b>ConceptService</b>, <b>EncounterService</b>, <b>ObsService</b>, etc. The <a href="https://wiki.openmrs.org/display/docs/Data+Model" title="Data Model">Data Model</a>
groups the database tables into "domains." Each domain is a separate
colored box. The breakdown of domains/tables is essentially a visual
representation of the service separation.<br />
The Context is a static class to allow the application to save on memory. Only one <b>PatientService</b> object, one <b>ConceptService</b>
object, etc (and of course the associated DAO's) are instantiated. The
Context's services are split into two categories: methods for the
Services and for Users. The services are kept in the aptly named
ServiceContext class. This is instantiated only once and is stored
statically in the Context. The getter methods for the services simply
pass through Context to the ServiceContext. The StaticContext properties
are set via our Spring application Context and Dependency Injection.
The UserContext contains methods for acting on users: authentication and
authorization, logging in, logging out, etc. A different UserContext is
instantiated for every user accessing the system. The "current"
UserContext is stored on the current thread. When that user is done, the
UserContext is taken off of the thread and put into the user's session
variable (in the case of the webapp). When the user accesses the system
again, the UserContext is taken off of the user's session and placed
onto the thread again. In the webapp, this manipulation is done by the
OpenmrsFilter class that wraps around every call to the server. Similar
to the services, the methods on the Context class pass through to the
current UserContext on the current thread.<br />
Every access to the system must be defined within a "unit of work".
This unit is bordered by calls to Context.openSession() and
Context.closeSession(). In the webapp, these calls are done in
OpenmrsFilter and most developers don't have to worry about making those
calls. However, any developer of an external application or a thread
spinoff (like Hl7InQueueProcessor and FormEntryProcessor) will need to
be sure to include open/closeSession calls or risk leaking database
connections.<br />
Read more about the <a href="https://wiki.openmrs.org/display/docs/API" title="API">API</a><br />
<h1>
<a href="http://www.blogger.com/blogger.g?blogID=580545777711126611" name="TechnicalOverview-SpringDIandAOP"></a>Spring DI and AOP</h1>
<span class="error">[PatientService]</span>, <span class="error">[ConceptService]</span>, etc are interfaces. <span class="error">[PatientServiceImpl]</span>, <span class="error">[ConceptServiceImpl]</span>, etc are the current default implementations of those interfaces. Which implementation Context serves up is determined by <a class="external-link" href="http://static.springframework.org/spring/docs/2.0.0/reference/beans.html" rel="nofollow">Spring's dependency injection</a>. Each *Impl contains a reference to its DAO (<span class="error">[PatientDAO]</span>, <span class="error">[ConceptDAO]</span>, etc). The DAOs are also interfaces. The current default implementation of them are for Hibernate (<span class="error">[HibernatePatientDAO]</span>, <span class="error">[HibernateConceptDAO]</span>, etc). Which DAO implementation is used at runtime is also determined by Spring's DI.<br />
All of these implementations are described in the Spring <span class="error">[applicationContext-services.xml]</span> file. This file also controls the transaction and authorization AOP annotations (See next section).<br />
Each *Service (not *DAO) is considered to be an AOP advice point.
Because we instantiate and serve only one *Service class out of the
Context, this is easy. When Spring starts, each service that has advice
points around it gets wrapped with a Spring AOP class. If there are five
modules/methods that wrap around a certain class, there will be five
different wrappers. Any one of those could exit method execution early
(if it's an "around" advice). Most AOP linking will be done by modules.<br />
Also see <a href="https://wiki.openmrs.org/display/docs/OpenMRS+AOP" title="OpenMRS AOP">OpenMRS AOP</a>.<br />
<h1>
<a href="http://www.blogger.com/blogger.g?blogID=580545777711126611" name="TechnicalOverview-AuthorizationandAuthentication"></a>Authorization and Authentication</h1>
OpenMRS has a very granulated permissions system. Every action is associated with a <span class="error">[Privilege]</span>. An action would be "Add Patient", "Update Patient", "Delete Patient", "Add Concept", "Update Concept", etc. A <span class="error">[Role]</span>
contains a collection of Privileges. A Role can also point to a list of
inherited roles. The role inherits all privileges from that inherited
role. In this way, hierarchies of roles are possible. A User contains
only a collection of Roles, not Privileges.<br />
AOP annotations are used to require a privilege for a service method.<br />
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<div>
<div class="syntaxhighlighter nogutter java" id="highlighter_381663">
<table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="code"><div class="container" title="Hint: double-click to select code">
<div class="line number1 index0 alt2">
<code class="java color1">@Authorized</code><code class="java plain">({</code><code class="java string">"Add Patients"</code><code class="java plain">})</code></div>
</div>
</td></tr>
</tbody></table>
</div>
</div>
</div>
</div>
The annotation is placed in the <b>interface</b> of the
service. If the current user does not possess that privilege an
APIAuthenticationException is thrown. (The webapp catches this exception
and redirects to the login form).
Each page in the webapp is able to require a certain privilege for the page with the <b>openmrs:require</b> taglib. The <b>openmrs:hasPrivilege</b> taglib provides support for restricting only certain sections of a page.<br />
While using the API, you may come to a point where you need to
temporarily grant the current user a certain privilege in order to make
an API call. This is accomplished using the <b>Context.addProxyPrivilege(String priv)</b> and <b>removeProxyPrivilege(String priv)</b>
methods. Multiple priv objects defining the same string can be proxied.
Subsequent calls to removePrivilege will only pop the first one off the
stack. Best practice says that you should put your API method calls in a
try/catch block and put the <b>removeProxyPrivilege</b> call in a finally block.<br />
<h1>
<a href="http://www.blogger.com/blogger.g?blogID=580545777711126611" name="TechnicalOverview-Hibernate"></a>Hibernate</h1>
<a class="external-link" href="http://www.hibernate.org/" rel="nofollow">Hibernate</a>
is an excellent Object Relational Mapper. Using just xml files, we are
able to describe the relationship between all of our tables and our
domain (POJO) objects (like Patient.java, Concept.java, etc). Looking at
the concept domain in the datamodel, we see that it consists of tables
named concept, concept_answer, concept_set, concept_name. It would be
very difficult to keep up with where to store each part of the concept
object and the relations between them. Using Hibernate, we only need to
concern ourselves with the Concept object, not the tables behind the
object. The concept.hbm.xml mapping file does the hard work of knowing
that the Concept object contains a collection of ConceptSet objects, a
collection of ConceptName objects, etc. To add a new name to a concept:<br />
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<div>
<div class="syntaxhighlighter nogutter java" id="highlighter_241006">
<table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="code"><div class="container" title="Hint: double-click to select code">
<div class="line number1 index0 alt2">
<code class="java plain">ConceptService conceptService = Context.getConceptService();</code></div>
<div class="line number2 index1 alt1">
<code class="java plain">Concept concept = conceptService.getConcept(</code><code class="java value">1234</code><code class="java plain">);</code></div>
<div class="line number3 index2 alt2">
<code class="java plain">ConceptName newConceptName = </code><code class="java keyword">new</code> <code class="java plain">ConceptName(</code><code class="java string">"some name"</code><code class="java plain">, </code><code class="java string">"some locale"</code><code class="java plain">);</code></div>
<div class="line number4 index3 alt1">
<code class="java plain">concept.addName(newConceptName);</code></div>
<div class="line number5 index4 alt2">
<code class="java plain">conceptService.updateConcept(concept);</code></div>
</div>
</td></tr>
</tbody></table>
</div>
</div>
</div>
</div>
Hibernate knows what has changed and what needs to be saved into the
database. (The long and short of it is that Hibernate wraps the Concept
object in its own object and keeps track of what has been added,
removed, etc).<br />
Hibernate will not load all associated objects until they are needed –
this is called lazy loading. The concept object above never dove into
the concept_answer table to get the list of answers for concept 1234. If
we had called concept.getConceptAnswers() Hibernate at that point would
have made a call to the database to retrieve the answers for us. For
this reason, you <b>must</b> either fetch/save/manipulate your object in
the same session (between one open/closeSession) or you must hydrate
all object collections in the object by calling the getters
(getConceptAnswers, getConceptNames, getSynonyms, etc).<br />
<h1>
<a href="http://www.blogger.com/blogger.g?blogID=580545777711126611" name="TechnicalOverview-OpenMRSSourcecode"></a>OpenMRS Source code</h1>
OpenMRS lives in a subversion repository. See the ?<a href="https://wiki.openmrs.org/display/docs/Code+Repository" title="Code Repository">Code Repository</a> wiki page for more info.<br />
<h1>
<a href="http://www.blogger.com/blogger.g?blogID=580545777711126611" name="TechnicalOverview-BuildingOpenMRS"></a>Building OpenMRS</h1>
OpenMRS uses ?<a href="https://wiki.openmrs.org/display/docs/Maven" title="Maven">Maven</a> to manage the libraries and build system. See that wiki page for more info.<br />
<h1>
<a href="http://www.blogger.com/blogger.g?blogID=580545777711126611" name="TechnicalOverview-Modules"></a>Modules</h1>
See the <a href="https://wiki.openmrs.org/display/docs/Creating+Modules" title="Creating Modules">Module documentation</a>
for developers. Modules are allowed to interact with OpenMRS on every
level. They can provide new entries into the Spring Application
Context, new database tables, new web pages, and even modify current
service layer methods.<br />
<h1>
<a href="http://www.blogger.com/blogger.g?blogID=580545777711126611" name="TechnicalOverview-Webapp"></a>Webapp</h1>
The OpenMRS organization creates and ships a webapp (openmrs.war) for
people to use. This webapp is a consumer of the API. We expect there
to be (and there are already) several different consumers of the API by
different parties.<br />
<h1>
<a href="http://www.blogger.com/blogger.g?blogID=580545777711126611" name="TechnicalOverview-SpringMVC"></a>Spring MVC</h1>
OpenMRS strongly subscribes to the Model-View-Controller pattern. We
won't go into the depths of MVC, or even the basics of it. Mediawiki has
a complete writeup about everything you may have wanted to know about
the <a href="http://en.wikipedia.org/w/index.php?title=Special%3ASearch&search=archive%3AMVC+Pattern">MVC programming pattern</a>. Spring has also written a fair amount on <a class="external-link" href="http://www.springframework.org/docs/reference/mvc.html" rel="nofollow">how and why</a>
to use MVC. OpenMRS, for the most part, uses the domain objects as the
model. Most controllers will be SimpleFormControllers and be placed in
the <span class="error">[org.openmrs.web.controller]</span> package.
There are some controllers that have been rewritten to use Spring 2.5+
annotations. We recommend using those. The model is set up in the
controller's formBackingObject, and processed/saved in the
processFormSubmission and onSubmit methods. The jsp views are placed in <span class="error">[/web/WEB-INF/view]</span>.<br />
Not all files served by the webapp are run through Spring. The <span class="error">[/web/WEB-INF/web.xml]</span> file maps certain web page extensions to the <span class="error">[SpringController]</span>. All *.form, *.htm, and *.list pages are mapped. The SpringController then uses the mappings in the <span class="error">[openmrs-servlet.xml]</span> file to know which pages are mapping to which Controller.<br />
There are no .jsp pages that are accessed directly. If a pages url is
/admin/patients/index.htm, the jsp will actually reside in <span class="error">[/web/WEB-INF/view/admin/patients/index.jsp]</span>.
This is necessary so that we can do the redirect with the
SpringController. Because the file being accessed ends with .htm, the
SpringController is invoked by the web server. When the SpringController
sees the url, it simply replaces .htm with .jsp and looks for the file
in /web/WEB-INF/view/ according to the jspViewResolver bean in
openmrs-servlet.xml. If the page being accessed was patient.form, the
mapping in the urlMapping bean would have told spring to use the
PatientFormController and the patientForm.jsp file.<br />
That spring descriptor file also contains settings for the max form
upload size, locale changing, message names, fieldGen handlers, and
name/address templates (to be removed: <a href="http://tickets.openmrs.org/browse/TRUNK-368">TRUNK-368</a> ).<br />
<h1>
<a href="http://www.blogger.com/blogger.g?blogID=580545777711126611" name="TechnicalOverview-DWR"></a>DWR</h1>
<a class="external-link" href="http://directwebremoting.com/" rel="nofollow">Direct Web Remoting</a>
is a framework that allows us to translate java objects and methods to
javascript objects and methods. Together with jquery/DOJO, DWR forms the
basis of the AJAX in OpenMRS. The dwr.xml descriptor file describes
which classes and methods are translated and made available to
javascript calls. Most base DWR-able classes are placed into the
org.openmrs.web.dwr package. Modules can add dwr methods/objects and
those will go into the already-registered-with-dwr dwr-modules.xml file.<br />
<h1>
<a href="http://www.blogger.com/blogger.g?blogID=580545777711126611" name="TechnicalOverview-Javascript"></a>Javascript</h1>
<a class="external-link" href="http://jquery.com/" rel="nofollow">jQuery</a>
is the recommended JS framework. The included jquery package will be
kept up to date with openmrs releases. Import the one you need with <br />
<div class="code panel" style="border-width: 1px;">
<div class="codeContent panelContent">
<div>
<div class="syntaxhighlighter nogutter java" id="highlighter_519988">
<table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="code"><div class="container" title="Hint: double-click to select code">
<div class="line number1 index0 alt2">
<code class="java plain"><openmrs:htmlInclude file=</code><code class="java string">"/scripts/jquery/jquery.min.js"</code> <code class="java plain">/></code></div>
</div>
</td></tr>
</tbody></table>
</div>
</div>
</div>
</div>
(but its already done in the header for you as of version 1.7)
<a class="external-link" href="http://dojotoolkit.org/" rel="nofollow">DOJO</a>
is a javascript library and packaging system. All dojo packages are
stored in /webapp/src/main/webapp/WEB-INF/view/scripts/dojo. The custom
OpenMRS javascript "classes" are stored in
/webapp/src/main/webapp/WEB-INF/view/scripts/dojo/src/widget/openmrs.<br />
<br />
________________________ <br />
Ref: <a href="https://wiki.openmrs.org/display/docs/Technical+Overview" target="_blank">https://wiki.openmrs.org/display/docs/Technical+Overview </a><br />
<br />harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-77806011250667442132012-04-28T08:37:00.001+05:302012-05-08T07:08:53.896+05:30Yey! Google Summer of Code 2012, I'm IN !! :) :) :)<div dir="ltr" style="font-family: Arial,Helvetica,sans-serif; text-align: left;">
<div dir="ltr" id="internal-source-marker_0.9530550907387436" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7TcykrBdkD5_xl8OD1W6ju1KokLdbSTqCOkbYjepBiF9RdkhPnZtW27uDeE56C1x4rFsrEdOLasWM2BhGLyI_3Uf2rc5iAR-db74Y-4N3h6eI6z51jSzpixQXWhK4mjoFaKEav0SZ8Qvu/s1600/GSOC+12+logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7TcykrBdkD5_xl8OD1W6ju1KokLdbSTqCOkbYjepBiF9RdkhPnZtW27uDeE56C1x4rFsrEdOLasWM2BhGLyI_3Uf2rc5iAR-db74Y-4N3h6eI6z51jSzpixQXWhK4mjoFaKEav0SZ8Qvu/s1600/GSOC+12+logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://code.google.com/soc/" target="_blank"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7TcykrBdkD5_xl8OD1W6ju1KokLdbSTqCOkbYjepBiF9RdkhPnZtW27uDeE56C1x4rFsrEdOLasWM2BhGLyI_3Uf2rc5iAR-db74Y-4N3h6eI6z51jSzpixQXWhK4mjoFaKEav0SZ8Qvu/s400/GSOC+12+logo.png" width="400" /></a></div>
<br />
<br />
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">As
April 23 approaches, the heart-beat level rises in every students’ body for a
one reason - its Google Summer of Code a.k.a GSoC.</span></span><span style="color: black;"><span style="font-size: small;"> </span></span><br />
<br />
<div style="color: black;">
<a href="http://code.google.com/soc/" target="_blank">Google Summer of Code</a> is a global program that offers post-secondary student
developers ages 18 and older
stipends to write code for various open source software projects. They
have to work with open source, free software, and open technology-related
groups over a three month period.<span style="font-size: small;"><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span></span>Google Summer of Code is a highly competitive program with a limited number of spots. <span style="font-size: small;"><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I am proud to be part of it this year. </span></span></div>
</div>
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span>
<br />
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">My
name is Harsha Sanjeewa Siriwardena, 3rd Year, IT Undergraduate who studies in SLIIT and lives in Colombo, SriLanka. I am a Simple, Cool guy enjoy Coding, Android development, Open source and learning new Technological stuff.</span></span></div>
<br />
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
</div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I am planning to implement </span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Project idea called </span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><a href="https://wiki.openmrs.org/display/projects/Better+Error+Submission+Process+for+FDBK+Module" target="_blank">Better Error Submission Process - Feedback Module</a> for OpenMRS as a part of GSoC 2012. This post
will give a short description of the process I went through to make it
to coding for OpenMRS project through GSoC 2012.</span></span></div>
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://openmrs.org/" target="_blank"><img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3ySONSGiUPHCzCpNaOdwmOD1D5-5l3-tgWK1Mrg8TbIWp98rLs0RJd075i9Mduz1HeeEPRR31piW9c_da6jgPDwo62R6tYFbk4EGVeKnqkr6A9hkC930YaT9M3-5m6k9_6FfgBkAbc8rM/s400/OpenMRS_2008_logo_web.jpg" width="400" /></a>
</div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I chose</span> <a href="http://openmrs.org/" target="_blank">OpenMRS</a><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> as my organization. Why? After taking a look at Gsoc list</span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">, Among all these projects, organizations the
relatively coolest Project is called "<b>OpenMRS</b>" which is my favorite. I loved their idea.
"Write Codes, Save Lives!" As it sounds, its a Medical Record Management System, which is widely used in many countries globally as a Free and Open source software product. And that’s totally
awesome! I really wanted to be part of this wonderful project. No matter even after the end of Gsoc 2012, for sure I will remain with this marvelous Open Source Community. So, when
did I start to get involved? It was year 2012, January. Yeah I started bit early cause I had a serious intension to get through gsoc this year. </span></span></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="87" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmDKOhU13deeTTLzhV6VZCOfrF-QSX1sPhWwV4Z5TFgpWwhmYC2jZNGjOHgtm2uM64sezuwM7U_sJLr6CxJME-JhhITOmjGjXS5MHMzSobPqB7VARcTMhkfvR52rYrlMxsL5GbVwM8ryVh/s320/OSW_logo_rgb.jpg" width="320" /></div>
<br />
<br />
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Before started contributing OpenMRS, I have completed a 6 months Internship at hSenid Mobile where I gained lots of experience in Industrial Software Engineering. Those experience at office was really helpful for me to work in OpenMRS project as both Organizations were using almost the same technologies for developing stuff. I am pretty much familiar with J2EE and related its Technologies as OpenMRS uses J2EE at its core too. I still remember the great supervision I got from Mr. Jason, Mr. Romith </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">and</span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Mr. Thilina </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">at hSenid Mobile. </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">In this occasion </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I should advert them too.</span></span></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
</div>
<br />
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">In the pre-gsoc period I was gathering information about Gsoc. </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">These days </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Pradeeban Ayya, Nirmal Ayya, Suhothayan Ayya helped me a lot to get a quick jump start. </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">(Sorry! "Ayya" means brother in my mother lang :) Specially </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Pradeeban Ayya did a excellent job from his <a href="http://kkpradeeban.blogspot.com/" target="_blank">Blog Articles</a> to teach us the Basics of Gsoc, IRC/Mailing list Ethics and other random facts of a Open Source Communities. I attend to Apache BarCamp (Thanks to WSO2) held at University of Colombo, SriLanka which I have learnt lots of Gsoc related stuff (How, why, what?) and how self motivation affects to get through gsoc. </span></span><br />
<br /></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEEjjXltdRidkJOHnmH67bJAlSlQSQRl8s5IxY_AJSTUd6BVTilwxb5qDz94_JlcLC_NEHqnWh4_0LPp1Y0IVLfbNOs9ierr893gYAMuqlgLncbjOfLZimZwq3uByydlIJbON-utBf8WG2/s320/immagine_opensource.gif" width="320" /></div>
<br /></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">And finally, I worked with Gaurav Paliwal, Suranga Kasthurirathne, who are </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Senior </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Developers and </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Mentors</span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> of OpenMRS. They were really, really
helpful. Guided me right from basics of OpenMRS and helped me out at
every difficult stage of the project. And whole</span></span><span style="color: black;"> OpenMRS Developers Community was wonderful. Whenever </span><span style="color: black; font-size: small;"><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I got problems regarding developments, fixing bug tickets</span></span><span style="color: black;">, </span><span style="font-size: small;"><span style="color: black;"></span></span><span style="color: black;">replied</span><span style="font-size: small;"><span style="color: black;"> as soon as </span></span><span style="font-size: small;"><span style="color: black;">they</span></span><span style="font-size: small;"><span style="color: black;"> got time to answer via IRC and Mailing lists.</span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span style="color: black;"> </span></span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">That’s totally cool!</span></span><br />
<br /></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span style="color: black;">I</span> hacked a bit of OpenMRS Core modules and <a href="https://tickets.openmrs.org/browse/TRUNK-2768" target="_blank">Patched</a> few tickets. I almost spent my time Coding OpenMRS for more than 9 hours a day in those previous months since Feb 2012. Earlier January of 2012, I have done an interesting OpenMRS English to Sinhala <a href="http://gsoc.harshadura.net/2012/03/screen-shots-of-sinhala-localized.html" target="_blank">Localization</a> contribution with the help of several people. That was a significant milestone of my OpenMRS related work, which really grew-up my love towards OpenMRS.</span></span></div>
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></span>
<br />
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Then
came the news of GSoC 2012. And OpenMRS made its way to the selected organizations list this time too! So It was a great pleasure for me knowing that I
had the chance to work on my favorite project as part of Google Summer of Code 2012.</span></span></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp4wTn9tuWBA5UFL_Do-juqVvx2ccLOEp7WbDJUwSE0LtxK1OribXX5_z99_D4PCxQhkSBgH3xrC4WInk9M-fskYs7cITcj1_7FJDYsZDi6Po518yLNiUFtgyq6xFfLySqpF8dMjVrnuHR/s400/open-source-logos.png" width="400" /></div>
<br /></div>
<div dir="ltr" style="color: black; margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
I started preparing the <a href="http://www.harshadura.net/2012/04/gsoc-proposal.html" target="_blank">Proposal for Better Error Submission Process for FDBK Module</a> which is an extension of the
project General Feedback Mechanism in OpenMRS. The main objective of the Feedback
module is to provide a mechanism for users to communicate with system
supporters/admins with system-related (not patient-specific) messages,
refactoring the error submission process and make it more easy and
effective preferably a wizard driven one. Finally I thought only to stick with this project idea as my main Gsoc Proposal and tried to make it more effective and a Strong one.</div>
</div>
<div dir="ltr" style="font-family: Arial,Helvetica,sans-serif; text-align: left;">
<span style="font-size: small;"><br /></span>
<br />
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">And after all the discussions, I was able to fine tune my Project proposal and</span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> submitted.
The list of accepted proposals were out by GMT 1900 hours (00.30 AM in here) on April
23rd, 2012 on the Google melange site and I was glad to see my name on <a href="http://www.google-melange.com/gsoc/projects/list/google/gsoc2012" target="_blank">the List</a> and on the OpenMRS 2012 GSoccers <a href="http://go.openmrs.org/soc2012" target="_blank">Landing page</a>. </span></span><br /></div>
<br />
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV39XWoCNaWq24vSgCYq_GGlsY9QorPUKY19lhk9BBxZ3YDlF5v03B8j0Grxq3qQea09Omhfo6Wrr1Z0GVvNM_XIO6U13obWjb4XF94BztuoNVq5BhnkQIF3USBaYuxKhhsnKpF6ZrKX5o/s1600/tweet.png" /><br />
<br />
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">So now (as soon as my Final exam finishes in May 4th) </span></span><span style="font-size: small;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I am going to work in one of the coolest projects in the
open source world as part of the Google Summer of Code. I am really
proud and happy to be at this place!</span></span><br />
<br />
<br /></div>
</div>
Thanks for Reading my Gsoc-Story this far! :)<br />
<br />
Regards,<br />
harshadura<br />
<br />
______________________ <br />
Other related Links.<br />
<ol>
<li><a href="https://docs.google.com/spreadsheet/ccc?key=0Akm7AGRkqitOdGpGNklsZEo4bEdocWc5ZEYtMGxYbVE#gid=0" target="_blank"><span class="docs-title docs-title-disabled" id="docs-title" role="button">GSoc 2012 - Accepted Students From Sri Lanka</span> </a></li>
<li><a href="https://wiki.openmrs.org/display/RES/Summer+Of+Code+2012" target="_blank">OpenMRS - GSoC 2012 Landing Page</a></li>
<li><a href="http://www.google-melange.com/gsoc/projects/list/google/gsoc2012" target="_blank">List of all projects accepted into GSoC 2012</a></li>
<li><a href="http://www.harshadura.net/2012/04/gsoc-proposal.html" target="_blank">Project Proposal - Better Error Submission Process for FDBK Module</a></li>
</ol>harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com0tag:blogger.com,1999:blog-3044728152001000182.post-40907020196030959932012-03-11T14:00:00.000+05:302012-03-11T17:54:25.089+05:30Screenshots of the Sinhala Localized version of OpenMRS<div style="text-align: left;">
After a certain amount of translation (50% out of full) I
have hosted the OpenMRS web app on Amazon EC2 server and added the
translated message.properties file into the corresponding location and
let the people to enjoy the Localized version of OpenMRS :)<br />
<br />
I have shutted down that EC2 server after couple of days of public release because its like unnecessary spend of money for EC2 Servers. I forgot to take screen shots when it was hosted on EC2 but here are screenshots from my localhost.</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQSXFKaMaGFTW4t5lzD8QF2RIAW32VxtlumZvpl6_0t82Af4z1Q2icEk_XpiOeFp5vc-DYPgZ4GzT6EW2YHeMg1A22iH__ualx5vuoBxO6UFYwgTkqGSg1hm3aYp_rA9eX0gtEtEULwn_E/s1600/login.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQSXFKaMaGFTW4t5lzD8QF2RIAW32VxtlumZvpl6_0t82Af4z1Q2icEk_XpiOeFp5vc-DYPgZ4GzT6EW2YHeMg1A22iH__ualx5vuoBxO6UFYwgTkqGSg1hm3aYp_rA9eX0gtEtEULwn_E/s640/login.png" width="640" /></a></div>
<div style="text-align: center;">
Login Screen </div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih1qoJbXiwIWBqLeV9fX4FuT83Oib6tRK6AeAPmdZ9NBnzodWRhfr2m6er9tft1HWbtNapkaGENOYZep15MaQtJKpX8Cmyn4lnvpYLkkjUFs-czWCJ4DRq6dfWlKEPH2tjPGIHUl6YDaBS/s1600/welcome.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih1qoJbXiwIWBqLeV9fX4FuT83Oib6tRK6AeAPmdZ9NBnzodWRhfr2m6er9tft1HWbtNapkaGENOYZep15MaQtJKpX8Cmyn4lnvpYLkkjUFs-czWCJ4DRq6dfWlKEPH2tjPGIHUl6YDaBS/s640/welcome.png" width="640" /></a></div>
<div style="text-align: center;">
Welcome Screen </div>
<div style="text-align: center;">
<br />
<br />
<br /></div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisfSZlLA6VYbEn-K870KAaK5INKD9LNpQuXbNysHZF6s2aMzhP-meIqtgrv4GfvlsE9kzHiCgyPLGLHCBjNFKm8Jr_7v9dUPY5gzAQ1BNFqqd1hw4ChRRdIlU7doLyk-lDPjW20-MjIcUp/s1600/Proposed+Concept+Management.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisfSZlLA6VYbEn-K870KAaK5INKD9LNpQuXbNysHZF6s2aMzhP-meIqtgrv4GfvlsE9kzHiCgyPLGLHCBjNFKm8Jr_7v9dUPY5gzAQ1BNFqqd1hw4ChRRdIlU7doLyk-lDPjW20-MjIcUp/s640/Proposed+Concept+Management.png" width="640" /></a></div>
<div style="text-align: center;">
Proposed Concept Management Screen </div>
<div style="text-align: center;">
<br />
<br />
<br /></div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBfVxec8RFMp6EqEaI0KYaqxTHMAtEp0TeK4pxvnYGdba3CzeK72eLxuhWCwuC-FfvPSJtLrdq1yGQq6LOsIKTwinwASCXSkg8jtoUGTyd5oD1A6BZHQZ_IwoNvUvizgUnHxvPshh9GTJ5/s1600/admin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBfVxec8RFMp6EqEaI0KYaqxTHMAtEp0TeK4pxvnYGdba3CzeK72eLxuhWCwuC-FfvPSJtLrdq1yGQq6LOsIKTwinwASCXSkg8jtoUGTyd5oD1A6BZHQZ_IwoNvUvizgUnHxvPshh9GTJ5/s640/admin.png" width="640" /></a></div>
<div style="text-align: center;">
Admin Screen<br />
<br />
<br />
</div>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnYuWeZYOJvANPfAExTMi3dkUAXW-4s_Qbx8c6vlnXjam-Dpf_x2jZwNNNv8IJ1rofLizVFT0Ap4OSeokDqVUg0QVA0rFX_tzMufEuSYapj4FAmC-45JTJFLizQK_qLCUGOB_OM3OFyrmQ/s1600/help.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnYuWeZYOJvANPfAExTMi3dkUAXW-4s_Qbx8c6vlnXjam-Dpf_x2jZwNNNv8IJ1rofLizVFT0Ap4OSeokDqVUg0QVA0rFX_tzMufEuSYapj4FAmC-45JTJFLizQK_qLCUGOB_OM3OFyrmQ/s640/help.png" width="640" /></a></div>
<div style="text-align: center;">
Help Screen
</div>harshadurahttp://www.blogger.com/profile/01499886747991963391noreply@blogger.com1