capacity testing

So you've set-up a Study in LibreClinica and your sponsor is happy with the CRFs and everything, but now you are asked: will LibreClinica perform once we have a hundred Subjects in this Study? And what if we have one thousand? Or maybe ten thousand? Or more?
In this how-to-page we describe how you can demonstrate (exactly) how LibreClinica will behave, because we will show step by step how you can duplicate the data for one Subject.

preparing LibreClinica

To do this we use an MsAccess-utility which you can download here.
The utility uses web-services to extract information from the LibreClinica instance and put data into it. So what we need is a copy of the LibreClinica-instance with the Study and corresponding web-services for this instance.
Furthermore we assume you have authorized a user to use the SOAP-services.
Information on how to do this can be found here.
In our example the LibreClinica-instance is called mosaic, the corresponding web-services are mosaicws and the authorised user is grvisser.
There is one last thing we need to check and that is the Study Parameter Configuration which must have the following settings, to match the web-services-requests we will make.

fig. 1: setting the Study Parameter Configuration

Once your two LibreClinica-applications are in place and running you can unzip the file with the MsAccess-utility and open the mdb-file. Then go to the tables-section and open tblSOAPParameters. In it are some parameters and there are two you must change: sysURL: change that to match your situation, and tempdir: change that to the directory you use for temporary files.

fig. 2: setting the URL of the web-service

the sample data

To do our capacity test we must enter data for one Subject. In this example we used Suject CC00001 and as you can see all three Events are marked complete and the third Event, EV3, has two occurrences.

fig. 3: our one and only Subject

And when we click Home, we see a summary of these meager results.

fig. 4: the summary of our starting position

We get the data we will duplicate by creating a dataset of all items of the Study, and extracting the dataset in format CDISC ODM XML 1.3 Clinical Data with LibreClinica extensions. Download the zip-file and extract the XML-file. For this example we renamed the file to CT.xml

fig. 5: the dataset

the hard work

So we now have LibreClinica with the Study with the Subject and the data in XML and web-services to do the duplicating. Let's set the utility to work for us.
First we open frmCreateCopiesOfSubjectPlusData, if that is not already the case. Then we fill in the details:
OCName and OCpassword are the name and password of the LibreClinica-user who is authorised to use SOAP.
The ODM-file is the XML file of the dataset and you can type in the location, or browse to it with the browse-button.
When the location is given, you can click get Subjects and then the single-select will be populated with all Subjects. We choose CC00001.
The last bit of information we must supply is the number of copies we want and in the screenshot we made this 20.000, which is not recommended if you are not familiar with the utility and/or do not know what exactly you want to test. Start with a small number if you're experimenting, just to get the feel of it.

fig. 6: the utility

We start, no surprise, by clicking fill table NewSubjectsToCreate and after some time, depending on the number of copies you chose, the table tblNewSubjectsToCreate will have 20.000 records, ready to be created in LibreClinica. Click create Subjects in OC and go for the coffee-machine, because this can take some time.
After the script has been running for a while, MsAccess no longer updates the screen, but we can see if the script is still running by switching to LibreClinica and looking at the Home-screen.
This part of the process can be restarted as often as is needed.

Once all these Subjects have been created, we must schedule Events for them and this is done by clicking fill table NewEventsToCreate. In our case this is quite substantial, because we have four Events for twenty thousand Subjects, which totals 80.000 Events. These are scheduled by clicking schedule Events in OC and this requires another walk to the coffee machine.
This part of the process can also be restarted, but in case of Events that were defined as Repeating, it results in more recurrences than you wish for. Furthermore, the utility needs at least one successful creation of an Event for each Subject, to retrieve the StudySubjectOID. This is stored in tblStudySubjectOIDs and is used for the import of the ClinicalData.

And when all these Events for all these Subjects have been created, we can start importing the data by, you guessed it, clicking import copy of ClinicalData. This took for my example of 20.000 Subjects several hours and some interruptions and restarts. After each successful import, the corresponding record in table tblNewSubjectsToCreate is deleted, so the number displayed to the right of button fill table NewSubjectsToCreate is (slowly) decreasing. Skip the coffee machine and go home and see in the morning how many Subjects still need data-import. And finally your Home-screen will look something like this:

fig. 7: the end result

It may seem strange that the number of Completed Events is 60.004 and not 80.004, because we imported the data and then the status of the CRFs is set to Complete. But in EV2 there were 2 CRFs and apparently the status of the Event is then set to DataEntryStarted (OC.3.1.2).
(And the 268 Events with status Scheduled are a leftover from an erroneous import.)

Other how-to-pages can be found here.