openEHR terminology - wiki page

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

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

ISO 3166-1 codes are in Uppercase

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

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

All - feel free to rewrite the wiki page directly - that’s what wikis are for…

  • thomas

Rong Chen wrote:

(attachments)

OceanCsmall.png

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?

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 ???

(attachments)

openehr_terminology_en.xml (29.9 KB)

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.

Thank you Tim!
I am very embarrased I could not find the former discussion.

Since you ask for comments.....

One question:
Why did you choose for RESTful?

Thanks
Bert

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.

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:

(attachments)

OceanCsmall.png

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

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

Hi Bert,

Because RESTful service is very convinient for me.
It is very easy to implement and use RESTful service by Ruby on Rails.

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:

(attachments)

OceanCsmall.png

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

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.

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

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