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