Best Practice for adding concepts to an Implementation

What is the best practice recommended for adding concepts to an implementation. I have seen the following:

  1. CIEL Concepts: Use MDS packages from a dedicated terminology server
  • What happens as the packages become numerous across multiple releases?
  • The MDS packages are zip files which are binary therefore not easy to navigate and search as one looks for the source of concepts
  1. Use DataExchange as in Reference Application: XML based data set configuration
  • Can be version controlled and edited
  • Not sure of performance on startup as the concepts increase
  1. Use SQL scripts - hate this one with a passion but gets the job done, makes changes brittle

  2. Code - examples in PIH

  • Need developer skills, and its pretty complex but maybe as much as the DataExchange version (Java vs XML)
  1. OCL work in progress - not yet sure how it integrates in different workflows at this time

I know there is a drive to try to standardize concepts but this is not always possible in the time that implementations have to get features out.

Looking forward to hearing any experiences and recommendations

At PIH, we use 3 of these methods:

  1. PIH generates mds packages from a PIH dedicated terminology server. These mds packages are using as part of our code and deployment. @ssmusoke is correct that the mds zip files are not transparent and it is difficult to locate the source for a concept.
  2. Not used
  3. Rarely used but a convenience with adding a large group or creating a convSet.
  4. New and modified concepts added in code. PIH Malawi example
  5. Future. We would love to have a smoother path and hope that OCL collections and the OCL service module will replace our kludgy concept management and deployment.

Much appreciated post, @ssmusoke. I’d like a larger discussion including @darius @raff @akanter about where we are and the progress to expect with OCL in the near future.

@ssmusoke all the currently-available approaches are bad in their own way.

DataExchange is better than SQL scripts in my opinion. (But both of these will overwrite by concept_id.)

MDS Packages or Code will let you install concepts into an existing installation, without knowing what concept_ids may already be there (generally matching on UUID).

OCL approaches are still a work in progress, and if you want to do this today, it’s (still) not an option for you.