Have you implemented OpenMRS? Please participate in the Implementation Site Survey. If you already have, thank you!
Paul Biondich, Ben Wolfe, Ada Yeung, Hamish Fraser, Darius Jazayeri, Burke Mamlin, Justin Miranda, Christian Allen
Sandy Poremba, Doreen Harley
Paul Biondich, Ben Wolfe, Ada Yeung, Christian Allen, Darius Jazayeri, Burke Mamlin, Hamish Fraser
Overview of Web Service:
Christian was trying to build it as a dictionary import tool, using web services, so that you can essentially tell an instance of OpenMRS where to find a server that has a master dictionary on it and once you save that you can at the click of a button, import the dictionary from there. I was able to get it to the point where it was taking concepts from that other remote serverÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢s dictionary and merging them into the concept table of that server, which may not be the final way of doing it and in fact, I think it will not be the final way. Then, what I did was going a step further to do that over using SSL and was able to get that to work. The final step I wanted to do was get it to authorize the user that is accessing via web services. The problem I ran into was that it wasnÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢t using the same session. It would authenticate successfully but then the next request would be as if it were it was a completely different session and therefore it wouldnÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢t give you access to import the dictionary. So, when I hit that point I had to switch to other things and havenÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢t gotten back to it. All the code is under a branch called dictionary import. I put the web services classes are all under source/web. I donÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢t know if I want to separate it further than that but I did put it sort of as the web part of the project.
Paul asked if Christian was creating a dictionary import module and that implemented some web service features or if he was trying to create the beginnings of a full web service package that would be used by the dictionary import tool. Christian responded that he did a lot of work to put foundations in place so that when they all want to use other web services features in the future it will be easier or at least this is what he tried to do. He did not try to make this a separate module, in terms of how they use modules now. ItÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢s more of a framework for doing more web services in the future. ItÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢s more dictionary import.
Darius brought up that the Dell web service developer pack, the last version released independently of Glass Fish, lacked some important feature about automatic XML serialization and deserialization, so I believe Christian has to recompile some parts of it. So, ideally we would need to replace that with a newer version of the web service developer package.
Christian said in terms of XML serialization/deserialization is the problem that they were having is that with all our classes that are coming out of the data base, basically all out high-rank classes, any of them that have foreign key references also have a reference to the parent object, as well. For example, the object itself also has a reference to its parent program. The child points back to the parent and when you try to serialize that, you have all kinds of stack overflows because it was trying to turn it into XML with an infinitely nesting XML document. The simple fix is, and I found other people that had ran into the same problem online and followed what seemed to the best way around it, is to decompile and then put in some lines and the run methods about remembering what objects youÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ve already written to XML and then not repeating it.
Paul wanted to explain why they were asking Christian to give an overview on the web service. We have people that are interested in building a radiology pack system but itÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢s a very early ÃƒÂ¢Ã¢â€šÂ¬Ã…â€œpoor manÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢sÃƒÂ¢Ã¢â€šÂ¬Ã‚Â pack system. They basically want to enter chest x-ray interpretations, along with being able to capture some free text about the report and the image itself. What we heard about today was a prototype where they would actually be building their limb system and it would communicate with OpenMRS through a service on our side that allows them to identify the patient and so the service that we would ultimately like to build, the web services one where they can enter a medical record and can get back a patient ID or enter in a series of demographics to get back a list of patients with patient IDÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢s and then their interface can select a patient from the criteria that they enter. They would then do their report and generate an HL7 message and we would create a web service on our side to receive that message and add it to the que, along with that HL7 message would be the coded interpretation of the x-ray results, maybe a pre-text OBX, along with an OBX with a pointer to an image. The third service we would create is if they wanted to pull up an x-ray image from their ÃƒÂ¢Ã¢â€šÂ¬Ã…â€œpack systemÃƒÂ¢Ã¢â€šÂ¬Ã‚Â we could then make a query with their pointer that would link to that file and it would send us back that image through the third service. Burke said he would like to get them some services within the next week or two, so probably what he will do as a short term solution is create a little module that implements a couple of servlets.
After some discussion about whether to make this a module or not, Christian expressed an interest in getting into modules and wanting to get back into web service.
Paul-Just to let you know how we are growing AMRS, over the past week, weÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ve talked about extending out these appendages to a radiology system and we are also going to potentially start using your program a little bit. It would be nice at some point to plot out what our strategy is for that because I donÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢t know if we have come to a consensus of what that looks like. We have this notion of pregnancy evaluations for potential HIV transmission to children. These are people that arenÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢t necessarily going to become long term patients of the system but we are starting to realize that our medical records system is going to go beyond the HIV system. They had placed kind of an artificial border, at least up until recently, that our system just contain HIV patients but we going to start to extend that out and we are going to start dishing numbers out to primary care folks as well. So, there are open clinics to test all mothers who are pregnant. The mothers who are HIV positive, they want to insure that they get followed up and added into the clinic. Burke wanted to know if there were things that they could see in OpenMRS right now that are using the program stuff are is that all particular to PHI? Darius said you can build states within the webapp. In the administrative side you can create programs and work flows and states and then also you can enroll or chose a status of a patient in a program. You have to create concepts in the dictionary for your program, your work flow, and your states and then from the manage programs tool, you can see which programs have which work flows and which work flows have which states.
Paul said the other thing that the other thing that the group had spent a lot of time talking about this week was the changes that have to occur in the system to get 1.1 data module out the door. There are a lot of changes that have occurred with the data base and we believe that there are a couple of big fundamental changes that if we donÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢t make them soon it is going to become increasingly difficult to make them later. The biggest most fundamental one is the extraction of person from patient and user.
Discussion was made concerning whether or not to collect data on users/health care workers and relatives as they relate to patients. Pros and cons need to be weighed in order to determine whether or not this will be useful.
Discussion about how to enhance the home page on OpenMRS to make PHI and Regenstrief more visible as partners was brought up.
Before Paul left he told the group to expect an e-mail from Sandy every Tuesday, asking for agenda items, which will be added to the weekly calls.