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();