We are currently working on the forum. For the short-term, all forum content will be in read-only format. We apologize for the interruption and look forward to collaborating with you shortly. All the best in your research!

Has anyone been able to get OC Participate (i.e., OC + Enketo or ODK) working?



  • toskriptoskrip Posts: 279 ✭✭✭
    edited October 2015
    Hi Krister,

    all of the testing that I have made is the actual preparation work for custom made participate that will be build on top of OC OpenRosa API. The prototype that I have now, does not have certain production lvl qualities (e.g. security have to be improved, if it has to run on OC that is opened to outside). I am trying to put together the solution that will be targeted for tablet based ePRO /eCOA collected directly within the organisational internal network (no access from outside, no sms sending to patient mobile phones...).

    to answer your question, you can start testing already but I have to say it is not really for amateurs. I am planning to go to the production with this approach on first or second quarter next year.

    If you are really eager to start testing, these are the components that you would need:
    - install enketo-oc on your server machine (https://github.com/OpenClinica/enketo-express-oc), little bit warning, for non technical user it can be quite complex
    - detailed description of installation are provided e.g. here (http://blog.enketo.org/install-enketo-production-ubuntu/)
    - you would need a customised version of OpenClinica (that disables advanced security check that have been developed to secure OC and OC participate communication)
    - if you are interested in that, please write me an email and I can give you such customised war distribution of OpenClinica

    with these you would be already able to get the integration of enketo and OC running, however you will still have no user interface that will allow you to trigger the form for data entry directly from OpenClinica user interface. For this purpose I am developing a custom made participate portal from where the form for data entry can be triggered directly by user. This is something that currently also relies on our software platform that we develop and run next to OpenClinica (and OC web services). This will also be open sourced early next year, but it increases the complexity as you need to setup additional web application with database etc. (but if you are interested in this, write me an email).

    so if you really want to start testing now... first setup the enekto-oc (I believe this will take you same time)... and than ping me for modified OC war file.


    Post edited by toskrip on
  • kshimamotokshimamoto Posts: 1
    Hello, everyone.

    I successfully acquired the fromList from OpenClinica and had an xform displayed by enketo-express-oc.
    (This is only for displaying the form and doesn't work for data submission back to OpenClinica.)

    Here is how.
    Precondition: OpenClinica(3.6 or later) and enketo-express-oc has been locally installed.
    1. get OpenClinica's source code from the github.
    2. comment out the following lines of the functions of "getFormList()" and "getFormXml()" in OpenRosaServices.java
       if (!mayProceedPreview(studyOID)) 
                  return null;
    3. build and deploy OpenClinica.
    4. configure tomcat to be able to use SSL/TLS
    5. open the tomcat port (8080) and tomcat SSL/TLS port (8443) in the firewall setting.
      And open the enketo-express-oc port (8005) in the firewall of the system where enketo-express-oc is installed.
    6. If you use a self-signed certificate, add a following line in app/controllers/authentication-controller.js of the enketo-express-oc.
      process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
    7. register a form and a study event in the OpenClinica.
    8. get a formList as follows.
      and confirm that a form list has been returned.
    9. add an account to enketo-express-oc as follows.
      curl --user ocrocks: -d "server_url="
      • In this example, OpenClinica works in and enketo-express-oc works in
      • "ocrocks" is an account manager api key of enketo-express-oc. See config/config.json file in enketo-express-oc.
      • "S_DEFAULTS1" is a study OID.
    10. add a survey to enketo-express-oc as follows.
      curl -X POST --user enketorules: -d "server_url="
      and note a returned URL like ""

      Note: "F_WBDVS_001" is a sample form name and version.
    11. show the form via web browser as follows.

  • toskriptoskrip Posts: 279 ✭✭✭
    Getting back to this topic. I was just merging OC 3.9 with my customised participate enabled OC branch. After quick test everything seem to still work just fine. The only thing that changes is that after the submission of participate data it does not change the status of CRF to completed. It is still marked as data entry started. The version that I was using late last year was marking CRF as completed when the participant submitted data. I think this was changed with participate editable forms support. It is not completely clear to me what should be the workflow for marking the CRF as completed now. Because right now even after participate submit the data the web service:


    is still reporting URL for enketo

    can somebody elaborate how the workflow for data submission changed with editable forms support?


  • kristiakkristiak Posts: 1,340 ✭✭✭
    That sounds like a real challenge. I do not think I have the time nor the experience for this type of challenge.


  • toskriptoskrip Posts: 279 ✭✭✭
    I have not implemented editable participate forms in my setup yet, actually I was thinking that I don't really need it. Only want to know what is the official strategy for CRF status change when submitting data via Participate.

  • kristiakkristiak Posts: 1,340 ✭✭✭
    via Email
    Hi Tomas,

    I would think that it is OK to be without the status change, I guess if you want information that a user has sent something, a rule could better handle that and you would like to check it before data is set as complete, anyhow.


  • toskriptoskrip Posts: 279 ✭✭✭
    One more thing is bugging me because I do not understand practical reason behind it. In some of these new REST resources that make participate ticking OC is defining new namespaces for CDISC ODM attributes and elements.


    instead of


    Why do we need this new namespaces? I would understand the use of new namespaces for attributes that are not defined in existing ones (like Url ...). But do we really need new namespace for ClinicalData element (the same for SubjectData, StudyEventData ...) and their standard attributes. It makes it really painful to define unmarshalling operation when processing this new resources when one already have ODM and OC extended ODM domain model annotated with existing namespaces and using this domain model also for RESTfull URLs or creation of ODM XML for imports...

    Little bit more harmonisation please...

  • toskriptoskrip Posts: 279 ✭✭✭
    I have one more update for people following this thread which is related to the way of CRF status changes when using participate. When the Event is scheduled in OC, the CRF get status "Not Started". Than when using OC new REST resource:

    pages/odmk/study/ + studyOid + /studysubject/ + studySubjectOid + /events

    You can get ODM XML with Events and CRFs whose statuses are "Not Started" or "available". These CRFs have associated Url attribute.

    For CRF with "Not Started" status the Url value is the redirection to new Enketo form for specific patient/event/crf.

    Once such CRF is submitted via Enketo the above mentioned REST resource will report such CRF with new status "available". And in this case the Url attribute will hold redirection to another new OC REST resource that deals with editable forms:

    pages/api/v1/editform/ + studyOid + /url?ecid= + patient/event/crf-code

    The proper get request for this resource than gives back another redirection Url that points to Enketo editable form that will be prefilled with previously submitted values. This call, when successful returns the HTTP code 202 (accepted). And the redirection Url is returned in response body (carefull it is within extra double quotation marks, so when you want to redirect automatically you need to remove them before). It may be interesting to modify "returnUrl" query string parameter to return to some custom page once editable form is submitted.

    After modification of data and resubmission from Enketo the CRF reported from REST resource (pages/odmk/study/ + studyOid + /studysubject/ + studySubjectOid + /events) still have status available. It is necessary to change it as completed from OC user interface and afterwards this resource will no longer report it.

Sign In or Register to comment.