sIRB Site Modification Information
When the sIRB moves a site modification they downloaded from IRB Exchange around in the workflow, they need to upload information about the sIRB site modification to the IRB Exchange.
What's Involved
- Add a method to create JSON representing a sIRB site modification's data for upload to the IRB Exchange.
- Add a method to upload sIRB site modification information to the IRB Exchange.
- Modifying the method called by the global state transition post-processing script to upload updates.
Create sIRB Site Modification Information JSON
_IRBSubmission.toSiteSirbModJson Method Example
//Converts the relevant data for a sirb site mod into Json for upload to exchange.
function toSiteSirbModJson()
{
var jsonObj = {};
jsonObj.poRef = this + "";
jsonObj.studyPoRef = this.getQualifiedAttribute("customAttributes.parentStudy.customAttributes.mSSStudy")+ "";
jsonObj.exchangeRef = this.getQualifiedAttribute("customAttributes.draftStudy.customAttributes.mSSPSiteInstitutionalProfile.customAttributes.exchangeID");
jsonObj.status = this.getQualifiedAttribute("status.ID");
return JSON.stringify(jsonObj, null, null);
}
Upload sIRB Site Modification Information to IRB Exchange
_IRBSubmission.uploadToExchangeIfSirbSiteMod Method Example
/** Checks if the submission is a sirb site mod.
If it is then uploads its status on IRB exchange.
**/
function uploadToExchangeIfSirbSiteMod()
{
var isExchangeEnabled = _IRBSettings.getIRBSettings().getQualifiedAttribute("customAttributes.isIRBExchangeEnabled");
if(isExchangeEnabled != true) return;
var submissionType = this.getQualifiedAttribute("customAttributes.submissionType.ID");
var isExternalMod = this.getQualifiedAttribute("customAttributes.parentStudy.customAttributes.mSSStudy");
// check for sirb site mod.
if(submissionType == "MOD" && isExternalMod != null){
var accountName = this.getQualifiedAttribute("customAttributes.IRB.customAttributes.iRBExchangeAccountName");
if(accountName != null){
var exchangeClient = ClickIRBUtils.getExchangeClient(accountName);
var containerRef = IrbExchangeReference.GetEntityForPoRef(this + "", exchangeClient + "");
//a local sirb site mod will not have a container associated
//so we dont want to attempt sending it to exchange.
if(containerRef == null) return;
//else save to exchange
exchangeClient.SaveSirbSiteModification(this.toSiteSirbModJson());
}
}
}
Technical notes about this method example:
- sIRB site modification information is uploaded to the IRB Exchange if the site modification was downloaded from the IRB Exchange. This is done via the method call
IrbExchange.SaveSirbSiteModification.
Place Trigger to Upload sIRB Site Modification Information to IRB Exchange
_IRBSubmission.onGlobalStateTransition Method Snippet Example
// Sirb site modification status always upload to exchange on state transition
this.uploadToExchangeIfSirbSiteMod();