Пример #1
0
        public static SdtmMedDRADescriptors GetSdtmMedDRADescriptors(Dataset dataset)
        {
            var meddraDescriptors = new SdtmMedDRADescriptors();

            meddraDescriptors.LowesLevelTerm_variable         = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "AELLT")?.VariableDefinition;
            meddraDescriptors.LowestLevelTermCode_variable    = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "AELLTCD")?.VariableDefinition;
            meddraDescriptors.PreferredTerm_variable          = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "AEDECOD")?.VariableDefinition;
            meddraDescriptors.PreferredTermCode_variable      = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "AEPTCD")?.VariableDefinition;
            meddraDescriptors.HighLevelTerm_variable          = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "AEHLT")?.VariableDefinition;
            meddraDescriptors.HighLevelTermCode_variable      = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "AEHLTCD")?.VariableDefinition;
            meddraDescriptors.HighLevelGroupTerm_variable     = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "AEHLGT")?.VariableDefinition;
            meddraDescriptors.HighLevelGroupTermCode_variable = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "AEHLGTCD")?.VariableDefinition;
            meddraDescriptors.SystemOrganClass_variable       = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "AESOC")?.VariableDefinition;
            meddraDescriptors.SystemOrganClassCode_variable   = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "AESOCCD")?.VariableDefinition;

            return(meddraDescriptors);
        }
        //public Dictionary<string, VariableDefinition> name2variable { get; set; }

        public static SdtmRowDescriptor GetSdtmRowDescriptor(Dataset dataset)
        {
            var descriptor = new SdtmRowDescriptor();

            descriptor.Class      = dataset.Template.Class;
            descriptor.Domain     = dataset.Template.Domain;
            descriptor.DomainCode = dataset.Template.Code;

            descriptor.ObsIsAFinding = descriptor.Class.ToUpper() == ("FINDINGS");
            descriptor.ObsIsAnEvent  = descriptor.Class.ToUpper() == "EVENTS";

            //IDENTIFIERS
            descriptor.StudyIdentifierVariable =
                dataset.Variables.Single(v => v.VariableDefinition.Name == "STUDYID").VariableDefinition;
            descriptor.DomainVariable =
                dataset.Variables.Single(v => v.VariableDefinition.Name == "DOMAIN").VariableDefinition;
            descriptor.SubjIdVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "SUBJID")?.VariableDefinition;
            descriptor.UniqueSubjIdVariable =
                dataset.Variables.Single(v => v.VariableDefinition.Name == "USUBJID").VariableDefinition;
            descriptor.SampleIdVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name.EndsWith("REFID"))?.VariableDefinition;

            //TOPIC DESCRIPTORS
            descriptor.TopicVariable = dataset.Variables
                                       .Select(l => l.VariableDefinition).FirstOrDefault(v => v.RoleId == "CL-Role-T-2");

            descriptor.TopicCVtermVariable = dataset.Variables
                                             .Select(l => l.VariableDefinition).FirstOrDefault(v => v.Name == descriptor.DomainCode + "DECOD");
            if (dataset.Template.Class.ToLower().Equals("findings"))
            {
                descriptor.TopicCVtermVariable = dataset.Variables
                                                 .Select(l => l.VariableDefinition).FirstOrDefault(v => v.Name == descriptor.DomainCode + "LOINC");
            }

            descriptor.TopicSynonymVariable = dataset.Variables
                                              .Select(l => l.VariableDefinition).FirstOrDefault(v => v.Name == descriptor.DomainCode + "MODIFY");
            if (dataset.Template.Class.ToLower().Equals("findings") || dataset.Template.Code.ToLower().Equals("bs"))
            {
                descriptor.TopicSynonymVariable = dataset.Variables
                                                  .Select(l => l.VariableDefinition).FirstOrDefault(v => v.Name == descriptor.DomainCode + "TEST");
            }


            //GROUP DESCRIPTORS
            descriptor.GroupVariable = dataset.Variables
                                       .Select(l => l.VariableDefinition).FirstOrDefault(v => v.Name == descriptor.DomainCode + "CAT");
            descriptor.SubgroupVariable = dataset.Variables
                                          .Select(l => l.VariableDefinition).FirstOrDefault(v => v.Name == descriptor.DomainCode + "SCAT");


            //QUALIFIERS
            descriptor.QualifierVariables = dataset.Variables
                                            .Select(l => l.VariableDefinition)
                                            .Where(v => v.RoleId == "CL-Role-T-3")
                                            .ToList();
            descriptor.SynonymVariables = dataset.Variables
                                          .Select(l => l.VariableDefinition)
                                          .Where(v => v.RoleId == "CL-Role-T-4")
                                          .ToList();
            descriptor.VariableQualifierVariables = dataset.Variables
                                                    .Select(l => l.VariableDefinition)
                                                    .Where(v => v.RoleId == "CL-Role-T-5")
                                                    .ToList();
            descriptor.ResultVariables = dataset.Variables
                                         .Select(l => l.VariableDefinition)
                                         .Where(v => v.RoleId == "CL-Role-T-8")
                                         .ToList();
            descriptor.TimeVariables = dataset.Variables
                                       .Select(l => l.VariableDefinition)
                                       .Where(v => v.RoleId == "CL-Role-T-6")
                                       .ToList();

            //MedDRAVariables
            if (descriptor.ObsIsAnEvent)
            {
                descriptor.MedDRAvariables = SdtmMedDRADescriptors.GetSdtmMedDRADescriptors(dataset);
                // descriptor.ObsIsMedDRAcoded = SdtmMedDRADescriptors.
            }

            //VISIT
            descriptor.VisitNameVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "VISIT")?.VariableDefinition;
            descriptor.VisitNumVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "VISITNUM")?.VariableDefinition;
            descriptor.VisitPlannedStudyDay =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "VISITDY")?.VariableDefinition;

            //DATETIME
            descriptor.DateTimeVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == descriptor.DomainCode + "DTC")?.VariableDefinition;

            //STUDYDAY
            descriptor.StudyDayVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == descriptor.DomainCode + "DY")?.VariableDefinition;

            //TIMEPOINT
            descriptor.TimePointNameVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == descriptor.DomainCode + "TPT")?.VariableDefinition;
            descriptor.TimePointNumberVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == descriptor.DomainCode + "TPTNUM")?.VariableDefinition;

            //DURATION (Collected NOT derived)
            descriptor.DurationVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == descriptor.DomainCode + "DUR")?.VariableDefinition;

            //START DATETIME
            descriptor.StartDateTimeVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == descriptor.DomainCode + "STDTC")?.VariableDefinition;
            //END DATETIME
            descriptor.EndDateTimeVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == descriptor.DomainCode + "ENDTC")?.VariableDefinition;
            //START STUDY DAY
            descriptor.StartStudyDayVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == descriptor.DomainCode + "STDY")?.VariableDefinition;
            //END STUDY DAY
            descriptor.EndStudyDayVariable =
                dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == descriptor.DomainCode + "ENDY")?.VariableDefinition;


            ////DEMOGRAPHICS SPECIFIC VARIABLES
            ////ARM
            //descriptor.ArmVariable = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "ARM")?.VariableDefinition;
            ////ARMCODE
            //descriptor.ArmCodeVariable = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "ARMCD")?.VariableDefinition;
            ////Subject Reference Start Date
            //descriptor.RefStartDate = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "RFSTDTC")?.VariableDefinition;
            ////Reference End Date
            //descriptor.RefEndDate = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "RFENDTC")?.VariableDefinition;
            ////SITE ID
            //descriptor.SiteIdVariable = dataset.Variables.SingleOrDefault(v => v.VariableDefinition.Name == "SITEID")?.VariableDefinition;

            return(descriptor);
        }