Пример #1
0
        // 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);
        }
Пример #2
0
        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);
        }