# openEHR terminology - wiki page **Category:** [Implementers (archive)](https://discourse.openehr.org/c/implementers-archive/158) **Created:** 2009-07-21 17:37 UTC **Views:** 1 **Replies:** 23 **URL:** https://discourse.openehr.org/t/openehr-terminology-wiki-page/14913 --- ## Post #1 by @thomas.beale various people have \(justifiably\) complained about the openEHR terminology file currently in the official release\. It has been suggested that the Java project one should be used to replace this\. I have created a wiki page help discuss this \- see http://www.openehr.org/wiki/display/spec/openEHR+Terminology \- thomas beale --- ## Post #2 by @Peter_Gummer1 Thomas Beale wrote: > various people have \(justifiably\) complained about the openEHR > terminology file currently in the official release\. It has been > suggested that the Java project one should be used to replace this\. I > have created a wiki page help discuss this \- see > http://www.openehr.org/wiki/display/spec/openEHR+Terminology The first thing I see in the Java terminology file are upper\-case country codes: "AF", etc\. This could be a breaking change\. Which is correct: "AF" or "af"? \- Peter --- ## Post #3 by @yampeku ISO 3166\-1 codes are in Uppercase --- ## Post #4 by @Peter_Gummer1 Diego Boscá wrote: > ISO 3166\-1 codes are in Uppercase http://www.openehr.org/releases/1.0.2/architecture/terminology.pdf page 10 needs to be corrected then\. \- Peter --- ## Post #5 by @system Thanks for putting this up, Tom\! I have commented your questions on the Wiki page and uploaded the XSD file of the current terminology file used by the Java project\. Cheers, Rong --- ## Post #6 by @thomas.beale All - feel free to rewrite the wiki page directly - that's what wikis are for.... - thomas Rong Chen wrote: [details="(attachments)"] ![OceanC\_small.png|74x72](upload://5I367QG2SMJUp18Pt3jF6yz13Ey.png) [/details] --- ## Post #7 by @system I am making simple terminal server with Ruby on rails\. First, I extracted openEHR terminology from http://www.openehr.org/releases/1.0.2/architecture/terminology.pdf Second, I made csv file to import to SQLite3\. Third, an error occured that id is not unique\. I found overlaped id 204 on the page 18\. For tentative solution, I assigned 205 to internet telephone, because 205 is not assigned\. Is this typo? --- ## Post #8 by @Tim_Cook2 Sorry I can't find the thread right now but this was discussed\. The solution in OSHIP is to do as you did; changing internet telephone to 205\. Also there are at least one or two more of these in the terminology\. Attached is the re\-coded file we use\. I suppose that we had the discussion and we implemented the decision but never went and filed a CR on the issue\. This is something that needs to be done because that is probably why the changes didn't make it into 1\.0\.2 ???? [details="(attachments)"] [openehr\_terminology\_en.xml|attachment](upload://2Ail6D58RMLFCz3dLjQLdGWiRgF.xml) (29.9 KB) [/details] --- ## Post #9 by @system Hi All, I have developed a simple and RESTful terminology server with Ruby on Rails\. If you access with this format with HTTP get method, returns simple XML http://ts.openehr.jp/terminology/name/lang/id For example, http://ts.openehr.jp/terminology/openehr/en/0 returns: <terminology> <openehr\-id>0</openehr\-id> <rubric>"self"</rubric> </terminology> Notice: Since this is a experimental implementation, you can get only 'openehr terminology' by 'en language'\. Please comment this simple terminology server\. --- ## Post #10 by @system Thank you Tim\! I am very embarrased I could not find the former discussion\. --- ## Post #11 by @system Since you ask for comments\.\.\.\.\. One question: Why did you choose for RESTful? Thanks Bert --- ## Post #12 by @thomas.beale The PR is here [http://www.openehr.org/issues/browse/SPECPR-17](http://www.openehr.org/issues/browse/SPECPR-17) (from Tim on 30 April 2009). There probably was a previous discussion, but if it wasn't on the issue tracker, we forgot it and it didn't get into Release 1.0.2. Never mind - I expect we will create a Release 1.0.3, because there are a number of other small issues that should be simply fixed soon. Tim - can you attach your corrected XML either to SPECPR-17 or to the wiki page I created recently for the terminology? thanks - thomas Tim Cook wrote: [details="(attachments)"] ![OceanC\_small.png|74x72](upload://5I367QG2SMJUp18Pt3jF6yz13Ey.png) [/details] --- ## Post #13 by @system Hi all, The XML uploaded by Tim seems to be identical to the terminology XML file from the Java project except there are two differences: 1\) it has one missing concept group called "multimedia" 2\) two duplicated concept ids are fixed in Tim's version I just updated the terminology XML of the Java project in the Subversion repository with the correct ids\. It can be reached from here: http://www.openehr.org/svn/ref_impl_java/TRUNK/mini-termserv/src/main/resources/openehr_terminology_en.xml Cheers, Rong --- ## Post #14 by @Tim_Cook2 AAhhh, found the thread \(of sorts\) 2009 March 20; openEHR Concept Ids\. > The PR is here http://www.openehr.org/issues/browse/SPECPR-17 \(from > Tim on 30 April 2009\)\. There probably was a previous discussion, but > if it wasn't on the issue tracker, we forgot it and it didn't get into > Release 1\.0\.2\. Never mind \- I expect we will create a Release 1\.0\.3, > because there are a number of other small issues that should be simply > fixed soon\. Sounds Good\. > Tim \- can you attach your corrected XML either to SPECPR\-17 or to the > wiki page I created recently for the terminology? Yep\. I'll put it on the PR\. Cheers, Tim --- ## Post #15 by @system Hi Bert, Because RESTful service is very convinient for me\. It is very easy to implement and use RESTful service by Ruby on Rails\. --- ## Post #16 by @thomas.beale can I leave it with you who have the secret knowledge to create a synthesis of the files to get a 'definitive' one and post it as an attachment on the wiki page - please feel free to modify the main content of the page. Then we can put a link on the home page to get people using this one, even if it is not yet official, and we will also have the file done for the next release. - thomas Rong Chen wrote: [details="(attachments)"] ![OceanC\_small.png|74x72](upload://5I367QG2SMJUp18Pt3jF6yz13Ey.png) [/details] --- ## Post #17 by @system I hope this message receives the list, a few did not, and a few did. I hear other people experience a similar problem. If it does not show up in the list within an hour, I send it again, if it then shows up double, excuse me for that. > ``` > > > Interesting. > > I found it hard to find good documentation for how to use RESTful in > > Java. > > That is why I did not study it better. > > I will take a look at it. > > It may be a surprise for you that I have written only the codes bellow: > [http://openehr.jp/repositories/entry/ref-impl-ruby/ruby/trunk/terminology/config/routes.rb](http://openehr.jp/repositories/entry/ref-impl-ruby/ruby/trunk/terminology/config/routes.rb) > map.terminology 'terminology/:name/:lang/:code', > :controller => 'terminology', > :action => 'show' > [http://openehr.jp/repositories/entry/ref-impl-ruby/ruby/trunk/terminology/app/controllers/terminology_controller.rb](http://openehr.jp/repositories/entry/ref-impl-ruby/ruby/trunk/terminology/app/controllers/terminology_controller.rb) > def show > @terminology = Terminology.find(:first,:conditions => { > :name => params[:name], > :lang => params[:lang], > :code => params[:code]}) > if @terminology.nil? > render :text => '404 not found.', :status => 404 > else > render :xml => @terminology.to_xml( > :skip_types => true, :only => [:rubric]) > end > end > > ``` Thanks for sharing. I really appreciate that. I cannot read this code for 100% sure. I am not familiar with this code-language. I guess you also have a kind of terminology-server in the background which finds for you the needed values, and is this what you show us the front end that handles a request. Is that so? In that case, the number of code-lines I write is about the same, all the soap handling code is generated from a wsdl-file I created. There is software to do so: wsdl2java In the generated Java-files, I put the calling code in the generated function-bodies (wrappers). The names it creates are not always very good looking (like this: `createPartyRelationship6`), but, nothing is perfect, and it is not a big deal. I do not use the terminology as a service, but as a library, for the moment, it will be a service later on. So I cannot show you a similar example of my code. I can show you however some example code of a connection-function in a demographic-service I write. It receives XML (representing a locatable, in this case a PartyRelationship), from which it creates (also with non-domain attributes, generates a UID) and checks (against archetype-conditions, and other conditions) and persists the newly created locatable. Al this is done in a background library (LocatableUtils), which is (in this case) used by the demographic-service. So the code you see is in fact no more than a connection to that background-library. In this way it is easy to write more webservices doing the same thing, for example in a different protocol (I consider that later, if needed), and it is also possible to interchange the background library for example with a connection to a already available demographic-service. So completely modulair in all directions. Then now the function in the service itself, which is generated, only the body (blue lines) is written by me. `public openehr.rosa.demographicservice.CreatePartyRelationshipResponse createPartyRelationship` `(` `openehr.rosa.demographicservice.CreatePartyRelationship createPartyRelationship6` `)throws CreatePartyRelationshipGenericFaultConditionException3` `{` `try{` ```LocatableUtils lu = new LocatableUtils(null,"");` `ObjectID oi = lu.save(createPartyRelationship6.getPartyRelationship(),"org.openehr.rm.demographic.PartyRelationship");` `CreatePartyRelationshipResponse cdr = new CreatePartyRelationshipResponse();` `if(oi==null) cdr.setOut("");` `else cdr.setOut(oi.getValue());` `return cdr;` `}catch(Exception e){` `throw new CreatePartyRelationshipGenericFaultConditionException3("An error occured: #createPartyRelationship:"+e.getMessage());` `}` `}` The code calls the library, does its thing.and returns a UID-string which is generated back to the caller. Exceptions not handled in the library are also send to the caller of the webservice regards Bert --- ## Post #18 by @system Yes, I have assumed a terminolgy server shared in a hospital\. Our project is in experimental period\. This small terminology server is one of our challenges\. For some reasones, I think REST/Web service is a 'state of arts' and a key technology for our project\. Thank you for sharing demographic codes\. I am just challenging demographic server\. Cheers\. --- ## Post #19 by @system > Our project is in experimental period\. This small terminology server is > one of our challenges\. For some reasones, I think REST/Web service is a > 'state of arts' and a key technology for our project\. The only advantage for REST you gave until now was that it was easily coding, but I showed to you that SOAP is easily coding too, also only four/five lines in Java to respond to a request\. So why is REST state of the art? Bert --- ## Post #20 by @system Sorry if you receive this twice, it did not show up on the list, so I try again sending it\. This happens to about 30% of my mails to this list, nowhere else, sometimes they show up hours later\. In my opinion, someone ought to look at that\. Thanks, Bert\! Here again my reply to KOBAYASHI, Shinji > Our project is in experimental period\. This small terminology server is one of our challenges\. For some reasones, I think REST/Web service is a 'state of arts' and a key technology for our project\. The only advantage for REST you gave until now was that it was easily coding, but I showed to you that SOAP is easily coding too, also only four/five lines in Java to respond to a request\. So why is REST state of the art? Bert --- ## Post #21 by @system I meant that REST is a core technology of Ruby on rails and Web service is the 'state of art'\. I think REST and SOAP work compansative and it should be selected carefully in implementation which to use REST or SOAP case by case\. --- ## Post #22 by @system I have thought 'Web service = SOAP \+ \(REST\)' Am I wrong? I am verry sorry to confuse you\. --- ## Post #23 by @system KOBAYASHI, Shinji schreef: --- ## Post #24 by @system I think that one of the reasons is whether the system needs WSDL or not\. WSDL has a possibility to constrain the definition of complexed data transport cleary\. FYI: Tim O'Reilly, REST vs SOAP at amazon\. http://www.oreillynet.com/pub/wlg/3005 --- **Canonical:** https://discourse.openehr.org/t/openehr-terminology-wiki-page/14913 **Original content:** https://discourse.openehr.org/t/openehr-terminology-wiki-page/14913