// A helper function called from the loop that goes through the CTG secondary Id data // It tries to make the data as complete as possible, depending on the typem of // secondary id that is being processed. public IdentifierDetails GetIdentifierProps(string id_type, string id_org, string id_value) { // use initial values // to create id details object IdentifierDetails id = new IdentifierDetails(id_type, id_org, id_value); if (id_org == null || id_org == "Other" || id_org == "Alias Study Number") { id.id_org_id = 12; id.id_org = "No organisation name provided in source data"; } if (id_type == null) { id.id_type_id = 1; id.id_type = "No type given in source data"; } else if (id_type == "Other Identifier") { id.id_type_id = 90; id.id_type = "Other"; } else if (id_type == "U.S. NIH Grant/Contract") { id.id_org_id = 100134; id.id_org = "National Institutes of Health"; id.id_type_id = 13; id.id_type = "Funder ID"; } else if (id_type == "Other Grant/Funding Number") { id.id_type_id = 13; id.id_type = "Funder ID"; } else if (id_type == "EudraCT Number") { id.id_org_id = 100123; id.id_org = "EU Clinical Trials Register"; id.id_type_id = 11; id.id_type = "Trial Registry ID"; } else if (id_type == "Registry Identifier") { id.id_type_id = 11; id.id_type = "Trial Registry ID"; string idorg = id_org.ToLower(); if (idorg.Contains("who") || idorg.Contains("utn") || idorg.Contains("ictrp") || idorg.Contains("universal")) { // UTN number - check for ictrp before checking ctrp id.id_org_id = 100115; id.id_org = "International Clinical Trials Registry Platform"; } else if (idorg.Contains("ctrp") || idorg.Contains("pdq") || idorg.Contains("nci")) { // NCI CTRP programme id.id_org_id = 100162; id.id_org = "National Cancer Institute"; id.id_type_id = 39; id.id_type = "NIH CTRP ID"; } else if (idorg.Contains("daids")) { // NAID programme id.id_org_id = 100168; id.id_org = "National Institute of Allergy and Infectious Diseases"; id.id_type_id = 40; id.id_type = "DAIDS ID"; } else if (idorg.Contains("japic") || idorg.Contains("cti")) { // japanese registry id.id_org_id = 100157; id.id_org = "Japan Pharmaceutical Information Center"; } else if (idorg.Contains("umin")) { // japanese registry id.id_org_id = 100156; id_org = "University Hospital Medical Information Network CTR"; } else if (idorg.Contains("isrctn")) { // isrctn registry id.id_org_id = 100126; id.id_org = "ISRCTN"; } else if (idorg.Contains("india") || id_org.Contains("ctri")) { // indian registry id.id_org_id = 100121; id.id_org = "Clinical Trials Registry - India"; id.id_value = id.id_value.Replace("/", "-"); // slashes in id causes problems for derived paths } else if (idorg.Contains("eudract")) { // EU CTR id.id_org_id = 100123; id.id_org = "EU Clinical Trials Register"; } else if (idorg.Contains("drks") || idorg.Contains("german") || idorg.Contains("deutsch")) { // German registry id.id_org_id = 100124; id.id_org = "Deutschen Register Klinischer Studien"; } else if (idorg.Contains("nederlands") || idorg.Contains("dutch")) { // Dutch registry id.id_org_id = 100132; id.id_org = "The Netherlands National Trial Register"; } else if (idorg.Contains("ansm") || idorg.Contains("agence") || idorg.Contains("rcb")) { // French asnsm number id.id_org_id = 101408; id.id_org = "Agence Nationale de Sécurité du Médicament"; id.id_type_id = 41; id.id_type = "Regulatory Body ID"; } else if (idorg.Contains("iras") || idorg.Contains("hra")) { // uk IRAS number id.id_org_id = 101409; id.id_org = "Health Research Authority"; id.id_type_id = 41; id.id_type = "Regulatory Body ID"; } else if (idorg.Contains("anzctr") || idorg.Contains("australian")) { // australian registry id.id_org_id = 100116; id.id_org = "Australian New Zealand Clinical Trials Registry"; } else if (idorg.Contains("chinese")) { // chinese registry id.id_org_id = 100118; id.id_org = "Chinese Clinical Trial Register"; } else if (idorg.Contains("thai")) { // thai registry id.id_org_id = 100131; id.id_org = "Thai Clinical Trials Register"; } else if (idorg.Contains("utn")) { // thai registry id.id_org_id = 100131; id.id_org = "Thai Clinical Trials Register"; } if (idorg == "jhmirb" || idorg == "jhm irb") { // ethics approval number id.id_org_id = 100190; id.id_org = "Johns Hopkins University"; id.id_type_id = 12; id.id_type = "Ethics Review ID"; } if (idorg.ToLower().Contains("ethics") || idorg == "Independent Review Board" || idorg.Contains("IRB")) { // ethics approval number id.id_type_id = 12; id.id_type = "Ethics Review ID"; } } if (id.id_type_id == 1 || id.id_type_id == 90) { if (id_org != null) { if (id_org == "UTN") { // WHO universal trail number id.id_org_id = 100115; id.id_org = "International Clinical Trials Registry Platform"; id.id_type_id = 11; id.id_type = "Trial Registry ID"; } if (id_org.ToLower().Contains("ansm") || id_org.ToLower().Contains("rcb")) { // French ANSM number id.id_org_id = 101408; id.id_org = "Agence Nationale de Sécurité du Médicament"; id.id_type_id = 41; id.id_type = "Regulatory Body ID"; } if (id_org == "IRAS") { // uk IRAS number id.id_org_id = 101409; id.id_org = "Health Research Authority"; id.id_type_id = 41; id.id_type = "Regulatory Body ID"; } if (id_org == "JHMIRB" || id_org == "JHM IRB") { // ethics approval number id.id_org_id = 100190; id.id_org = "Johns Hopkins University"; id.id_type_id = 12; id.id_type = "Ethics Review ID"; } if (id_org.ToLower().Contains("ethics") || id_org == "Independent Review Board" || id_org == "Institutional Review Board" || id_org.Contains("IRB")) { // ethics approval number id.id_type_id = 12; id.id_type = "Ethics Review ID"; id.id_org_id = 102374; id.id_org = "Unspecified IRB / Ethics Review Board"; } if (id_org.ToLower() == "pdq") { // NCI Physician Database id id.id_org_id = 100162; id.id_org = "National Cancer Institute"; } } if (id_value.Length > 4 && id_value.Substring(0, 4) == "NCI-") { // NCI id id.id_org_id = 100162; id.id_org = "National Cancer Institute"; } } return(id); }
public IdentifierDetails GetISRCTNIdentifierProps(string id_value, string study_sponsor) { // use initial values to create id details object IdentifierDetails id = new IdentifierDetails(14, "Sponsor ID", study_sponsor, id_value); string id_val = id_value.Trim().ToLower(); if (id_val.Length < 3) { // very unlikely to be a useful id! id.id_type = "Protocol version"; } // is id_value a protocol version number? // These are usually numbers (e.g. 1, 1.0, 2, 3.1, 2.01) else if (id_val.Length <= 4 && Regex.Match(id_value, @"^(\d{1}\.\d{1}|\d{1}\.\d{2})$").Success) { // very unlikely to be a useful id! id.id_type = "Protocol version"; } // contains 'version' and a number at the beginning else if (Regex.Match(id_val, @"^version ?([0-9]|[0-9]\.[0-9]|[0-9]\.[0-9][0-9])").Success) { // very unlikely to be a useful id! id.id_type = "Protocol version"; } // contains 'v' and a number at the beginning else if (Regex.Match(id_val, @"^v ?([0-9]|[0-9]\.[0-9]|[0-9]\.[0-9][0-9])").Success) { // very unlikely to be a useful id! id.id_type = "Protocol version"; } // all zeroes? else if (Regex.Match(id_value, @"^0+$").Success) { // very unlikely to be a useful id! id.id_type = "Protocol version"; } //starts with zeroes else if (Regex.Match(id_value, @"^0+").Success) { string val2 = id_value.TrimStart('0'); if (val2.Length <= 4 && Regex.Match(val2, @"^(\d{1}|\d{1}\.\d{1}|\d{1}\.\d{2})$").Success) { // very unlikely to be a useful id! id.id_type = "Protocol version"; } } // is it a Dutch registry id? if (Regex.Match(id_value, @"^NTR\d{2}").Success) { id.id_org_id = 100132; id.id_org = "The Netherlands National Trial Register"; id.id_type_id = 11; id.id_type = "Trial Registry ID"; // can be a 4, 3 or 2 digit number if (Regex.Match(id_value, @"^NTR\d{4}$").Success) { id.id_value = Regex.Match(id_value, @"^NTR\d{4}$").Value; } else if (Regex.Match(id_value, @"^NTR\d{3}$").Success) { id.id_value = Regex.Match(id_value, @"^NTR\d{3}$").Value; } else if (Regex.Match(id_value, @"^NTR\d{2}$").Success) { id.id_value = Regex.Match(id_value, @"^NTR\d{2}$").Value; } } // a Eudract number? if (Regex.Match(id_value, @"[0-9]{4}-[0-9]{6}-[0-9]{2}").Success) { id.id_org_id = 100123; id.id_org = "EU Clinical Trials Register"; id.id_type_id = 11; id.id_type = "Trial Registry ID"; id.id_value = Regex.Match(id_value, @"[0-9]{4}-[0-9]{6}-[0-9]{2}").Value; } // An IRAS reference? if (id_val.Contains("iras") || id_value.Contains("hra")) { if (Regex.Match(id_value, @"([0-9]{6})").Success) { // uk IRAS number id.id_org_id = 101409; id.id_org = "Health Research Authority"; id.id_type_id = 41; id.id_type = "Regulatory Body ID"; id.id_value = Regex.Match(id_value, @"[0-9]{6}").Value; } else if (Regex.Match(id_value, @"([0-9]{5})").Success) { // uk IRAS number id.id_org_id = 101409; id.id_org = "Health Research Authority"; id.id_type_id = 41; id.id_type = "Regulatory Body ID"; id.id_value = Regex.Match(id_value, @"[0-9]{5}").Value; } else { id.id_type = "Protocol version"; } } // A CPMS reference? if (id_val.Contains("cpms") && Regex.Match(id_value, @"[0-9]{5}").Success) { // uk CPMS number id.id_org_id = 102002; id.id_org = "Central Portfolio Management System"; id.id_type_id = 13; id.id_type = "Funder Id"; id.id_value = Regex.Match(id_value, @"[0-9]{5}").Value; } // An HTA reference? if (id_val.Contains("hta") && Regex.Match(id_value, @"\d{2}/(\d{3}|\d{2})/\d{2}").Success) { // uk hta number id.id_org_id = 102003; id.id_org = "Health Technology Assessment programme"; id.id_type_id = 13; id.id_type = "Funder Id"; id.id_value = Regex.Match(id_value, @"\d{2}/(\d{3}|\d{2})/\d{2}").Value; } return(id); }