IRC Chat : 2011-06-29 - OpenMRS

00:03:09 *** Echidna has quit IRC
00:17:55 <djazayeri> wyclif: you didn't run unit tests after removing the OrderType class...
00:17:58 <djazayeri> tsk tsk
00:18:47 <wyclif> nope
00:18:51 <OpenMRSBot> Recent updates in the world of openmrs: New Changeset: OpenMRS (order-entry): Removing OrderType Class <http://feedproxy.google.com/~r/OMRStrunk/~3/VCKaEuuUWIo/OpenMRS>
00:19:00 <djazayeri> I'll take care of it.
00:19:02 <wyclif> my intention was to just remove it
00:19:14 <djazayeri> you forgot to remove it from hibernate.cfg.xml
00:19:18 <wyclif> i have all this in one changeset
00:19:27 <wyclif> unit tests can in a separate one
00:19:36 <wyclif> oops!
00:20:55 <djazayeri> I don't mind if you write the unit tests a bit later, just make sure not to break all the others. ;-)
00:26:03 <djazayeri> wyclif, if you're still working now, I just made a commit such that if you do an svn update, you will have to do Maven -> Update Project Configuration on all your orderentry projects.
00:26:39 <wyclif> OK
00:30:14 *** asgoyal has quit IRC
00:47:44 *** mandric has joined #openmrs
00:51:58 <OpenMRSBot> Recent updates in the world of openmrs: New Changeset: OpenMRS (order-entry): Fix unit tests outside of OrderServiceTest - TRUNK-2427 <http://feedproxy.google.com/~r/OMRStrunk/~3/gXdFDvKMCpY/OpenMRS> || New Changeset: OpenMRS (order-entry): formatting <http://feedproxy.google.com/~r/OMRStrunk/~3/TkDLEEUZIzU/OpenMRS> || New Changeset: OpenMRS (order-entry): Changing artifactId in all our pom.xml files in this branch so that it is distinguished from trunk in our local maven re... <http://feedproxy.google.com/~r/OMRStrunk/~3/ZWqoPvWdHKY/OpenMRS>
00:54:22 *** jwishnie has quit IRC
00:54:35 *** jwishnie has joined #openmrs
01:01:38 *** jwishnie_ has joined #openmrs
01:04:31 *** jwishnie has quit IRC
01:04:31 *** jwishnie_ is now known as jwishnie
01:05:22 *** asgoyal has joined #openmrs
01:05:38 <asgoyal> I am facing a problem after I upgraded my ubuntu
01:05:55 <asgoyal> when i run a selenium test, the browser opens up but blank
01:06:17 <asgoyal> and the log says after sometime that unable to start localhost at port 7500
01:06:20 <asgoyal> something..
01:07:15 <asgoyal> 2011-06-28 21:04:07.675::INFO: Started SelectChannelConnector@0.0.0.0:8080 org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms
01:07:56 <asgoyal> what changes do i have to do to make it work?
01:09:57 <asgoyal> djazayeri: can you help me with this?
01:44:26 *** mandric has quit IRC
01:58:03 <OpenMRSBot> Recent updates in the world of openmrs: New Changeset: OpenMRS (order-entry): Removing manage order type admin page, order-type related code in openmrs-servlet.xml and hibernate mapping file <http://feedproxy.google.com/~r/OMRStrunk/~3/e9Jw9bqfbVw/OpenMRS>
02:01:55 <djazayeri> asgoyal: ben mentioned something about that this morning
02:02:03 <djazayeri> something about a compatibility issue with firefox 5 i think
02:02:15 <djazayeri> and he was able to work around it by switching to the chrome driver
02:02:18 <djazayeri> that's all I know
02:02:29 <djazayeri> (you might look at the irc logs from this morning)
02:04:16 *** yanokwa has quit IRC
02:10:11 *** jwishnie has quit IRC
02:31:41 <asgoyal> oh my god... then i did a big mistake upgrading my OS
02:31:45 <OpenMRSBot> Recent updates in the world of openmrs: OpenMRS Forum: Request Installatio <http://forum.openmrs.org/viewtopic.php?f=11&t=787#p2984> || OpenMRS Forum: Request Installation <http://forum.openmrs.org/viewtopic.php?f=11&t=786#p2983>
02:44:43 *** downeym has joined #openmrs
02:44:43 *** OpenMRSBot sets mode: +o downeym
02:44:43 *** ChanServ sets mode: +o downeym
02:45:01 *** downeym has quit IRC
02:57:09 *** mandric has joined #openmrs
03:07:11 *** mandric has quit IRC
03:07:55 *** mandric has joined #openmrs
03:08:42 *** gbastien has quit IRC
03:08:45 *** gbastien_ has quit IRC
03:15:24 *** upul` has joined #openmrs
03:15:24 *** ChanServ sets mode: +v upul`
03:24:05 *** pusakat has joined #openmrs
03:38:11 <OpenMRSBot> Recent updates in the world of openmrs: OpenMRS Modules: i2b2 Export 1.0.4 uploaded to OpenMRS Module Repository <https://dev.openmrs.org/modules/view.jsp?module=i2b2export&version=&1.0.4>
03:40:47 *** surangak has joined #openmrs
04:21:45 *** nribeka has quit IRC
04:38:44 *** mandric has quit IRC
04:48:27 *** Echidna has joined #openmrs
04:48:27 *** ChanServ sets mode: +v Echidna
04:58:11 *** gauravpaliwal has joined #openmrs
04:58:11 *** ChanServ sets mode: +v gauravpaliwal
05:01:14 *** asgoyal has quit IRC
05:16:17 *** gauravpaliwal has quit IRC
05:22:09 *** gauravpaliwal has joined #openmrs
05:22:09 *** ChanServ sets mode: +v gauravpaliwal
05:25:43 <gauravpaliwal> Hi djazayeri
05:48:18 <OpenMRSBot> Recent updates in the world of openmrs: New Changeset: OpenMRS (obs-codes-expanded): Front end changes to support handler config <http://feedproxy.google.com/~r/OMRStrunk/~3/yhyBBDaLKZ8/OpenMRS>
06:09:09 *** gauravpaliwal has left #openmrs
06:10:20 *** goutham has joined #openmrs
06:21:03 *** gauravpaliwal has joined #openmrs
06:21:03 *** ChanServ sets mode: +v gauravpaliwal
06:28:57 *** gauravpaliwal has left #openmrs
06:52:43 *** pascal` has joined #openmrs
06:54:41 *** ChanServ sets mode: +v pascal`
07:20:53 *** dkayiwa has joined #openmrs
08:04:42 *** bwolfe has joined #openmrs
08:04:42 *** ChanServ sets mode: +o bwolfe
08:24:36 *** bwolfe has quit IRC
08:45:33 *** danielf` has joined #openmrs
08:45:33 *** ChanServ sets mode: +v danielf`
08:49:54 *** sreya has joined #openmrs
08:50:01 <sreya> hi all
08:50:19 <sreya> can anyone tell me if the services which we deploying are singleton
08:50:59 <sreya> or everytime the context is refreshed a new object of the service is getting creates
08:55:17 <dkayiwa> hi sreya
08:55:25 <sreya> hey
08:55:32 <dkayiwa> as far as i know, they are singletons
08:55:37 <sreya> i am stuck up in major thing
08:55:42 <sreya> no they are not
08:55:46 <dkayiwa> aha :)
08:55:51 <sreya> atleast not behaving like one
08:55:56 <sreya> ok
08:56:16 <dkayiwa> what problem do u face?
08:56:16 <pascal`> I don't think they're singletons, but there should only ever be one instance of them.
08:56:20 <sreya> MessageSourceServiceImpl have two instance variables
08:56:31 <pascal`> They're initialized on webapp startup afaik.
08:56:40 <dkayiwa> yes thats correct
08:56:57 <sreya> one is a set<MutableMessageSource> and the other is MutableMessageSource
08:57:00 <dkayiwa> do you at any one time have more than one instance?
08:57:27 <sreya> yes
08:57:38 <dkayiwa> of which service?
08:57:56 <pascal`> How are determining that there's more than one instance?
08:57:56 <sreya> when i inject one more property to it
08:57:56 <sreya> let me explain the scenario
08:58:02 <dkayiwa> ok
08:58:04 <sreya> it should add in the set
08:58:31 <sreya> the set should retain the properties , if there is only one instance of the service
08:58:35 <sreya> am i right ?
08:58:54 <pascal`> Unless there's a problem with the code.
08:59:15 <sreya> but every time the set has one property
08:59:47 <dkayiwa> am not getting you properly
08:59:49 <sreya> and even if it had my service as the activeMessageSource
09:00:06 <sreya> wait i will tell u my problem in detail
09:00:17 <pascal`> Are you sure every element you're adding to the set is a different object, and not the same object?
09:00:28 <sreya> 1. my module should act as a alias to the messagesourceservice
09:00:38 <sreya> yes , i am sure
09:00:44 <pascal`> Maybe write a method in your service to add to the set, and then include some debugging info in that method.
09:00:56 <sreya> cant do that
09:01:00 <OpenMRSBot> Recent updates in the world of openmrs: New Changeset: OpenMRS (improved-person-attribute-type): unit test for PersonAttributeType <http://feedproxy.google.com/~r/OMRStrunk/~3/iBe5RUxq80k/OpenMRS> || New Changeset: OpenMRS (order-entry): Adding the copyForModification method for orders - TRUNK-2369 <http://feedproxy.google.com/~r/OMRStrunk/~3/jqm0n7l7wgs/OpenMRS>
09:01:03 <sreya> the set is not in my cod e
09:01:11 <sreya> 1. my module should act as a alias to the messagesourceservice
09:01:53 <sreya> 2. so instead of using MutableResourceBundleMessageSource it should take my class
09:02:32 <sreya> so i added something like this in my moduleApplicationContext
09:02:33 <sreya> <bean parent="messageSourceServiceTarget" class="org.openmrs.messagesource.impl.MessageSourceServiceImpl"> <property name="activeMessageSource"><ref bean="BasicServiceTarget"/> </property> </bean>
09:03:08 <sreya> BasicServiceTarget is my alias service which implements org.openmrs.messagesource.MutableMessageSource
09:03:12 <sreya> ok
09:04:03 <sreya> now MessageSourceServiceImpl should delegate the task to my service instead of MutableResourceBundleMessageSource
09:04:09 <sreya> am i clear
09:04:14 <sreya> pascal`: dkayiwa
09:04:38 <sreya> u guys there pascal` dkayiwa
09:04:48 <dkayiwa> yes i am
09:05:39 <sreya> so even if in the set<MutableMessageSource> my service name appears
09:05:50 <sreya> the tasks are not getting delegated
09:06:18 <sreya> coz from somewhere the activeMessageSource is pointing to the same old service
09:06:35 <sreya> activeMessageSource variable should be pointing to my service
09:07:10 *** rafa has joined #openmrs
09:07:10 *** ChanServ sets mode: +v rafa
09:07:46 <sreya> what should i do
09:10:31 <dkayiwa> am thinking about it for ideas
09:10:47 <sreya> can i show you what i am facing
09:10:54 <dkayiwa> yes
09:10:55 <sreya> by a screen share
09:10:58 <dkayiwa> ok
09:16:27 *** sreya_ has joined #openmrs
09:16:52 <sreya_> dkayiwa: do you have a skype id
09:17:08 <dkayiwa> yes
09:17:16 <dkayiwa> kayiwadaniel
09:17:32 *** sreya has quit IRC
09:36:31 <sreya_> i tried making the set as static but it goes on adding multiple instances of MutableResourceBundleMessageSource
09:36:52 <dkayiwa> ok
09:37:23 <dkayiwa> which set did u make static
09:38:57 <sreya_> so that it retains the value
09:39:11 <dkayiwa> sreya_: when the app is redeployed, new instances of the services are created and the old ones are destroyed
09:39:53 <sreya_> even if the context is refreshed
09:40:36 <dkayiwa> yes when context is refreshed, services are destroyed and new ones created
09:42:53 <dkayiwa> is this the way you expected it?
09:43:03 <dkayiwa> sreya_
09:43:10 <sreya_> yes
09:43:26 <sreya_> no i didnot expect it that way
09:43:49 <sreya_> i am only saying the values should be retained in a set
09:44:18 <sreya_> every time the method setActiveMessageSource is called the set should not be null
09:44:32 <sreya_> coz the set is an instance variable
09:45:38 <dkayiwa> the set is never null because its initializes on class declaration
09:45:49 <sreya_> yes
09:46:02 <sreya_> but when i am adding something to it
09:46:09 <sreya_> the data should stay
09:46:12 <sreya_> isnit
09:46:17 <dkayiwa> yes
09:46:34 <sreya_> the set is empty all the time
09:47:04 <sreya_> when i deploy my application it shows activeMessageSource -= myservice
09:47:14 <dkayiwa> ok
09:47:27 <sreya_> then i dont know how but it resets to the olderservice
09:47:42 <dkayiwa> can u put a break point
09:47:52 <dkayiwa> to see when its reset
09:48:21 <sreya_> no i dont know that only how is it resetting
09:48:31 <sreya_> see if you look at the code
09:48:44 <sreya_> setActiveMessageSource(MutableMessageSource activeMessageSource)
09:49:07 <sreya_> when i am deploying my service this method is getting called twice
09:49:33 <sreya_> one for the messageService itself and one time for my module
09:50:07 <sreya_> now in the normal scenario when the message is getting called twice it should fill the set with two values
09:50:11 <sreya_> isnit
09:50:39 <sreya_> but here for every call to this method there is only one value
09:51:03 <dkayiwa> which i set first
09:51:14 <dkayiwa> yours or the default one
09:53:21 <sreya_> default one
09:53:31 <sreya_> then mine
09:53:37 <dkayiwa> ok
09:53:39 <sreya_> then it resets to the default
09:53:52 <dkayiwa> is the reset done on a third call?
09:54:40 <sreya_> no
09:54:58 <sreya_> the third time it does not call the method
09:55:15 <dkayiwa> so when does it get reset to the default one?
09:55:47 <sreya_> then when i refresh the page <spring:messagecode="patient> will call the messageServiceImple which in turns delegate the call to
09:56:19 <sreya_> activeMessageSource , which is unfortunately pointing to the older value n not the latest one
09:56:28 <dkayiwa> are u commiting your code anywhere?
09:56:33 <dkayiwa> i could have a look at it
09:56:36 <sreya_> i dont know how its getting reset
09:56:39 <sreya_> no
09:56:52 <sreya_> coz i am just testing a way to hook it
09:57:03 <sreya_> i can send you the files though
09:57:09 <dkayiwa> ok
09:57:15 <sreya_> ur mail
09:57:31 <dkayiwa> kayiwadaniel
09:57:42 <sreya_> @openmrs.com
09:57:44 <sreya_> ??
09:57:54 <dkayiwa> dkayiwa
09:58:00 <dkayiwa> .org
09:58:22 <dkayiwa> @openmrs.org
09:58:24 <dkayiwa> for dkayiwa
09:59:10 <sreya_> did you get my mail
10:00:06 <dkayiwa> use .zip
10:00:59 <sreya_> ok
10:04:06 <sreya_> sedn
10:04:16 <sreya_> sent*
10:04:46 <surangak> dkayiwa, hi, hope you are planning to attend todays design call ?
10:04:54 <surangak> dkayiwa, this is a reminder :P
10:04:55 <dkayiwa> yes
10:05:05 <dkayiwa> :)
10:05:05 <surangak> dkayiwa, (thumbs up)
10:05:12 <dkayiwa> :D
10:05:13 <surangak> dkayiwa, the more ppl the merrier
10:05:22 <dkayiwa> sure :)
10:08:06 <dkayiwa> sreya_
10:08:12 <sreya_> yes
10:08:13 <dkayiwa> dont you have an svn account
10:08:14 <dkayiwa> ?
10:08:18 <sreya_> i have
10:08:27 <dkayiwa> and space for you module in svn?
10:08:29 <sreya_> but i have my main code in there
10:08:37 <dkayiwa> why dont you commit there?
10:08:42 <sreya_> i dont want to spoil what running
10:08:55 <sreya_> i am just trying in bits
10:09:05 <dkayiwa> with svn you are revert to a previous revision
10:09:12 <dkayiwa> you can
10:09:17 <sreya_> i mean i just want to check how the module will get hooked to the trunk
10:09:26 <dkayiwa> you could even tag and branch
10:09:34 <sreya_> ok
10:09:49 <sreya_> do you want me to branch it
10:10:23 <dkayiwa> that would be more appropriate if you are just experimenting with stuff you do not want in your trunk
10:12:23 <sreya_> ok
10:12:48 <sreya_> would you take the cod efrom there
10:13:02 <dkayiwa> dont worry u do not have to do it now
10:14:53 <dkayiwa> so i deploy the org.openmrs-omod-1.0-SNAPSHOT.omod?
10:15:25 <sreya_> yes
10:15:27 <sreya_> please
10:17:12 *** bwolfe has joined #openmrs
10:17:12 *** ChanServ sets mode: +o bwolfe
10:18:48 <sreya_> r u debugging it dkayiwa ??
10:18:54 <dkayiwa> yes
10:19:10 <sreya_> ok
10:23:37 <bwolfe> good afternoon everyone
10:23:50 <dkayiwa> good afternoon bwolfe
10:24:03 <surangak> bwolfe, good afterrnoon
10:24:15 <surangak> bwolfe, so will i be seeing you at the design call today :)
10:24:28 <goutham> bwolfe: very good afternon
10:26:26 <dkayiwa> sreya_: deployed your module and setActiveMessageSource is called twice
10:26:33 <sreya_> yes
10:26:41 <sreya_> i know
10:26:42 <dkayiwa> none of those has your version
10:26:56 <dkayiwa> your version of MutableMessageSource
10:27:35 <sreya_> setActiveMessageSource is getting called for older service n the my new class
10:27:50 <bwolfe> surangak, yes, I will be on the design call this week. I was on holiday last wednesday and so couldn't join
10:27:51 <sreya_> please check in modulecontext.xml
10:28:14 <surangak> bwolfe, (thumbs up)
10:28:15 <dkayiwa> whats the name of your class sreya_
10:28:18 <sreya_> <bean parent="messageSourceServiceTarget" class="org.openmrs.messagesource.impl.MessageSourceServiceImpl"> <property name="activeMessageSource"><ref bean="BasicServiceTarget" /> </property> </bean>
10:28:33 <sreya_> the important part is using the parent tag
10:28:55 <sreya_> BasicServiceImpl dkayiwa
10:31:37 <upul`> good afternoon bwolfe
10:31:49 <bwolfe> upul`! long time no see!
10:31:53 <bwolfe> how's life?
10:32:33 <upul`> going okay
10:32:48 <upul`> bwolfe: what was the code review tool that was used before the crucilbe
10:33:00 <bwolfe> uh, just some screensharing
10:33:26 <bwolfe> we all got on a 2 hour call twice a week and everyone connected to a screensharing site and we walked through code!
10:33:29 <bwolfe> it was brutle
10:33:32 <bwolfe> *brutal
10:33:54 <upul`> bwolfe: so there was nothing before crucible, i remember there was something to add comments to each line
10:34:03 <dkayiwa> sreya_: now seen the second call for your module's class. so what should i test?
10:34:28 <sreya_> now it means that activeMessageSource = my class
10:34:34 <dkayiwa> yes
10:34:42 <bwolfe> upul`, that was crucible. might have been an earlier version of it
10:34:57 <upul`> bwolfe: ah, ok
10:35:10 <sreya_> now when you try n refresh the page
10:35:25 <dkayiwa> sreya_: which page?
10:35:27 <sreya_> but a break point in the messageSouceService
10:35:42 <sreya_> for getMessage
10:36:17 <dkayiwa> which page should i refresh?
10:36:27 <sreya_> the main idea is when <spring:messagecode="index.title"> gets executed , it should invoke the messagesourceservic
10:36:39 <sreya_> which will delegate the call to the activeMessageSource
10:36:47 <sreya_> which is now pointing to my class
10:37:31 <sreya_> but if you put a break point n see , the activeMessageSource of the service is pointing to the older class n not mine
10:37:42 <sreya_> dkayiwa:
10:37:56 <dkayiwa> sreya_ which page should i refresh?
10:38:03 <sreya_> any page
10:38:17 <sreya_> all of them use <spring:message>
10:39:07 <dkayiwa> am doing a refresh of the admin page and some how my break point is not hit
10:39:18 <dkayiwa> does it on yours sreya_?
10:39:27 <sreya_> make sure the break points is at
10:39:53 <sreya_> public String getMessage(String code, Object[] args, Locale locale) throws NoSuchMessageException { return activeMessageSource.getMessage(code, args, code, locale); }
10:40:03 <sreya_> line no 122
10:40:07 <sreya_> in eclipse
10:40:13 <sreya_> dkayiwa:
10:40:50 <dkayiwa> ok
10:47:40 <dkayiwa> sreya_: yes i can now see two instances
10:47:54 <sreya_> ok
10:48:30 <sreya_> did u see it activeMessageSource is pointing to the older service only
10:48:41 <dkayiwa> yes
10:53:50 <sreya_> now what do i do ??
10:54:00 <dkayiwa> looking into it now
10:56:56 *** james_regen has joined #openmrs
10:56:56 *** ChanServ sets mode: +v james_regen
10:58:07 <sreya_> dkayiwa: i will log in in few minutes
10:58:12 <sreya_> would that be fine
10:58:13 <dkayiwa> ok
11:02:46 *** sreya_ has quit IRC
11:03:50 <dkayiwa> hi bwolfe: i have a small question
11:04:12 <bwolfe> ok
11:04:52 *** bryq has joined #openmrs
11:04:52 *** ChanServ sets mode: +v bryq
11:05:09 <dkayiwa> bwolfe: is there any relationship between getMessageSourceAccessor() and messageSourceService?
11:05:56 <bwolfe> mss is registered as the msa in openmrs-servlet.xml when you see the <alias .... for messageSource >
11:06:56 <dkayiwa> ok
11:09:06 <OpenMRSBot> Recent updates in the world of openmrs: OpenMRS Forum: Re: Request Installation <http://forum.openmrs.org/viewtopic.php?f=11&t=786#p2985>
11:18:39 *** sreya has joined #openmrs
11:20:58 <sreya> hi dkayiwa
11:21:02 <sreya> i am back
11:21:06 <dkayiwa> ok
11:28:05 <dkayiwa> sreya_ can u ask Ben?
11:28:43 *** upul` has quit IRC
11:30:09 <sreya> about
11:30:25 <sreya> dkayiwa:
11:30:30 <dkayiwa> about the problem you are getting
11:30:40 <sreya> ok
11:32:54 <sreya> bwolfe: u there
11:32:59 <bwolfe> no
11:33:08 <sreya> hey
11:33:13 <bwolfe> I'm not there. I'm here
11:33:16 <dkayiwa> :)
11:33:18 <bwolfe> ;-)
11:33:21 <sreya> still stuck with the same thing
11:33:44 <sreya> now my service is getting called into setActiveSource
11:34:15 <sreya> you remember i was mentioning the set is not retaining the values
11:34:28 <sreya> we discussed we would make it static
11:35:13 <bwolfe> right
11:35:59 <sreya> well when i did that every time the context was getting refreshed a new MutableResourceBundleMessageSource is getting added
11:39:14 <bwolfe> right, so you should change it to be a set instead of a list
11:39:23 <bwolfe> or check to see if its in the list already
11:39:38 <sreya> it is already a set
11:40:33 <sreya> everytime the context is getting refreshed a new object of MutableResourceBundleMessageSource is inserted
11:40:45 <bwolfe> oh, then its getting in there multiple times because its a new object and a new hashcode
11:41:02 <bwolfe> so you need to iternate and check for the name of the class being in there already. if it is, remove that object and put your new object in
11:43:41 <sreya> ok
11:43:46 <sreya> i would try it
11:58:52 <sreya> bwolfe: the problem now is
11:59:18 <sreya> even if i set my activeMessageSource = myservice
11:59:43 <sreya> when getMessage of the service is being called
12:00:00 <sreya> the service delegates it to activeMessageSource
12:00:32 <bwolfe> but isn't activeMessageSource your service?
12:00:39 <bwolfe> or is it going to a diff class?
12:00:44 <sreya> so theorotically it should call my service since now activeMessageSource i have made it to point my service
12:01:29 <sreya> but then to when getMessage of service is being called i dont know from where but activeMessageSource points backs to the old service
12:03:52 <bwolfe> heh
12:04:03 <bwolfe> its probably because spring isn't working how you think it is :-)
12:04:13 <bwolfe> every time you call a bean it is creating a new object
12:04:24 <bwolfe> and even when you use the "parent" tag, its creating a new object
12:05:00 <bwolfe> so the original object is getting set to a spring class (like with the alias to the messageSource), but when you override it, you're not really changing the pointer to that and the original class still has the object as registered
12:05:44 <sreya> the pointer is getting changed
12:06:04 <sreya> but it is again getting redirected to the old object
12:06:15 <sreya> can i show you what am i talking about
12:06:44 <sreya> on skype
12:06:50 <sreya> can i have ur skype id
12:08:18 <sreya> yes i got it
12:08:27 <sreya> so what do we do now
12:08:37 <sreya> how can i hook it to my service
12:08:40 <sreya> bwolfe:
12:09:39 <bwolfe> send me a patch file of what you're doing now
12:12:02 <sreya> well i changed some thing in trunk to
12:12:17 <sreya> the application-context.xml
12:12:33 <sreya> would send you all the patches
12:17:09 *** bwolfe has quit IRC
12:19:02 *** sreya has quit IRC
12:19:51 *** wyclif has quit IRC
12:21:29 *** downeym has joined #openmrs
12:21:29 *** ChanServ sets mode: +o downeym
12:21:29 *** OpenMRSBot sets mode: +o downeym
12:23:26 *** goutham has quit IRC
12:29:43 *** bwolfe has joined #openmrs
12:29:43 *** ChanServ sets mode: +o bwolfe
12:54:47 *** cta has joined #openmrs
12:54:52 <cta> hello
12:59:22 *** gbastien has joined #openmrs
12:59:39 *** gbastien has joined #openmrs
13:00:56 <surangak> cta, hi
13:01:11 <surangak> cta, is that u on the freeconferencing line ?
13:01:25 <cta> no, I'm not
13:01:38 <surangak> cta, sorry my mistake...
13:01:49 <cta> np
13:04:51 *** gbastien has quit IRC
13:05:45 *** bwolfe has quit IRC
13:14:18 *** wyclif has joined #openmrs
13:17:03 *** gbastien has joined #openmrs
13:17:52 *** asgoyal has joined #openmrs
13:21:21 *** guduji has joined #openmrs
13:21:29 <guduji> hi
13:21:35 <downeym> Hi guduji and welcome to the #openmrs IRC channel.
13:22:42 *** asgoyal_ has joined #openmrs
13:23:44 <dkayiwa> hi surangak
13:24:41 <guduji> hi dkayiwa :)
13:24:48 <dkayiwa> :)
13:25:10 <guduji> ready for some questions? :D
13:25:22 <dkayiwa> yes. :)
13:25:36 *** bwolfe has joined #openmrs
13:25:36 *** ChanServ sets mode: +o bwolfe
13:25:43 <guduji> haha well i have a problem in runing selenium test cases
13:25:47 <guduji> i just upgraded my ubuntu
13:26:01 <guduji> so now when i run my test case, the browser just opens blank
13:26:14 <guduji> and the log says that it is unable to connect to localhost
13:26:29 <djazayeri> bwolfe can answer this
13:26:34 <guduji> oh
13:26:38 <dkayiwa> yes :D
13:26:47 <bwolfe> guduji, its a firefox 5 issue
13:26:52 <guduji> oh ok
13:27:01 <bwolfe> I just spent, nay, wasted 3 hours yesterday fighting it
13:27:08 <guduji> oh my!
13:27:17 <bwolfe> open the Story.java class and change to using the ChromeDriver instead of the FirefoxDriver
13:27:28 <guduji> oh ok
13:27:39 <bwolfe> I was sure it was my problem because I had just put in a whole bunch of new code
13:27:55 <bwolfe> but alas, it is selenium's fault. (they've fixed it in unreleased code I think)
13:28:33 <guduji> oh :)
13:29:18 <guduji> org.openqa.selenium.chrome.ChromeDriver ... is tht what i have to change to?
13:30:17 <bwolfe> yeah
13:30:31 <bwolfe> (I just change Firefox to Chrome and do a control-shift-o)
13:30:44 <guduji> oki
13:30:46 <bwolfe> theres only one ChromeDriver class on the classpath :-)
13:31:35 <guduji> yep
13:32:19 <guduji> oki trying to run one of the test cases
13:35:37 <guduji> lol i dont have chrome browser on my machine
13:35:44 <guduji> installing it now
13:36:54 <bwolfe> guduji, I didn't either. had to dl it last night to test my stuff!
13:37:25 <guduji> yeah i just did :)
13:37:38 <guduji> personally i dont like firefox
13:38:24 <bwolfe> I tried to switch to chrome a few months ago...couldn't do it. I depend on too many ff plugins
13:39:00 <guduji> oh ben... it is still giving me fatal error :(
13:39:06 <guduji> even after installing chrome
13:39:13 <guduji> it just says fatal error and shuts down
13:39:26 <bwolfe> same "can't connect" error though? or somethign later on?
13:40:11 <guduji> nothing no log message
13:40:12 <guduji> just "FATAL ERROR" and stops
13:40:36 <guduji> it doesn't even waits to connect
13:42:46 <bwolfe> heh
13:42:52 <bwolfe> try adding -v
13:43:00 <guduji> ok
13:43:58 *** mandric has joined #openmrs
13:44:02 <bwolfe> (just to get more info)
13:44:10 <guduji> yep
13:44:31 <guduji> same again
13:44:52 <guduji> a min
13:48:31 <guduji> [INFO] Running embeddable org.openmrs.stories.AddANewConceptDrug
13:48:31 <guduji> [INFO] ------------------------------------------------------------------------
13:48:31 <guduji> [ERROR] FATAL ERROR
13:48:31 <guduji> [INFO] ------------------------------------------------------------------------
13:48:32 <guduji> [INFO] Failures in running embeddable org.openmrs.stories.AddANewConceptDrug
13:48:34 <guduji> Couldn't locate Chrome. Set webdriver.chrome.bin
13:48:36 <guduji> System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.38-8-generic-pae', java.version: '1.6.0_22'
13:48:39 <guduji> Driver info: driver.version: ChromeDriver
13:50:40 <guduji> bwolfe: ^^
13:52:07 <bwolfe> guduji, did you install Chromium from the repos or download chrome from google.com/chrome ?
13:52:24 <guduji> used ubuntu software center :S
13:53:40 <bwolfe> ah yes, thats the open source build, not technically Chrome. :-)
13:53:53 <guduji> oopsy
13:53:57 *** nribeka has joined #openmrs
13:53:57 *** ChanServ sets mode: +v nribeka
13:54:08 <guduji> ok so i remove it and download it from website
13:55:01 *** gbastien has quit IRC
13:59:54 *** pratyush has joined #openmrs
14:00:07 *** upul` has joined #openmrs
14:00:07 *** ChanServ sets mode: +v upul`
14:00:24 *** mandric has quit IRC
14:01:31 <bwolfe> guduji, you can have them both if you want. (I do)
14:04:22 *** pusakat has quit IRC
14:05:33 <guduji> oh
14:05:34 <guduji> ben
14:05:37 <guduji> now it does start
14:05:38 <guduji> but
14:05:43 <guduji> it hangs at the login page
14:05:46 <guduji> and just waits
14:06:36 <guduji> and it opens up two tabs
14:07:10 <guduji> one tab says localhost:7055/chromecommandexecutor?reloaded
14:07:14 <guduji> and the page says
14:07:23 <guduji> ChromeDriver server started and connected. Please leave this tab open.
14:07:29 <guduji> the other tab
14:07:37 <guduji> connects to openmrs url login page
14:07:40 <guduji> and just sits
14:07:43 <bwolfe> guduji, weird
14:07:50 <guduji> :(
14:10:51 <guduji> 2011-06-29 10:04:35.545::INFO: Started SelectChannelConnector@0.0.0.0:8080
14:10:51 <guduji> (BeforeStories)
14:10:51 <guduji> (org/openmrs/stories/add_drug.story)
14:10:51 <guduji> Scenario:
14:10:51 <guduji> GivenStories:
14:10:52 <guduji> org/openmrs/stories/login_to_website.story
14:10:54 <guduji> (org/openmrs/stories/login_to_website.story)
14:10:56 <guduji> Scenario:
14:10:58 <guduji> 2011-06-29 10:04:39.928:/openmrs:INFO: Initializing Spring FrameworkServlet 'openmrs'
14:11:00 <guduji> INFO - FrameworkServlet.initServletBean(301) |2011-06-29 10:04:39,688| FrameworkServlet 'openmrs': initialization started
14:11:05 <guduji> INFO - FrameworkServlet.initServletBean(320) |2011-06-29 10:04:39,722| FrameworkServlet 'openmrs': initialization completed in 33 ms
14:11:08 <guduji> 2011-06-29 10:04:40.381:/openmrs:INFO: Initializing Spring FrameworkServlet 'openmrs_static_content'
14:11:10 <guduji> WARN - CommonsLoggingOutput.warn(59) |2011-06-29 10:04:40,738| Setting extra type info to overloaded methods may fail with <parameter .../>
14:11:13 <guduji> ERROR - CommonsLoggingOutput.error(75) |2011-06-29 10:04:40,738| Parameter mismatch parsing signatures section in dwr.xml on line: DWRProgramWorkflowService.updatePatientProgram(Integer patientProgramId, String enrollmentDateYmd, String completionDateYmd, Integer locationId)
14:11:17 <guduji> Given I am on the login page of OpenMRS with url http://localhost:8080/openmrs
14:11:19 <guduji> it is stuck here
14:11:21 <guduji> and seems like it starts one more url .. i dont understand why
14:11:53 <bwolfe> how are you running it ?
14:13:05 <guduji> thru a script
14:13:13 <surangak> dkayiwa, hi...
14:13:34 <bwolfe> guduji, the release-test.sh script?
14:13:40 <guduji> ./release-test.sh -t AddDrug
14:13:41 <guduji> yes
14:13:42 <bwolfe> can you elaborate ?
14:13:47 <bwolfe> ah
14:13:48 <surangak> dkayiwa, did u want to speak to me for something ? i just saw your above message....
14:14:05 <guduji> does that script needs changes?
14:14:31 <bwolfe> guduji, if you don't pass in "-i" then it expects to have a database to connect to already
14:14:41 <bwolfe> do you have an openmrs database (and openmrs-runtime.properties) ?
14:14:46 <guduji> yep
14:15:35 <guduji> so i pass in command this way ./release-test.sh -i AddDrug
14:16:47 <bwolfe> and your openmrs password?
14:16:54 <bwolfe> is it the default Admin123 ?
14:16:57 <guduji> yep
14:17:02 <bwolfe> hmm
14:17:53 <guduji> i mean thats the password i use to login to once i start openmrs.. if thats what you mean
14:19:39 <bwolfe> right
14:19:52 <guduji> yep
14:22:08 <guduji> hm... what should i do? :S
14:24:06 <bwolfe> are you using the standalone installer ?
14:24:10 <bwolfe> or a normal installation?
14:24:32 <guduji> what do you mean by that?
14:24:52 <guduji> to install chrome?
14:25:02 <bwolfe> openmrs standalone installer
14:25:20 <bwolfe> or did you install tomcat and drop the war into it and run it + go through installer ?
14:25:39 <guduji> i didn't install tomcat
14:26:34 <bwolfe> ok, but you didn't download the installer either? did you do a "mvn jetty:run" at some point on the code ot start openmrs ?
14:26:58 <pascal`> bwolfe++
14:27:06 <bwolfe> ?
14:27:37 <guduji> yes
14:27:48 <guduji> and that opens fine
14:29:32 *** pratyush has left #openmrs
14:31:35 <guduji> bwolfe: ^^
14:31:51 <bwolfe> why the karma boost pascal`?
14:32:07 <bwolfe> guduji, ok, so your runtime prop file should be in the right place and fine
14:32:07 *** surangak has quit IRC
14:32:54 <bwolfe> guduji, can you run any other test ?
14:32:58 <bwolfe> or do they call fail?
14:33:01 <guduji> trying
14:33:04 <bwolfe> AdminPageTest ?
14:33:12 <guduji> oki trying out now
14:33:13 <bwolfe> or is it GoToAdminPage ?
14:33:19 <guduji> let me see
14:34:16 <guduji> gotoadminpage
14:35:35 <guduji> running it
14:44:47 <guduji> ben no all test cases hang at some point
14:45:10 <bwolfe> grr
14:45:16 <bwolfe> and the -v doesn't give any more info ?
14:45:42 <guduji> haven't seen it with different test cases let me run and see
14:48:26 <guduji> [INFO] Running embeddable org.openmrs.stories.AddANewConceptDrug
14:48:26 <guduji> [INFO] Processing system properties {}
14:48:26 <guduji> (BeforeStories)
14:48:26 <guduji> [INFO] Using 1 threads
14:48:26 <guduji> [INFO] Running story org/openmrs/stories/add_a_new_concept_drug.story
14:48:27 <guduji> (org/openmrs/stories/add_a_new_concept_drug.story)
14:48:29 <guduji> Scenario:
14:48:31 <guduji> GivenStories:
14:48:33 <guduji> org/openmrs/stories/login_to_website.story
14:48:35 <guduji> (org/openmrs/stories/login_to_website.story)
14:48:39 <guduji> Scenario:
14:48:41 <guduji> 2011-06-29 10:46:46.416:/openmrs:INFO: Initializing Spring FrameworkServlet 'openmrs'
14:48:42 <bwolfe> guduji, can you use pastebin.com instead?
14:48:43 <guduji> INFO - FrameworkServlet.initServletBean(301) |2011-06-29 10:46:46,408| FrameworkServlet 'openmrs': initialization started
14:48:46 <guduji> INFO - FrameworkServlet.initServletBean(320) |2011-06-29 10:46:46,452| FrameworkServlet 'openmrs': initialization completed in 43 ms
14:48:49 <guduji> 2011-06-29 10:46:46.908:/openmrs:INFO: Initializing Spring FrameworkServlet 'openmrs_static_content'
14:48:51 <guduji> WARN - CommonsLoggingOutput.warn(59) |2011-06-29 10:46:47,524| Setting extra type info to overloaded methods may fail with <parameter .../>
14:48:54 <guduji> ERROR - CommonsLoggingOutput.error(75) |2011-06-29 10:46:47,526| Parameter mismatch parsing signatures section in dwr.xml on line: DWRProgramWorkflowService.updatePatientProgram(Integer patientProgramId, String enrollmentDateYmd, String completionDateYmd, Integer locationId)
14:48:58 <guduji> lol i dont know why it is always calling addnewconceptdrug story
14:49:00 <guduji> sure
14:49:09 <djazayeri> rafa: i'll be ready to talk in 5 minutes
14:49:18 <rafa> djazayeri: me too
14:52:17 <guduji> bwolfe: http://pastebin.com/sTUK6Txw
14:52:18 *** bwolfe has quit IRC
14:58:10 <djazayeri> rafa: okay, ready when you are
14:58:27 <rafa> djazayeri: let's start
14:58:46 <rafa> djazayeri: Will you answer my questions from the e-mail?
14:59:04 <djazayeri> okay.
14:59:08 <djazayeri> longer phrases:
14:59:16 <djazayeri> NEW -> Create New
14:59:25 <djazayeri> OMIT -> Ignore
14:59:41 <rafa> Maybe Skip?
14:59:43 <djazayeri> MAP -> Replace with existing item
14:59:46 <djazayeri> Sure, skip is better
14:59:59 <djazayeri> MERGE -> Overwrite
15:00:08 <djazayeri> Actually maybe MAP -> Use Existing
15:00:26 <rafa> clear
15:00:47 <rafa> the not-yet-assessed column?
15:00:48 <djazayeri> Okay, for the not-yet-assessed state, it should actually be "Needs Assessment"
15:01:03 <djazayeri> It should look exactly like the other columns.
15:01:21 <djazayeri> I think that's like Concept (15)
15:01:39 <rafa> Okay, but they still have suggested option
15:02:13 <djazayeri> It's okay if when the user actually goes to assess those, they have a suggested option
15:02:16 <rafa> Do I need to subtract the value from other columns?
15:02:35 <djazayeri> but as long as they're blocking the user from doing Finished, they should be in a different column
15:03:11 <djazayeri> yes, should be subtracted from other columns
15:03:28 <rafa> clear
15:03:43 <rafa> What about the summary page?
15:03:53 <rafa> Is it okay the way I suggested?
15:04:11 <djazayeri> So the statistics will be moved one page later?
15:04:16 <rafa> yes
15:04:25 <djazayeri> Good.
15:05:03 <rafa> Okay, that's all I needed for the UI
15:05:10 <djazayeri> Eventually we should have the table that shows all individual items work with datatables
15:05:13 <djazayeri> so you can search it
15:05:22 <rafa> Let's move on to validators :)
15:05:42 <djazayeri> i.e. I'm going through, I choose an option, then later I think "oops, I should have chosen a different option"
15:05:46 <djazayeri> but there are 500 items
15:05:49 <djazayeri> you probably want to search
15:05:52 <djazayeri> okay, on to validators
15:06:00 <rafa> Yes, we can add a search box easily
15:06:04 <djazayeri> (I'm going to simultaneously be on a phone call for a bit.)
15:06:58 <rafa> So I need to make sure that all existing data is valid before every export and import.
15:07:36 <guduji> wyclif: is it fine if i come on this friday instead of thursday?
15:07:40 <rafa> That's not nice ;)
15:07:50 <djazayeri> Poor scheduling
15:07:55 <djazayeri> can we talk in 30?
15:08:04 <rafa> djazayeri: no problem
15:10:14 <wyclif> that would be fine
15:10:24 <wyclif> guduji, that is fine
15:10:52 *** gbastien has joined #openmrs
15:27:15 <wyclif> going for lunch in the next 5min
15:27:32 *** dkayiwa has quit IRC
15:28:03 <djazayeri> rafa: I'm back
15:28:30 *** cta has quit IRC
15:29:13 <rafa> djazayeri: I'm still here
15:29:42 <djazayeri> okay, so, on to validators.
15:29:57 <djazayeri> We should validate on export
15:30:08 <djazayeri> (too bad we didn't think of this before)
15:30:28 <rafa> I didn't know about their existence :)
15:30:38 <djazayeri> But if a package is exported, every item in it should have passed ValidationUtil.validate(item) on the source server.
15:31:50 <rafa> I assume we want to display something more sophisticated than just ValidationException?
15:33:00 <guduji> wyclif: ok i will see if i can manage to come tomorrow i will definetly come
15:33:15 <djazayeri> rafa: how about "This package cannot be exported because some of the items in it have validation errors. You will need to fix those errors or remove the items from the package"
15:33:25 <wyclif> guduji, ok
15:33:40 <djazayeri> followed by a bullet list of (Class) Name : validation failure message
15:33:59 <djazayeri> but we'll just take the validation failure message from the exception, we won't try to make it pretty
15:34:13 <rafa> Godd
15:34:15 <rafa> Good
15:34:31 <rafa> We need to do the same thing before importing
15:34:37 <djazayeri> sort of
15:34:50 <rafa> Actually twice
15:35:07 <rafa> First for existing data that we will use for merging
15:35:10 <djazayeri> Because (with concepts, for example) something may be legal on the source server, but invalid on the target server
15:35:14 <rafa> Or mapping
15:35:46 <rafa> Then we will need to repeat validation after merging is done.
15:35:54 <djazayeri> I suggest that we try to run the validator on every item for which "create new" should be an option. If it fails, we know we can't allow that option.
15:36:16 *** mandric has joined #openmrs
15:36:17 <rafa> It's not enough.
15:36:28 <djazayeri> That will also help you realize that you're trying to import a WEIGHT concept when you already have a WEIGHT concept.
15:36:36 <djazayeri> I agree that's not enough.
15:36:54 <rafa> If it happens that we've got an item in the DB that is not vaid and we want to use it as a mapping or merge with sth from the package. It'll fail validation.
15:36:56 <djazayeri> As you say, we also need to validate the merged thing we're about to save
15:37:15 <djazayeri> oh, hmm, that's tricky...
15:37:51 <djazayeri> Let's assume that 99% of the time, everything on the local server will already be valid.
15:38:13 <djazayeri> So if they pick a local item to use as replacement, we validate, it, but if it fails we just display the error and say No.
15:38:26 <djazayeri> We don't need a graceful recovery mechanism in the UI for that.
15:38:48 <rafa> So we'll only validate items after merging everything
15:38:55 <rafa> and mapping
15:39:05 <rafa> just before the save operation to display a nice message what fails
15:39:54 <rafa> And we do that for all items
15:40:02 <rafa> new, merged, mapped
15:40:40 <djazayeri> I'd also like to, on the controller for the once-per-item page, run the validator pre-emptively for all available options that don't require user input
15:41:13 <djazayeri> i.e. New, and if the uuid is already mapped, the overwrite and keep options
15:41:22 <djazayeri> (keep should be fine, actually)
15:41:30 <djazayeri> (because we're not modifying it)
15:41:40 <rafa> Not possible to test all other options
15:42:08 <rafa> I'd have to modify the object, test it and return back to the original state
15:42:20 <djazayeri> for Overwrite, you mean?
15:42:28 <rafa> and map
15:42:44 <rafa> I actually modify concepts when I use map...
15:42:47 <djazayeri> okay, never mind then
15:42:49 <rafa> by adding mappings
15:43:19 <djazayeri> true, you'd end up needing to do something like (fetch - modify - validate - clearSession) x2
15:43:23 <djazayeri> let's not go there.
15:43:57 <rafa> Okay, last thing I'll change the behavior for HtmlFormEntry
15:44:04 <rafa> I need saveReplace method to work in place
15:44:14 <rafa> as in https://tickets.openmrs.org/browse/META-80
15:44:40 <rafa> I actually want to name the methods differently onExport an onImport
15:44:55 <pascal`> djazayeri, is there any way you can send me Html Form Entry Module jar build for 1.7.3?
15:45:04 <pascal`> djazayeri, it's not building on my system for some reason =\
15:45:14 *** yanokwa has joined #openmrs
15:45:17 <djazayeri> rafa: meaning that there will no longer be a "ShareableHtmlForm" but rather we'll have to modify the form?
15:45:19 <guduji> wyclif: for trunk 235, which are the search widgets where i need to start looking at?
15:45:26 <djazayeri> pascal`: it's on the module repo, isn't it?
15:45:30 <rafa> yes
15:45:46 <djazayeri> okay, let's get Mark online and discuss that with him just to make sure it's okay.
15:45:54 <djazayeri> (I assume we have no alternative?)
15:46:03 <rafa> but the logic for calculating dependencies can still be in a different place
15:46:04 <djazayeri> Actually…why do we need to do this?
15:46:21 <rafa> Yes, no other way is possible with the replace algorithm we have
15:46:22 <pascal`> djazayeri, I don't see any jar builds in the repo for Html Form Entry
15:46:28 <djazayeri> oh, the *jar*
15:46:45 <djazayeri> can you take the omod and rename it to .jar?
15:46:55 <rafa> djazayeri: because we'll have inconsistent graph of objects :)
15:47:05 <rafa> the one that is replaced don't belong to our graph
15:47:13 <rafa> it's completely detached
15:47:18 <rafa> we don't want that
15:47:54 <djazayeri> rafa: I'm confused. Why can't we use a replacement map along with the ShareableHtmlForm?
15:47:54 <pascal`> djazayeri, I'll see what I can do
15:48:05 <djazayeri> pascal`: let me know if renaming the omod doesn't work.
15:48:10 <OpenMRSBot> Recent updates in the world of openmrs: New Changeset: OpenMRS (order-entry): Discontinuing a previous order for an order that is to be signed and activated - TRUNK-2369 <http://feedproxy.google.com/~r/OMRStrunk/~3/7KQeKGeTeX8/OpenMRS>
15:48:41 <guduji> djazayeri: for trunk 235, which are the search widgets where i need to start looking at?
15:49:43 <djazayeri> guduji: ask wyclif
15:50:01 <djazayeri> (if he doesn't answer I can look, but he knows better than me)
15:50:17 <guduji> oh ok.. he seems to be away from keyboard though
15:50:28 <rafa> Okay so we deserialize ShareableHtmlForm and it is attached to other objects that we deserialized. Now we call saveReplace() and we get HtmlForm back that is not attached to anything. We've got inconsistent graph of objects and plenty of problems. We can't save ShareableHtmlForm directly either, because there's no HIbernate mapping for it.
15:50:35 <guduji> ok i will wait
15:50:37 <djazayeri> okay, if he's not back soon, I'll look
15:50:42 <djazayeri> ping me in another 5-10 minutes
15:50:49 <guduji> sure :) thanks!
15:51:26 *** upul` has quit IRC
15:51:55 <djazayeri> rafa: is the problem that the dependencies are "virtual"? I mean they're not through hibernate, but just encoded in text?
15:52:30 <rafa> djazayeri: yes, it's what the writeReplace and saveReplace methods are for
15:53:00 <djazayeri> but when you call saveReplace() on the ShareableHtmlForm, won't that be able to return attached objects?
15:53:33 <djazayeri> it would need to take be saveReplace(Map replacements) right?
15:53:35 <rafa> I don't mean attached obects in the sense attached to Hibernate session
15:53:41 <djazayeri> oh okay
15:53:48 <rafa> attached to one another by reference
15:53:53 <djazayeri> ah
15:53:54 *** danielf` has quit IRC
15:53:56 *** Mark____ has joined #openmrs
15:54:05 <djazayeri> hi Mark____
15:54:05 <downeym> Hi Mark____ and welcome to the #openmrs IRC channel.
15:54:16 <djazayeri> thanks for joining, prepare to be hit with complicated questions
15:54:55 <djazayeri> So, first off, our question is: how would you feel if we Metadata Sharing changed such that you can't use a ShareableHtmlForm anymore
15:55:22 <Mark____> give me a second... i'
15:55:23 <djazayeri> but instead you have to modify the local html form before exporting it, so that it's inherently shareable?
15:55:24 <rafa> Hi Mark____ :)
15:55:36 <rafa> No Darius
15:55:48 <Mark____> m helping ellen out with a groovy script right now that is making live changes to the Haiti production db...
15:55:48 <djazayeri> Oh, what are we asking then?
15:56:02 <djazayeri> ah, okay, don't get distracted...
15:57:03 <Mark____> don't worry... rafal, ask your question, it just may take me a few minutes...
15:57:37 <rafa> It'll take another hour to explain things... I'll just code it and show you ;)
15:57:52 <djazayeri> I guess that's fine too...
15:58:06 <djazayeri> But will this require modifying the html form on the _source_ server before exporting it?
15:58:37 <rafa> Yes
15:58:44 <djazayeri> e.g. what the ShareableHtmlForm does now is if the HtmlForm said conceptId="5089", it will be turned into conceptId="some-long-uuid"
15:58:49 <rafa> no
15:59:18 <rafa> Okay just give me a moment :)
15:59:36 *** czakian has joined #openmrs
15:59:37 <djazayeri> Are you saying that the HtmlForm on the source server will need to be changed to use uuids or mappings instead of conceptIds? Or have I misunderstood?
16:00:25 <rafa> No, it's still just for export.
16:01:14 <djazayeri> rafa: Okay, in that case you should definitely just write the code and show mark later. I had misunderstood.
16:01:52 <djazayeri> Mark____: false alarm, I guess we don't need to modify things on the source server before export.
16:02:40 <Mark____> cool, i can just look at the code afterwards...
16:03:20 *** Mark____ is now known as mgoodrich
16:05:38 <guduji> czakian: Hi are u going to go tomorrow to indy?
16:06:27 <czakian> hey there, I am but I am getting carpooled
16:06:40 <guduji> is it possible that i can join with that person too?
16:06:49 <guduji> can you ask him for me?
16:06:53 <guduji> i will share the expenses
16:07:06 <czakian> I can ask, but it depends if they are taking other people
16:07:13 <czakian> I'll send them an email
16:07:17 <czakian> we would leave fairly early
16:07:21 <guduji> oki.. that will be great
16:07:24 <czakian> becasue she has to be to work by 8
16:07:27 <guduji> np
16:07:32 <guduji> i wont mind that
16:07:42 <czakian> but yeah, I'll send her an email
16:07:50 <czakian> but I already sent one
16:07:51 *** gbastien has quit IRC
16:07:53 <czakian> for asgoyal
16:07:59 <guduji> but just let me know by today evening whether she replied or not.. cuz i want to book tickets for bloomingtn shuttle then :)
16:08:05 <czakian> ok
16:08:08 <guduji> thats me
16:08:12 <guduji> asgoyal is me
16:08:14 <czakian> ah
16:08:15 <guduji> :D
16:08:17 <czakian> well in that case
16:08:18 *** nribeka has quit IRC
16:08:20 <czakian> email sent
16:08:22 <czakian> lol
16:08:24 <guduji> lol
16:08:28 <guduji> and no reply ?
16:09:18 <czakian> not yet
16:09:22 <czakian> I might call
16:09:25 <czakian> my bet is she is waiting
16:09:28 <czakian> on the other person
16:09:52 <czakian> because they don't come every week
16:11:07 <guduji> oh ok
16:11:37 <guduji> just let me know by this evening so that i can book tickets instead for bloomington shuttle then :)
16:12:02 <guduji> wyclif: u there?
16:13:28 <czakian> alright, will do
16:13:41 <guduji> djazayeri: so i fire questions to you ? :D
16:13:47 <guduji> czakian: thanks :)
16:15:49 <guduji> djazayeri: ^^
16:18:22 <djazayeri> guduji:
16:18:28 <djazayeri> you want to know where those widgets are?
16:18:31 <guduji> yes
16:18:48 <guduji> in which java files to look for them
16:19:24 <djazayeri> the widgets aren't java files, they're javascript
16:19:40 <guduji> the ticket says for concept dictionary, cohort builder concept popus
16:19:41 <guduji> oh
16:19:51 <guduji> oops yes
16:20:29 <djazayeri> so, there's a base javascript "class" (I don't know javascript that well, so I apologize if my terminology is inaccurate)
16:20:38 <djazayeri> openmrsSearch.js
16:20:53 <djazayeri> (.../webapp/WEB-INF/view/scripts/jquery-ui/js/openmrsSearch.js)
16:21:26 <djazayeri> that is extended to make the concept search widget (and other search widgets)
16:21:30 <guduji> ok
16:22:42 <djazayeri> If you look at WEB-INF/view/dictionary/index.jsp, you'll see it being used
16:22:48 <guduji> oh ok
16:22:49 <djazayeri> new OpenmrsSearch("findConcept", true, doConceptSearch, doSelectionHandler,
16:22:50 <djazayeri> [{fieldName:"name", header:" "}, {fieldName:"preferredName", header:" "}],
16:22:50 <djazayeri> {searchLabel: '<spring:messagecode="Concept.search"javaScriptEscape="true"/>:',
16:22:50 <djazayeri> includeVoidedLabel: '<spring:messagecode="SearchResults.includeRetired"javaScriptEscape="true"/>',
16:22:50 <djazayeri> columnRenderers: [nameColumnRenderer, null],
16:22:50 <djazayeri> columnVisibility: [true, false],
16:22:50 <djazayeri> searchPhrase:'<request:parametername="phrase"/>'
16:22:51 <djazayeri> });
16:24:45 <djazayeri> So, it looks like you would need to add two options to openmrsSearch.js for includeVoidedByDefault and showVerboseByDefault.
16:24:55 <guduji> ah ok
16:25:04 <djazayeri> and you'd need to set them in dictionary/index.jsp based on the user preferences.
16:25:14 <guduji> oh ok
16:25:41 <djazayeri> Hopefully there's an easy way to get those preferences.
16:25:56 <guduji> i m confused with those checkboxes on my profile so.. the thing is if i check them
16:26:05 <guduji> and then if i go to concept dictionary page
16:26:24 <guduji> the checkbox over there to "include retired" must be checked by default is that so?
16:26:29 <djazayeri> yes.
16:26:32 <guduji> aah ok
16:26:37 <djazayeri> if you go to My Profile, check those boxes, and save your profile
16:26:43 <guduji> ahm...
16:26:46 <guduji> then all other pages
16:26:54 <guduji> where those checkboxes appear
16:26:57 <djazayeri> then you go to the dictionary page, it should have include retired checked by default
16:26:58 <guduji> must be checked by default
16:27:02 <djazayeri> same for other pages, yes
16:27:08 <guduji> aah ok
16:27:10 <guduji> i got it
16:27:11 <djazayeri> let's start by doing it on one page though
16:27:16 <guduji> yep
16:28:16 <guduji> one more thing
16:28:28 <guduji> in which branch folder do i make the changes to?
16:28:53 <djazayeri> this will be in trunk
16:28:57 <guduji> oki
16:28:59 <guduji> i have that
16:31:46 *** downeym has quit IRC
16:32:51 *** bryq1 has joined #openmrs
16:34:38 *** bryq has quit IRC
16:37:42 *** pascal` has quit IRC
16:45:13 *** rafa has quit IRC
16:58:26 *** mgoodrich has quit IRC
17:02:52 *** Suranga has joined #openmrs
17:03:45 <djazayeri> wyclif: you did a followup commit on TRUNK-2403, but didn't mention it in a ticket comment, or add it to CR-TRUNK-382. Can you please do one of those?
17:04:01 <djazayeri> (ticket is in post-commit code review state, but it's not obvious what to review)
17:05:43 <wyclif> i did
17:06:36 <wyclif> the changes are in the revision where i removed order type class
17:08:54 <Suranga> hi djazayeri
17:09:00 <Suranga> djazayeri, would this be a bad time to talk
17:11:01 <djazayeri> hi Suranga
17:11:11 <djazayeri> it's a good enough time
17:11:17 <Suranga> djazayeri, regarding todays design call
17:11:35 <Suranga> djazayeri, most of the things discussd i have identified as do-able
17:11:40 *** guduji has quit IRC
17:11:55 <Suranga> djazayeri, but i need to discuss another problem i am having regarding the use of fieldGen
17:12:13 <Suranga> djazayeri, where the implimentation of fieldgen is considerd, this is a blocker to me
17:12:41 <djazayeri> okay
17:12:45 <djazayeri> what's the problem?
17:13:07 <Suranga> djazayeri, my problem is this... in obsform.jsp... the user can select a concept using an auto complete box
17:13:15 *** Echidna has quit IRC
17:13:34 <Suranga> djazayeri, using <openmrs_tag:conceptField
17:13:54 <Suranga> i need to intercep the concept returnd by the tag class, and pass it to a second tag class
17:14:12 <Suranga> djazayeri, so that i can display matching fieldGen tag to user
17:14:35 <Suranga> djazayeri, assuming that I selected PATINET_CONCEPT from the concept auto complete,
17:15:14 <Suranga> i need to pass the same concept into a second tag class, so that i can use this value to create and display a patient fieldGen for patients
17:15:52 <Suranga> djazayeri, im guessing this may be a hilariously easy problem to you guys... but im totally clueless on this one :P
17:16:01 <djazayeri> Okay. So, as we discussed before, when they select a concept with the conceptField, you need to reload the page
17:16:13 <djazayeri> i.e. you cannot pass one to the other on the client side
17:16:15 <djazayeri> right?
17:16:40 <Suranga> aha, but how to i capture the concept ?..
17:17:04 <Suranga> djazayeri, im not really understanding the 'reload' function im afraid...
17:17:30 *** goutham has joined #openmrs
17:17:40 <djazayeri> I mean that after they choose a different concept, if its datatype is complex, then you need to load the html page from the server again, giving it the new concept.
17:18:30 <Suranga> djazayeri, a similar thing is already happening for numeric concepts, isnt it ?
17:18:48 <djazayeri> so, looking at the old version of obsForm.jsp, you see the onQuestionSelect function, right?
17:18:50 *** Echidna has joined #openmrs
17:18:50 *** ChanServ sets mode: +v Echidna
17:19:05 <Suranga> djazayeri, yeps
17:19:11 <djazayeri> and <openmrs:conceptField…onSelectFunction="onQuestionSelect"/>
17:19:20 <Suranga> djazayeri, exactly
17:19:26 <djazayeri> that means that when the user selects an obs, it will call that javascript function.
17:20:04 <djazayeri> that, in turn, calls a long updateObsValues function
17:20:23 <Suranga> djazayeri, aha
17:20:27 <djazayeri> that thing switches on the concept datatype
17:20:59 <djazayeri> and uses javascript to display the right input element for that datatype
17:21:24 <djazayeri> what I'm saying is that if the selected concept's datatype is Complex, then *we cannot display the right input element using javascript*
17:22:17 <djazayeri> we have to reload the current page, asking it for the right handler widget for that complex concept
17:22:59 <Suranga> djazayeri, what you want me to do is reload the page, setting obs.concept value as my concept, is it ?
17:23:27 <djazayeri> something like this (but more complicated in real life): window.location.href=window.location.href + "&selectedConcept=" + selectedConceptId;
17:24:15 <djazayeri> This will be a GET request—it doesn't modify the obs's concept yet.
17:24:41 <Suranga> djazayeri, righto...
17:24:43 <djazayeri> But it should show the obsForm.jsp page, with an input widget defined by the handler for that complex obs
17:25:12 <Suranga> djazayeri, so this is a job for the obsform controller is it ?
17:25:35 <djazayeri> the jsp page and controller will need to work together to do it.
17:26:24 <Suranga> djazayeri, aha, so obsformcontroller will check is the GET param has been set in the request...
17:26:47 <Suranga> djazayeri, and if it has, it then displays us the obsform.jsp with the widget we need
17:27:04 <Suranga> djazayeri, else, if the GET param is not set, it goes back to the traditional method ?
17:27:15 <djazayeri> yes
17:27:54 <Suranga> djazayeri, you did it
17:28:21 <Suranga> djazayeri, after weeks of trying, you finally hammerd some sens into my thick skull :D
17:28:27 <Suranga> djazayeri, i finally understand
17:28:32 <djazayeri> not thick
17:28:41 <Suranga> * hammered some sense
17:28:51 <djazayeri> it's just that you had to work through the other issues before you could properly think about this aspect.
17:30:03 <Suranga> djazayeri, i was worried about this because i was concerned that this might be a blocker to the entire fieldgen
17:30:20 <Suranga> djazayeri, and domain obs without fieldGen is nooo fun
17:32:07 <Suranga> djazayeri, thanks a lot for the help, ill work on this
17:32:19 <djazayeri> Suranga: good luck
17:32:21 <Suranga> djazayeri, I cannot see your approach failing :)
17:32:41 <djazayeri> well, _I_ am less confident than that.
17:32:47 <djazayeri> :-)
17:33:17 <Suranga> djazayeri, lets hope u are wrong this once :-)
17:46:06 *** goutham has quit IRC
17:48:40 *** mandric_ has joined #openmrs
17:49:06 *** mandric_ has joined #openmrs
17:49:54 *** mandric_ has joined #openmrs
17:50:08 *** mandric has quit IRC
17:50:08 *** mandric_ is now known as mandric
17:53:15 *** gbastien has joined #openmrs
18:19:52 *** cta has joined #openmrs
18:26:09 <wyclif> djazayeri,
18:26:16 <wyclif> for https://tickets.openmrs.org/browse/TRUNK-2426
18:27:37 <djazayeri> yes?
18:29:09 <wyclif> am trying to confirm something, services in OpenMRS are singletons
18:29:16 <wyclif> right?
18:29:47 <djazayeri> Yes, though in theory if we ever start running on distributed hardware they might not be
18:30:13 <djazayeri> I suppose generating that next-number from the sequence should be in the DAO layer.
18:30:38 <wyclif> i wanted to be sure that if i synchsronize a method on the object then i can depend on it since the lock is bound to the instance and not class
18:31:03 <djazayeri> I think you can synchronize on the whole class somehow, right?
18:31:28 <wyclif> only if it is a static method
18:37:28 <wyclif> unless i do a synchronized block on the class
18:40:30 *** mandric has quit IRC
18:40:51 *** mandric has joined #openmrs
18:41:07 *** mandric_ has joined #openmrs
18:41:14 *** mandric has quit IRC
18:41:15 *** mandric_ is now known as mandric
18:48:28 *** goutham has joined #openmrs
18:49:10 <djazayeri> wyclif: sorry for the delay, on the phone
18:49:16 <djazayeri> I think synchronized on the class is fine
18:49:37 <wyclif> i did that
18:49:49 <wyclif> never mind(about the delay)
18:54:53 *** dkayiwa has joined #openmrs
18:57:51 <cta> djazayeri: Darius, as for your last comment on ticket 2364. Actually, about setting dose units to structured medication order. How to do this for dose and for frequency, for example? By using setUnits() method?
18:59:36 <djazayeri> cta: looks like I was wrong about that
18:59:58 <cta> djazayeri: so, what we doing?
19:00:14 <cta> i fixed rest comments
19:00:28 <cta> only this is left
19:00:48 <djazayeri> frequency is a String. So you should just fix the unit test so you don't say setFrequency(50) but make it a string that makes sense.
19:02:00 <cta> djazayeri: I did it order.setFrequency("daily");, maybe you meant setDuration()???
19:02:10 <djazayeri> yes, probably that's what I meant
19:03:11 <cta> djazayeri: so, set duration as "three weeks" for example? right?
19:03:39 <cta> but duration is an integer field
19:05:31 <djazayeri> is there a durationUnits?
19:06:02 <djazayeri> there is, although someone has made a mistake and done "Integer durationUnits"
19:06:11 <djazayeri> (we've just uncovered a bug)
19:06:27 <cta> djazayeri: fix it?
19:06:44 <djazayeri> yes (or at least see how much work that is)
19:07:02 <cta> np
19:07:55 <cta> djazayeri: Darius, one more question. What to do with DrugOrderValidator in this case? Leave everything as-is?
19:10:36 <cta> djazayeri: As for durationUnits. It fails with error message "Can't cast java.lang.Integer to string ..."
19:10:49 <djazayeri> right, there's a bug
19:11:19 <djazayeri> so, I think you should do in your unit test: setDurationUnits("days")
19:11:28 <djazayeri> (this won't compile)
19:11:32 <djazayeri> create a ticket to fix it
19:11:48 <cta> djazayeri: fixed
19:13:50 <cta> djazayeri: May be we do not neeed to crate a ticket for such small bug? Fix for this bug even don't involve any additional refactoring, only within DrugOrder class;-)
19:15:41 <djazayeri> the fact that duration units is an Integer instead of String probably requires a fix to liquibase and to hbm.xml, and to domain object
19:16:33 *** Suranga has quit IRC
19:16:45 *** mandric has quit IRC
19:16:59 <djazayeri> so for that i think it should have a ticket
19:17:20 <djazayeri> so we can attach the changeset that fixes it to the ticket, so people can understand what happened, in the future.
19:17:45 *** Suranga has joined #openmrs
19:17:46 <cta> djazayeri: AS for liquibase and for .hbm.xml they are ok
19:18:05 <cta> we do not need to do any changes with them
19:18:12 <djazayeri> okay, if the db table was already correct, then just fix it without a ticket.
19:18:22 <cta> no problem
19:18:54 *** bryq has joined #openmrs
19:18:54 *** ChanServ sets mode: +v bryq
19:19:20 <cta> djazayeri: I'm commiting code?
19:19:41 <djazayeri> if you've addressed my comments, yes.
19:20:59 <cta> djazayeri: everyone is fixed, besides ... "What to do with DrugOrderValidator in this case? Leave everything as-is?"
19:21:41 <cta> I mean duration units validation ... add it?
19:22:07 <djazayeri> oh, please make it such that if you specify duration, you have to specify durationUnits.
19:22:24 <cta> np
19:22:30 <djazayeri> i.e. assert( (duration == null) == (durationUnits == null) )
19:23:22 <cta> djazayeri: I'm changin' DrugOrderValidator class as you said.
19:24:49 *** bryq1 has joined #openmrs
19:25:25 *** bryq has quit IRC
19:34:38 *** goutham has quit IRC
19:34:39 *** Suranga has quit IRC
19:56:03 *** james_regen has quit IRC
20:04:27 <OpenMRSBot> Recent updates in the world of openmrs: New Changeset: OpenMRS (order-entry): Adding unit tests for saving order sets - TRUNK-2374 <http://feedproxy.google.com/~r/OMRStrunk/~3/bixp6OR6UXE/OpenMRS> || New Changeset: OpenMRS (order-entry): Adding a one argument overload for signAndActivateOrder - TRUNK-2361 <http://feedproxy.google.com/~r/OMRStrunk/~3/2_fiRLfyiZo/OpenMRS>
20:34:58 *** czakian has left #openmrs
20:36:39 <wyclif> djazayeri, after some careful thinking, it is likely that your solution on the ticket description won't solve the concurrency issues
20:36:54 *** mandric has joined #openmrs
20:38:02 <djazayeri> wyclif: why not?
20:39:57 *** mandric has quit IRC
20:40:43 <wyclif> djazayeri, because2 threads can call getNextOrderNumber and in between the calls for when one fetches the next number and before it actually calls save
20:41:12 <djazayeri> The point is that getNextOrderNumber needs to disappear
20:42:22 <cta> djazayeri: fixed 2364 as you advised, Commited code at rev:21150, sorry for bit late
20:42:26 <djazayeri> we'll replace it with a method that uses a synchronized block
20:42:35 <djazayeri> and never returns the same number twice
20:42:38 <djazayeri> it doesn't matter if you call save.
20:44:55 <wyclif> Thread 1 -> getNextOrderNumber() for Order 1 -> exists method
20:44:56 <wyclif> Thread 2 -> getNextOrderNumber() for Order 2 -> exists method (The value can be the same because order 1 isn't yet saved to update next max)
20:44:56 <wyclif> Thread 1-> Proceed with sanving Order........
20:45:11 <djazayeri> don't look at the database
20:46:01 <djazayeri> store a counter in memory
20:46:05 <wyclif> ok
20:46:26 <wyclif> and the count gets set at start up right?
20:46:36 <wyclif> from the database
20:46:55 <djazayeri> you need to fetch the *initial* value of the counter from the db
20:46:56 <djazayeri> yes
20:47:04 <wyclif> i.d at start up get the nextMax order number and increament this?
20:47:20 <wyclif> i get it now
20:47:39 <djazayeri> yes
20:47:42 <wyclif> i think i read the description wrongly, sorry about that
20:47:48 <djazayeri> no problem
20:48:18 <djazayeri> what you're describing as wrong is how it's currently coded. and it is in fact wrong
20:53:06 <wyclif> ok
20:53:38 <wyclif> djazayeri, how about the prefix?
20:53:46 <wyclif> or we get rid of it?
20:56:29 <djazayeri> burke wants to keep it
21:02:01 <djazayeri> not necessarily that prefix
21:02:07 <djazayeri> I mean, not necessarily the prefix that's there now
21:02:18 <djazayeri> It can be short. Maybe set by a global property.
21:02:29 <djazayeri> I'm fine using "OR:"
21:02:38 <djazayeri> also, we get rid of the implementationId thing that's on the ordernumbernow.
21:02:45 <djazayeri> wyclif ^^
21:03:53 <wyclif> hi
21:04:14 <djazayeri> see messages above, about the prefix
21:04:17 <djazayeri> going to grab lunch
21:04:25 <wyclif> ok
21:06:42 <OpenMRSBot> Recent updates in the world of openmrs: New Changeset: OpenMRS (order-entry): Fixed after review comments, fixed durationUnits type for DrugOrder and improved GrugOrderValidator - TRUNK-2364, TRUNK-... <http://feedproxy.google.com/~r/OMRStrunk/~3/i3mKR9Ktihw/OpenMRS>
21:09:06 *** mandric has joined #openmrs
21:14:23 *** pascal` has joined #openmrs
21:15:29 *** dkayiwa has quit IRC
21:22:32 *** yanokwa has quit IRC
21:33:31 *** gbastien has quit IRC
21:54:11 <djazayeri> wyclif: can you peek at rev:21056, and if it's okay, approve TRUNK-2373?
21:55:25 <wyclif> sure
21:55:43 <djazayeri> thanks
21:59:29 <wyclif> djazayeri, for the ticket to add order set, i already noticed the valueNumeric and had made a follow up commit
21:59:42 <djazayeri> okay, I figured you had.
21:59:50 <djazayeri> There's still the sql condition
22:01:54 <wyclif> yeah
22:02:51 <djazayeri> have you done all the followup fixes for TRUNK-2403?
22:09:10 *** mandric has quit IRC
22:09:52 *** bryq1 has quit IRC
22:09:56 <OpenMRSBot> Recent updates in the world of openmrs: On Twitter: OpenMRS: RT @jmwogi: @jblaya @askanter #Openmrs Household Module underwent form public review at Ampath-Eldoret today. Should be availabale in th ... <http://twitter.com/OpenMRS/statuses/86188672902365184>
22:18:31 *** mandric has joined #openmrs
22:50:23 *** cta has quit IRC
22:56:44 *** mandric has quit IRC
23:05:54 *** cta has joined #openmrs
23:11:37 <cta> djazayeri: Darius, I have already added lack validation checks for all fileds that have units columns. Commited code at rev:21152
23:11:51 <djazayeri> thanks, can you comment that on the relevant ticket?
23:11:51 <cta> fileds -> fields
23:12:05 <cta> I just did it
23:12:14 <OpenMRSBot> Recent updates in the world of openmrs: New Changeset: OpenMRS (order-entry): Followup fix to TRUNK-2425 <http://feedproxy.google.com/~r/OMRStrunk/~3/1DCqX5GcHys/OpenMRS>
23:13:13 <cta> djazayeri: It's a bit late in Ukraine. So, good bye Darius, have a nice eve
23:13:18 <djazayeri> gnight
23:13:28 <cta> good bye, guys
23:13:34 *** cta has quit IRC
23:21:46 *** gbastien has joined #openmrs
23:26:41 *** gbastien has quit IRC
23:39:28 *** gbastien has joined #openmrs
23:42:57 *** djazayeri has quit IRC
23:52:36 *** wyclif has quit IRC
23:54:01 *** guduji has joined #openmrs