Tag Archives: oracle central designer edc tool

Want to become an {EDC} Developer? Take this test

I have been contacted on multiple occasions in recent years about how to become an {EDC} Developer or clinical programmer.

If you are currently working in the industry, the transition should be swift.  But for those working outside the pharmaceutical/biotechnology industry, I recommend you take a SAS programming course or data analytics/ visualization course since {EDC} training only is available for those already in the industry and for those sponsored by your employer.  There is no official public training for a specific {EDC} tool. Your company must be a user (Customer) of the tool for you to gain some knowledge.

Here are some examples of custom programs. Test your readiness.

Example 1:

Comparing two (2) strings a and b:

string dbtool=”Rave”;

if (dbtool == “Rave”)

if (dbtool.Equals(“Rave”))

OR how about…

String strA;

String strB;

If (strA == strB)

{

System.console.writeline (“StringA’s value is same as StringB’s value.”);

}

 

Example 2:

Switch case:  to store a value in int x if the value of n is “RAVE”, 2 if y is “INFORM”, 3 if y is “OCRDC”, and 0 otherwise.

switch (n)

{

case “1”:

Console.WriteLine(“You choosed RAVE”);

intVarEDC ==1;  break;

case “2”:

Console.WriteLine(“You choosed INFORM”);

intVarEDC ==2; break;

case “3”:

Console.WriteLine(“You choosed OCRDC”);

intVarEDC==3;  break;

default:

Console.WriteLine(“Invalid selection {0}”, n);

Console.WriteLine(“Please input 1, 2, or 3”);

intVarEDC == 0; break;

}

Example 3: Arrays

Can you guess the output to this program?

public static void printf(params object[] args)

{

for (int i = 0; i < args.Length; i++)

{

Console.WriteLine(“args[{0}] = {1}”, i args[i]);

}

}

public static void Main()

{

printf(“Thank you”, 4, “visiting”, “EDC Developer.”, “Says”);

}

Some tips or best practices when working with Rave Edit checks and custom fuctions:

  • Always put record position 0 in Edit Check Steps and Actions for standard DataPoints
    • Note: In the recent release of Rave, this is mandatory.
  • Use ChangeCount Property wherever possible to execute only for the submitted datapoints.
    • ex: If (dpAETERM != null && dpAETERM.Active && dpAETERM.ChangeCount  > 0)
  • Avoid using “true” parameter in the FetchAllDataPointsForOIDPath for Log forms.
    • Bad example: datapoints dpAE = CustomFunction.FetchAllDataPointsForOIDPath(“AESEV”, “AE”, “AE”, subject, true)
    • Good example: datapoints dpAE = CustomFunction.FetchAllDataPointsForOIDPath(“AESEV”, “AE”, “AE”, subject)

If you wrote similar programs or are comfortable writing these types of programs then you are ready for your next challenge. But if you do not know anything about C sharp programming or {EDC} in general, don’t despair. We are here to help.

Subscribe to my blog’s RSS feed and email newsletter to get immediate updates on the latest news, articles, and tips. I am available on LinkedIn or my personal webpages: EDC Developer or Clinical Programmer. Or contact me to discuss any projects or contracts you may have and need support with.

Advertisements

Central Designer : Custom Function

A few days ago I received an interesting mail from M. Gupta from my other personal website EDC Developer in which Gupta asked: “Custom Function not working. Hi Anayansi, I have developed a custom function in C# for Central designer but looks like it is not even executing could you please share the steps to create and deploy the custom function”.

First of all, sorry it took me a little longer to respond. My time is limited and I don’t often get this kind of emails from my EDC Developer personal site (this website is for recruiters / potential clients for consulting assignments). Here at {EDC} Developer wordpress, I shared knowledge-based and industry related practices.

anayansigamboa - c# programming
image credit courtesy of Google

Before you can start rules programming in Central Designer, you must make sure you have the following rights assigned to you:

Study Rule Design (either as a study designer or rule writer):

  • Import User-defined functions
  • Define/modify data entry rules
  • Define/modify constants

Some companies assigned a group of people to write rules (rule writers but without access to other modules/features in CD) and the study designer is in charged of the eCRF study build (forms design). That way, while a study designer is building a form, the rule programmer can start edit checks/rule programming activities on other forms.

Remember the custom functions are programs written outside Central Designer. Functions allow you to encapsulate a piece of code and call it from other parts of your code. You may very soon run into a situation where you need to repeat a piece of code, for multiple visits for example, and this is where functions come in.

You will need Visual Studio or C#. Once you program and test your code and assuming it is working, you can load it onto CD (see user rights and refer to the annotated eCRF).

Example: Query rules may not run as expected on initial submissions for an itemset, if there is a calculation rule that sets the value on an item in a different visit, and the calculation rule is attached to the same form as the query rule.

In a previous article about troubleshooting in CD, I discussed some ways to troubleshoot rules. It will give you some insights about what to check when a rule is not working.

Something else to consider during rule development:

  • Source control your code and binaries using VSS or similar tools.
  • dll versioning may cause existing functions to stop working.
  • You can deploy functions on a study or library level. Any changes will affect other studies.
  • Remove anything that is not being referenced
  • Try using Try-Catch
  • Remember to reference CD (still called PhaseForward or see other functions provided by Oracle/PhaseForward during the initial installation) still under the old name – PhaseForward
  • Unit test (extensively) in a test environment

Rules Unit Testing:

  • Turn on rule tracing in the InForm event log
  • Check the log (warnings / errors can give you some clues that something is not right with an edit check calling this new custom function
  • Write and run test cases for data-entry rules, global conditions or workflow rules (this is very important)

Now we are ready for testing in InForm (this requires deployment).

And if it all else fails, try this article about Learn How to Avoid The 10 Most Common C# Mistakes.

Good luck and thank you for connecting.

Comments? Please post it below.

Anayansi Gamboa, MPM, an EDC Developer Consultant and clinical programmer for the Pharmaceutical and Biotech industry with more than 13 years of experience.

Available for short-term contracts or ad-hoc requests. See my specialties section (Oracle, SQL Server, EDC Inform, EDC Rave, OpenClinica, SAS and other CDM tools)