Releasing OpenClinica 3.4

Hello Everyone,

I'm excited to announce that OpenClinica 3.4 Community is out! Highlights include:
- A new site user for Data Entry
- New token for StudySubjectOID
- New REST API call using Study Subject ID for clinical data
- Some much-anticipated bug fixes / feature improvements.

For the full Release Notes, go here: https://docs.openclinica.com/release-notes/release-notes-openclinica-3.4-current-production-release

This was going to be a maintenance release but the team out-executed and we were able to get a bit more in. We're also focusing on shorter release cycles so you'll notice more features and fixes coming out sooner. Also, with the move to GitHub and community contributions, we're able to get community fixes in more quickly too!

Cheers!


Tagged:
«1

Comments

  • kristiakkristiak Posts: 1,205 ✭✭✭

    Great new Alice!   I will swith to this version on all our servers immediately.

    Best regards

    Kister

  • GerbenRienkGerbenRienk Posts: 731 ✭✭✭
    Hi Alicia,
    Congratulations for you and the team!
    Great to have both the token for the StudySubjectOID and the option to use the StudySubjectID in REST. Now we can access data from CRFs in other Events, with the code below. A more detailed example can be found at 
    Gerben Rienk
    ---
    <div id="ValueFromOtherEvent"></div>
    <script src="includes/jmesa/jquery.min.js"></script>
    <script>
    $.noConflict();
    jQuery(document).ready(function($) { 
    // let the urlStart end with the OID of your Study
    var urlStart = "rest/clinicaldata/xml/view/S_TDS01/";
    // use for urlTail the StudyEventOID
    var urlTail = "/SE_SCREENING/*";
    // put here the OID of the Item you want to display
    var itemOID = "I_TDSSC_RANDONR";
    // now we can compose the url for the REST-request
    var urlComplete = urlStart + "${studySubjectOID}" + urlTail; 
    // make the request
    $.ajax({
    type: "GET",
    url: urlComplete,
    dataType: "xml",
    success: parseXML
    });
    // analyse the response
    function parseXML(xml){
    // set the default to: not available
    var OtherValue = "not available";
    // loop through the nodes called ItemData ...
    $(xml).find("ItemData").each(function(){
    // ... and look for the one with the OID that was set above ...
    if($(this).attr("ItemOID") == itemOID){
    // and store the value
    OtherValue = "Randomisationnumber as set in the Screening visit: " + $(this).attr("Value");
    }
    })
    // write the value in the div
    $("#ValueFromOtherEvent").html(OtherValue);
    }; 
    })
    </script>
  • lindsay.stevenslindsay.stevens Posts: 391 ✭✭
    via Email
    Hi Gerben,

    Thanks for figuring this out, the write up is excellent as always.

    I was wondering if you had investigated typical query speed?

    I imagine the delay would be small, but adversely affecting the page load
    is my main concern in using this.

    A neat use case would be automating away much of the hassle of
    synchronising an AE grid with an SAE form, by building / overriding the SAE
    term select list dynamically, and maybe do the same with a SAE reference
    item on the AE grid.

    Best regards,
    Lindsay
  • Hi All,

    I'm not able to upgrade from 3.3 nor am I able to do the fresh install. Getting following error in both cases:

    SEVERE: Exception sending context destroyed event to listener instance of class org.akaza.openclinica.control.OCServletContextListener

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/akaza/openclinica/applicationContext-core-db.xml]: Invocation of init method failed; nested exception is liquibase.exception.MigrationFailedException: Migration failed for change set migration/3.4/2014-08-28-5896.xml::2014-08-28-5896_3::jkeremian:

         Reason: liquibase.exception.JDBCException: Error executing SQL                     ALTER TABLE view_dn_stats OWNER TO clinica:

              Caused By: Error executing SQL                        ALTER TABLE view_dn_stats OWNER TO clinica:

              Caused By: ERROR: role "clinica" does not exist


    Thanks,
    Sylwester
  • kristiakkristiak Posts: 1,205 ✭✭✭

    I would recommend that you delete everything and start the install from scratch. It is much more difficult to try to find the error.



  • Hi kristiak,

    Thanks for the reply.

    just downloaded 3.3 and installed fresh without any problems. 

    followed exactly the same procedure, of course different/fresh db and role and got very same error as described above.
  • GerbenRienkGerbenRienk Posts: 731 ✭✭✭
    Hi Sylwester,
    Can you confirm that you have a postgresql-user clinica?
    Kind regards,
    Gerben Rienk
  • sylwester.z.psylwester.z.p Posts: 3
    edited October 2014
    Hi GerbenRienk,

    I can confirm that I do NOT have a postgresql-user 'clinica'. I have chosen not to use this user name for security reasons.

    I sense that user 'clinica' is require for the install/upgrade. 
    Do you think it would be useful for this arribute to be taken form datainfo.properties file as I think other people will face the same issue?

    Considering my situation, would you kindly suggest the next step? 
  • GerbenRienkGerbenRienk Posts: 731 ✭✭✭
    I understand your security concern about 'clinica'. And yes, it would be better to take the name from the datainfo.properties. However all the commands in quartz are hardcoded, I presume. This means that you must do the installation/upgrade as clinica and then after succesful completion transfer the ownership to the another postgresql-account and modify the datainfo.properties accordingly.
    Hope this helps,
    Gerben Rienk
  • GerbenRienkGerbenRienk Posts: 731 ✭✭✭
    Hi Gerben, Thanks for figuring this out, the write up is excellent as always. I was wondering if you had investigated typical query speed? I imagine the delay would be small, but adversely affecting the page load is my main concern in using this. A neat use case would be automating away much of the hassle of synchronising an AE grid with an SAE form, by building / overriding the SAE term select list dynamically, and maybe do the same with a SAE reference item on the AE grid. Best regards, Lindsay
    Lindsay,
    Your question about query speed made me dust of my tool for capacity testing,
    and luckily it still works with oc34. I created a script to make 10 REST calls, all different, and measure the time it takes to get a Status 200-response. This was all within a second when using a blank database: no surprise there. I increased the number of Subjects, but when I was at 1000 Subjects, it occurred to me that not only the number of Subjects might be important, but also the number of records in item_data. So I fiddled the knobs of the util a bit and with 2000 Subjects and some 100.000 item_data, response-times were still about 1 second or less. I then added another 3000 with even more data and for 5000 Subjects with 1,5 million item_data the response-times are between 2 and 3 seconds. I ended this session with 6500 Subjects and 1.8 M records: more or less the same, and will investigate it further, but I will only have time next week. If I find something unexpected I will report it.
    Gerben Rienk
Sign In or Register to comment.