Ejemplo n.º 1
0
        internal static EnumResponsesGen1.Gen1Roster Gen1Roster1979( LinksDataSet.tblRelatedStructureRow drRelated, LinksDataSet.tblResponseDataTable dt )
        {
            //LinksDataSet.tblSubjectRow drSubject1, LinksDataSet.tblSubjectRow drSubject2 ) {
            if ( dt == null ) throw new ArgumentNullException("dt");
            if ( drRelated == null ) throw new ArgumentNullException("drRelated");
            const Int32 expectedSurveyYear = 1979;
            LinksDataSet.tblSubjectRow drSubject1 = drRelated.tblSubjectRowByFK_tblRelatedStructure_tblSubject_Subject1;
            LinksDataSet.tblSubjectRow drSubject2 = drRelated.tblSubjectRowByFK_tblRelatedStructure_tblSubject_Subject2;

            string selectToGetLoopIndex = string.Format("{0}={1} AND {2}={3} AND {4}={5}",
                drSubject1.SubjectTag, dt.SubjectTagColumn.ColumnName,
                (Int16)Item.IDOfOther1979RosterGen1, dt.ItemColumn.ColumnName,
                drSubject2.SubjectID, dt.ValueColumn.ColumnName);
            LinksDataSet.tblResponseRow[] drsForLoopIndex = (LinksDataSet.tblResponseRow[])dt.Select(selectToGetLoopIndex);
            Trace.Assert(drsForLoopIndex.Length == 1, "Exactly one row should be returned matching Subject2");
            Trace.Assert(drsForLoopIndex[0].SurveyYear == expectedSurveyYear, "The SurveyYear should be " + expectedSurveyYear);
            Int32 loopIndex = drsForLoopIndex[0].LoopIndex;

            string selectToRoster = string.Format("{0}={1} AND {2}={3} AND {4}={5}",
                drSubject1.SubjectTag, dt.SubjectTagColumn.ColumnName,
                (Int16)Item.RosterGen1979, dt.ItemColumn.ColumnName,
                loopIndex, dt.LoopIndexColumn.ColumnName);
            LinksDataSet.tblResponseRow[] drsForRoster = (LinksDataSet.tblResponseRow[])dt.Select(selectToRoster);
            Trace.Assert(drsForRoster.Length == 1, "Exactly one row should be returned for the Roster relationship to Subject2");
            Trace.Assert(drsForRoster[0].SurveyYear == expectedSurveyYear, "The SurveyYear should be " + expectedSurveyYear);
            EnumResponsesGen1.Gen1Roster relationship = (EnumResponsesGen1.Gen1Roster)drsForRoster[0].Value;
            return relationship;
        }
Ejemplo n.º 2
0
 internal static byte? MotherLoopIndexForChildTag( Int32 motherTag, LinksDataSet.tblSubjectRow drChild, LinksDataSet.tblResponseDataTable dtResponse )
 {
     byte childTwoDigitID = CommonFunctions.LastTwoDigitsOfGen2SubjectID(drChild);
     const Item item = Item.Gen1ChildsIDByBirthOrder;
     string select = string.Format("{0}={1} AND {2}={3} AND {4}={5}",
         motherTag, dtResponse.SubjectTagColumn.ColumnName,
         (Int16)item, dtResponse.ItemColumn.ColumnName,
         childTwoDigitID, dtResponse.ValueColumn.ColumnName);
     LinksDataSet.tblResponseRow[] drs = (LinksDataSet.tblResponseRow[])dtResponse.Select(select);
     Trace.Assert(drs.Length <= 1, "At most one row should be returned.");
     if ( drs.Length == 0 )
         return null;
     else
         return Convert.ToByte(drs[0].Value);
 }
Ejemplo n.º 3
0
        internal static LinksDataSet.tblResponseDataTable ExtendedFamilyRelevantResponseRows( Int32 extendedFamilyID, string itemIDsString, Int32 minRowCount, LinksDataSet.tblResponseDataTable dtResponse )
        {
            string select = string.Format("{0}={1} AND {2} in ({3})",
                extendedFamilyID, dtResponse.ExtendedIDColumn.ColumnName,
                dtResponse.ItemColumn.ColumnName, itemIDsString);
            LinksDataSet.tblResponseRow[] drs = (LinksDataSet.tblResponseRow[])dtResponse.Select(select);

            Trace.Assert(drs.Length >= 0, "There should be at least " + minRowCount + "  row(s) returned.");

            LinksDataSet.tblResponseDataTable dt = new LinksDataSet.tblResponseDataTable();
            foreach ( LinksDataSet.tblResponseRow dr in drs ) {
                dt.ImportRow(dr);
            }
            return dt;
        }
        public static LinksDataSet.tblParentsOfGen1RetroDataTable RetrieveRows( Int32 subject1Tag, Int32 subject2Tag, LinksDataSet.tblParentsOfGen1RetroDataTable dtRetro )
        {
            if ( dtRetro == null ) throw new ArgumentNullException("dsLinks");
            if ( dtRetro.Count <= 0 ) throw new ArgumentException("There should be at least one row in tblParentsOfGen1Retro.");

            string select = string.Format("{0}={1} OR {2}={3}",
                subject1Tag, dtRetro.SubjectTagColumn.ColumnName,
                subject2Tag, dtRetro.SubjectTagColumn.ColumnName);
            LinksDataSet.tblParentsOfGen1RetroRow[] drs = (LinksDataSet.tblParentsOfGen1RetroRow[])dtRetro.Select(select);
            //Trace.Assert(drs.Length >= 1, "There should be at least one row.");

            LinksDataSet.tblParentsOfGen1RetroDataTable dt = new LinksDataSet.tblParentsOfGen1RetroDataTable();
            foreach ( LinksDataSet.tblParentsOfGen1RetroRow dr in drs ) {
                dt.ImportRow(dr);
            }
            return dt;
        }
        public static Tristate RetrieveInHHByYear( Int32 subjectTag, Bioparent bioparent, Int16 year, LinksDataSet.tblParentsOfGen1RetroDataTable dtRetro )
        {
            if ( dtRetro == null ) throw new ArgumentNullException("dsLinks");
            if ( dtRetro.Count <= 0 ) throw new ArgumentException("There should be at least one row in tblParentsOfGen1Retro.");

            string select = string.Format("{0}={1} AND {2}={3} AND {4}={5}",
                subjectTag, dtRetro.SubjectTagColumn.ColumnName,
                Convert.ToByte(bioparent), dtRetro.BioparentColumn.ColumnName,
                year, dtRetro.YearColumn.ColumnName);

            DataRow[] drs = dtRetro.Select(select);
            Trace.Assert(drs.Length <= 1, "There should be at most one row."); //The item asked only until they were 18.  The function could be requesting a year when they were older.
            if ( drs.Length == 0 ) return Tristate.DoNotKnow;

            LinksDataSet.tblParentsOfGen1RetroRow dr = (LinksDataSet.tblParentsOfGen1RetroRow)drs[0];
            if ( dr.IsInHHNull() )
                return Tristate.DoNotKnow;
            else if ( dr.InHH )
                return Tristate.Yes;
            else if ( !dr.InHH )
                return Tristate.No;
            else
                throw new InvalidOperationException();
        }
Ejemplo n.º 6
0
 internal static MarkerGen1Summary[] RetrieveMarkers( Int64 relatedIDLeft, MarkerType markerType, LinksDataSet.tblMarkerGen1DataTable dtMarker, Int32 maxCount )
 {
     if ( dtMarker == null ) throw new ArgumentNullException("dtMarker");
     string select = string.Format("{0}={1} AND {2}={3}",
         relatedIDLeft, dtMarker.RelatedIDColumn.ColumnName,
         (byte)markerType, dtMarker.MarkerTypeColumn.ColumnName);
     LinksDataSet.tblMarkerGen1Row[] drs = (LinksDataSet.tblMarkerGen1Row[])dtMarker.Select(select);
     Trace.Assert(drs.Length <= maxCount, "The number of returns markers should not exceed " + maxCount + ".");
     MarkerGen1Summary[] evidences = new MarkerGen1Summary[drs.Length];
     for ( Int32 i = 0; i < drs.Length; i++ ) {
         evidences[i] = new MarkerGen1Summary((
             MarkerEvidence)drs[i].SameGeneration,
             (MarkerEvidence)drs[i].ShareBiomomEvidence,
             (MarkerEvidence)drs[i].ShareBiodadEvidence,
             (MarkerEvidence)drs[i].ShareBioGrandparentEvidence
         );
     }
     return evidences;
 }
        private static byte? DetermineLastHealthModuleIndex( Item item, Int32 subjectTag, LinksDataSet.tblResponseDataTable dtExtended )
        {
            const Int16 surveyYear = ItemYears.Gen1BioparentAlive;

            string selectToGetLoopIndex = string.Format("{0}={1} AND {2}={3} AND {4}={5} AND {6}>=0",
                subjectTag, dtExtended.SubjectTagColumn.ColumnName,
                Convert.ToInt16(item), dtExtended.ItemColumn.ColumnName,
                surveyYear, dtExtended.SurveyYearColumn.ColumnName,
                dtExtended.ValueColumn.ColumnName);
            LinksDataSet.tblResponseRow[] drsForLoopIndex = (LinksDataSet.tblResponseRow[])dtExtended.Select(selectToGetLoopIndex);

            if ( drsForLoopIndex.Length <= 0 ) {
                return null;
            }
            else {
                byte maxLoopIndex = (from dr in drsForLoopIndex select dr.LoopIndex).Max();
                return maxLoopIndex;
            }
        }
        public static TrendLineGen0InHH RetrieveTrend( Bioparent bioparent, Int32 subjectTag, LinksDataSet.tblParentsOfGen1RetroDataTable dtRetro )
        {
            //, LinksDataSet.tblSubjectDetailsDataTable dtDetail ) {
            if ( dtRetro == null )
                return new TrendLineGen0InHH(yob: 0, hasAnyRecords: false, everAtHome: false, years: null, values: null, ages: null);
            else if ( dtRetro.Count <= 0 )
                throw new ArgumentException("There should be at least one row in tblParentsOfGen1Retro.");

            string selectYears = string.Format("{0}={1} AND {2}={3}",
                subjectTag, dtRetro.SubjectTagColumn.ColumnName,
                (byte)bioparent, dtRetro.BioparentColumn.ColumnName);
            LinksDataSet.tblParentsOfGen1RetroRow[] drs = (LinksDataSet.tblParentsOfGen1RetroRow[])dtRetro.Select(selectYears);
            Trace.Assert(drs.Length >= 0, "At least zero records should be retrieved from tblParentsOfGen1Retro.");
            Int16 yob = (from dr in drs where dr.Age == 0 select dr.Year).First();

            bool? everInHH;
            if ( drs[0].IsInHHNull() ) everInHH = null;
            else everInHH = drs[0].InHH;

            Int16[] years = new Int16[drs.Length];
            byte[] ages = new byte[drs.Length];
            bool?[] inHHs = new bool?[drs.Length];

            //values = (from dr in drsYes select (YesNo)dr.BiodadInHH).ToArray();
            for ( Int32 i = 0; i < drs.Length; i++ ) {
                years[i] = drs[i].Year;
                ages[i] = drs[i].Age;

                if ( drs[i].IsInHHNull() ) inHHs[i] = null;
                else inHHs[i] = drs[i].InHH;
            }
            //switch ( everInHH ) {
            //   case YesNo.No:
            //      Trace.Assert(drsYes.Length == 0, "If the subject says the bioparent has never lived in the HH, then there shouldn't be any more records.");
            //      break;
            //   case YesNo.Yes:
            //      //This is ok.  Execute the statements following the switch statement.
            //      break;
            //   default:
            //      throw new ArgumentOutOfRangeException("bioparent");
            //}
            return new TrendLineGen0InHH(yob: yob, hasAnyRecords: true, everAtHome: everInHH, years: years, values: inHHs, ages: ages);
        }
Ejemplo n.º 9
0
 internal static LinksDataSet.tblRelatedStructureRow[] RelatedStructureInExtendedFamily( Int16 extendedID, RelationshipPath path, LinksDataSet.tblRelatedStructureDataTable dtStructure )
 {
     string select = string.Format("{0}={1} AND {2}={3}",
         extendedID, dtStructure.ExtendedIDColumn.ColumnName,
         (byte)path, dtStructure.RelationshipPathColumn.ColumnName);
     return (LinksDataSet.tblRelatedStructureRow[])dtStructure.Select(select);
 }
Ejemplo n.º 10
0
 private SurveySource DetermineSurveySource( Int16 surveyYear, LinksDataSet.tblSubjectRow drSubject, LinksDataSet.tblResponseDataTable dtResponseForSubject )
 {
     string select = string.Format("{0}={1} AND {2}={3} AND {4}>0",
         surveyYear, _ds.tblResponse.SurveyYearColumn.ColumnName,
         (byte)Item.InterviewDateMonth, _ds.tblResponse.ItemColumn.ColumnName,
         _ds.tblResponse.ValueColumn.ColumnName);
     LinksDataSet.tblResponseRow[] drsResponse = (LinksDataSet.tblResponseRow[])dtResponseForSubject.Select(select);
     Trace.Assert(drsResponse.Length <= 1, string.Format("There should be at most one row with a positive value for InterviewDateMonth (SubjectTag:{0}, SurveyYear:{1}).", drSubject.SubjectTag, surveyYear));
     if ( drsResponse.Length == 0 ) {
         return SurveySource.NoInterview;
     }
     else {
         SurveySource source = (SurveySource)drsResponse[0].SurveySource;
         switch ( source ) {
             case SurveySource.Gen1: Trace.Assert(drSubject.Generation == (byte)Generation.Gen1, "The subject should be Gen1."); break;
             case SurveySource.Gen2C: Trace.Assert(drSubject.Generation == (byte)Generation.Gen2, "The subject should be Gen2."); break;
             case SurveySource.Gen2YA: Trace.Assert(drSubject.Generation == (byte)Generation.Gen2, "The subject should be Gen2."); break;
             default: throw new InvalidOperationException("The determined SurveySource was not recognized.");//The NotInterviewed shouldn't be possible for this switch.
         }
         return source;
     }
 }
Ejemplo n.º 11
0
        private static float? AgeSelfReportMonths( Int32 subjectTag, Int16 surveyYear, LinksDataSet.tblResponseDataTable dtResponseForSubject )
        {
            string select = string.Format("{0}={1} AND {2}={3} AND {4}={5} AND {6}>0",
                subjectTag, dtResponseForSubject.SubjectTagColumn.ColumnName,
                surveyYear, dtResponseForSubject.SurveyYearColumn.ColumnName,
                (byte)Item.AgeAtInterviewDateMonths, dtResponseForSubject.ItemColumn.ColumnName,
                dtResponseForSubject.ValueColumn.ColumnName);
            LinksDataSet.tblResponseRow[] drsResponse = (LinksDataSet.tblResponseRow[])dtResponseForSubject.Select(select);
            Trace.Assert(drsResponse.Length <= 1, "No more than one row should be returned.");

            const double monthsPerYear = 12.0;
            if ( drsResponse.Length == 0 ) {
                return null;
            }
            else {
                Trace.Assert(drsResponse[0].Generation == (byte)Generation.Gen2, "Only Gen2 subjects should be answering this item (specifically the Cs -not the YAs).");
                float ageInYears = (float)((drsResponse[0].Value + ageBiasCorrectionInMonths) / monthsPerYear);
                Trace.Assert(ageInYears > 0, "Age should be positive (non-null) value, at this point of the execution.");
                return ageInYears;
            }
        }
Ejemplo n.º 12
0
 private static LinksDataSet.tblFatherOfGen2Row RetrieveRow( Int32 subjectTag, Int16 surveyYear, LinksDataSet.tblFatherOfGen2DataTable dtInput )
 {
     string select = string.Format("{0}={1} AND {2}={3}",
         subjectTag, dtInput.SubjectTagColumn.ColumnName,
         surveyYear, dtInput.SurveyYearColumn.ColumnName);
     LinksDataSet.tblFatherOfGen2Row[] drs = (LinksDataSet.tblFatherOfGen2Row[])dtInput.Select(select);
     //if ( drs == null ) {
     if ( drs.Length <=0 ) {
         return null;
     }
     else {
         Trace.Assert(drs.Length <= 1, "There should be no more than one row.");
         return drs[0];
     }
 }
Ejemplo n.º 13
0
 internal static LinksDataSet.tblSubjectRow[] SubjectsInExtendFamily( Int16 extendedID, LinksDataSet.tblSubjectDataTable dtSubject )
 {
     string select = string.Format("{0}={1}", extendedID, dtSubject.ExtendedIDColumn.ColumnName);
     LinksDataSet.tblSubjectRow[] drs = (LinksDataSet.tblSubjectRow[])dtSubject.Select(select);
     Trace.Assert(drs.Length > 0, "At least one member of the extended family should be returned.");
     return drs;
 }
Ejemplo n.º 14
0
 internal static Int32? ResponseNullPossible( Int16 surveyYear, Item itemID, SurveySource surveySource, Int32 subjectTag, Int32 maxRows, LinksDataSet.tblResponseDataTable dt )
 {
     if ( dt == null ) throw new ArgumentNullException("dt");
     string select = string.Format("{0}={1} AND {2}={3} AND {4}={5} AND {6}={7}",
         subjectTag, dt.SubjectTagColumn.ColumnName,
         (Int16)itemID, dt.ItemColumn.ColumnName,
         surveyYear, dt.SurveyYearColumn.ColumnName,
         (byte)surveySource, dt.SurveySourceColumn.ColumnName);
     LinksDataSet.tblResponseRow[] drsRaw = (LinksDataSet.tblResponseRow[])dt.Select(select);
     Trace.Assert(drsRaw.Length <= maxRows, "At most, " + maxRows + " row(s) should be returned.");
     if ( drsRaw.Length == 0 )
         return null;
     else
         return drsRaw[0].Value;
 }
Ejemplo n.º 15
0
 internal static Int32? ResponseNullPossible( Item itemID, Int32 subjectTag, LinksDataSet.tblResponseDataTable dt )
 {
     if ( dt == null ) throw new ArgumentNullException("dt");
     string select = string.Format("{0}={1} AND {2}={3}",
         subjectTag, dt.SubjectTagColumn.ColumnName,
         (Int16)itemID, dt.ItemColumn.ColumnName);
     LinksDataSet.tblResponseRow[] drsRaw = (LinksDataSet.tblResponseRow[])dt.Select(select);
     Trace.Assert(drsRaw.Length <= 1, "At most one row should be returned.");
     if ( drsRaw.Length == 0 )
         return null;
     else
         return drsRaw[0].Value;
 }
Ejemplo n.º 16
0
 internal static MarkerEvidence RetrieveParentMarkerSingleYear( Int64 relatedIDLeft, MarkerType markerType, Bioparent bioparent, LinksDataSet.tblMarkerGen1DataTable dtMarker )
 {
     if ( dtMarker == null ) throw new ArgumentNullException("dtMarker");
     string select = string.Format("{0}={1} AND {2}={3}",
         relatedIDLeft, dtMarker.RelatedIDColumn.ColumnName,
         (byte)markerType, dtMarker.MarkerTypeColumn.ColumnName);
     string sort = dtMarker.SurveyYearColumn.ColumnName;
     LinksDataSet.tblMarkerGen1Row[] drs = (LinksDataSet.tblMarkerGen1Row[])dtMarker.Select(select, sort);
     Trace.Assert(drs.Length <= 1, "The number of returns markers should not exceed 1.");
     if ( drs.Length == 0 )
         return MarkerEvidence.Missing;
     else if ( bioparent == Bioparent.Dad )
         return (MarkerEvidence)drs[0].ShareBiodadEvidence;
     else if ( bioparent == Bioparent.Mom )
         return (MarkerEvidence)drs[0].ShareBiomomEvidence;
     else
         throw new ArgumentOutOfRangeException("markerType", markerType, "The 'bioparent' value is not accepted by this function.");
 }
Ejemplo n.º 17
0
        private Int32 FromShareExplicit( Item itemRelationship, MarkerType markerType, LinksDataSet.tblRelatedStructureRow drRelated, LinksDataSet.tblResponseDataTable dtSubject1 )
        {
            const Item itemID = Item.IDCodeOfOtherSiblingGen1;
            Int32 surveyYearCount = ItemYears.Gen1ShareBioparent.Length;

            LinksDataSet.tblSubjectRow drSubject1 = drRelated.tblSubjectRowByFK_tblRelatedStructure_tblSubject_Subject1;
            LinksDataSet.tblSubjectRow drSubject2 = drRelated.tblSubjectRowByFK_tblRelatedStructure_tblSubject_Subject2;

            //Use the other subject's ID to find the appropriate 'loop index';
            string selectToGetLoopIndex = string.Format("{0}={1} AND {2}={3} AND {4}={5}",
                drSubject1.SubjectTag, dtSubject1.SubjectTagColumn.ColumnName,
                Convert.ToInt16(itemID), dtSubject1.ItemColumn.ColumnName,
                drSubject2.SubjectID, dtSubject1.ValueColumn.ColumnName);
            LinksDataSet.tblResponseRow[] drsForLoopIndex = (LinksDataSet.tblResponseRow[])dtSubject1.Select(selectToGetLoopIndex);
            Trace.Assert(drsForLoopIndex.Length <= surveyYearCount, string.Format("No more than {0} row(s) should be returned that matches Subject2 for item '{1}'.", surveyYearCount, itemID.ToString()));

            if ( drsForLoopIndex.Length == 0 )
                return 0;

            //Use the loop index (that corresponds to the other subject) to find the ShareBiomom response.
            //LinksDataSet.tblResponseRow drResponse = drsForLoopIndex[0];
            string selectToShareResponse = string.Format("{0}={1} AND {2}={3} AND {4}={5}",
                drSubject1.SubjectTag, dtSubject1.SubjectTagColumn.ColumnName,
                Convert.ToInt16(itemRelationship), dtSubject1.ItemColumn.ColumnName,
                drsForLoopIndex[0].LoopIndex, dtSubject1.LoopIndexColumn.ColumnName);
            LinksDataSet.tblResponseRow[] drsForShareResponse = (LinksDataSet.tblResponseRow[])dtSubject1.Select(selectToShareResponse);
            Trace.Assert(drsForLoopIndex.Length <= surveyYearCount, string.Format("No more than {0} row(s) should be returned that matches Subject2 for item '{1}'.", surveyYearCount, Item.IDCodeOfOtherInterviewedBiodadGen2.ToString()));
            Int32 recordsAdded = 0;

            foreach ( LinksDataSet.tblResponseRow drResponse in drsForShareResponse ) {
                EnumResponsesGen1.ShareBioparentGen1 shareBioparent = (EnumResponsesGen1.ShareBioparentGen1)drResponse.Value;

                MarkerEvidence evidence = Assign.EvidenceGen1.ShareBioparentsForBioparents(shareBioparent);
                MarkerEvidence mzEvidence;
                if ( evidence == MarkerEvidence.StronglySupports ) mzEvidence = MarkerEvidence.Consistent;
                else mzEvidence = MarkerEvidence.Disconfirms;

                MarkerEvidence sameGeneration;
                if ( evidence == MarkerEvidence.Supports || evidence == MarkerEvidence.StronglySupports )
                    sameGeneration = MarkerEvidence.StronglySupports;
                else
                    sameGeneration = MarkerEvidence.Ambiguous;

                switch ( markerType ) {
                    case MarkerType.ShareBiodad:
                        AddMarkerRow(drRelated.ExtendedID, drRelated.ID, markerType, drResponse.SurveyYear, mzEvidence: mzEvidence, sameGenerationEvidence: sameGeneration,
                            biomomEvidence: MarkerEvidence.Irrelevant, biodadEvidence: evidence, biograndparentEvidence: evidence);
                        break;
                    case MarkerType.ShareBiomom:
                        AddMarkerRow(drRelated.ExtendedID, drRelated.ID, markerType, drResponse.SurveyYear, mzEvidence: mzEvidence, sameGenerationEvidence: sameGeneration,
                            biomomEvidence: evidence, biodadEvidence: MarkerEvidence.Irrelevant, biograndparentEvidence: evidence);
                        break;
                    default:
                        throw new ArgumentOutOfRangeException("markerType", markerType, "The 'FromShareBioparent' function does not accommodate this markerType.");
                }
                recordsAdded += 1;
            }
            return recordsAdded;
        }
Ejemplo n.º 18
0
 internal static MarkerEvidence RetrieveBiodadMarkerFromGen1( Int64 relatedIDLeft, MarkerType markerType, LinksDataSet.tblMarkerGen2DataTable dtMarker )
 {
     if ( dtMarker == null ) throw new ArgumentNullException("dtMarker");
     string select = string.Format("{0}={1} AND {2}={3}",
         relatedIDLeft, dtMarker.RelatedIDColumn.ColumnName,
         (byte)markerType, dtMarker.MarkerTypeColumn.ColumnName);
     string sort = dtMarker.SurveyYearColumn.ColumnName;
     LinksDataSet.tblMarkerGen2Row[] drs = (LinksDataSet.tblMarkerGen2Row[])dtMarker.Select(select, sort);
     Trace.Assert(drs.Length <= 1, "The number of returns markers should not exceed 1.");
     if ( drs.Length == 0 )
         return MarkerEvidence.Missing;
     else
         return (MarkerEvidence)drs[0].ShareBiodadEvidence;
 }
Ejemplo n.º 19
0
        private static float? AgeSelfReportYears( Int32 subjectTag, Int16 surveyYear, LinksDataSet.tblResponseDataTable dtResponseForSubject )
        {
            string select = string.Format("{0}={1} AND {2}={3} AND {4}={5} AND {6}>0",
                subjectTag, dtResponseForSubject.SubjectTagColumn.ColumnName,
                surveyYear, dtResponseForSubject.SurveyYearColumn.ColumnName,
                (byte)Item.AgeAtInterviewDateYears, dtResponseForSubject.ItemColumn.ColumnName,
                dtResponseForSubject.ValueColumn.ColumnName);
            LinksDataSet.tblResponseRow[] drsResponse = (LinksDataSet.tblResponseRow[])dtResponseForSubject.Select(select);
            Trace.Assert(drsResponse.Length <= 1, "No more than one row should be returned.");

            if ( drsResponse.Length == 0 ) {
                return null;
            }
            else {
                float ageInYears = (float)drsResponse[0].Value + ageBiasCorrectionInYears;
                Trace.Assert(ageInYears > 0, "Age should be positive (non-null) value, at this point of the execution.");
                return ageInYears;
            }
        }
Ejemplo n.º 20
0
        private Int32 FromShareBiodad( LinksDataSet.tblRelatedStructureRow drRelated, LinksDataSet.tblResponseDataTable dtSubject1, Int16 extendedID )
        {
            const MarkerType markerType = MarkerType.ShareBiodad;
            const bool fromMother = true;
            LinksDataSet.tblSubjectRow drSubject1 = drRelated.tblSubjectRowByFK_tblRelatedStructure_tblSubject_Subject1;
            LinksDataSet.tblSubjectRow drSubject2 = drRelated.tblSubjectRowByFK_tblRelatedStructure_tblSubject_Subject2;
            Int32 lastTwoDigitsSubject2 = CommonFunctions.LastTwoDigitsOfGen2SubjectID(drSubject2);
            Int32 surveyYearCount = ItemYears.Gen2ShareBiodad.Length;

            string selectToGetLoopIndex = string.Format("{0}={1} AND {2}={3} AND {4}={5}",
                drSubject1.SubjectTag, dtSubject1.SubjectTagColumn.ColumnName,
                (byte)Item.IDCodeOfOtherInterviewedBiodadGen2, dtSubject1.ItemColumn.ColumnName,
                lastTwoDigitsSubject2, dtSubject1.ValueColumn.ColumnName);
            LinksDataSet.tblResponseRow[] drsForLoopIndex = (LinksDataSet.tblResponseRow[])dtSubject1.Select(selectToGetLoopIndex);
            Trace.Assert(drsForLoopIndex.Length <= surveyYearCount, string.Format("No more than {0} row(s) should be returned that matches Subject2 for item '{1}'.", surveyYearCount, Item.IDCodeOfOtherInterviewedBiodadGen2.ToString()));
            Int32 recordsAdded = 0;

            foreach ( LinksDataSet.tblResponseRow drResponse in drsForLoopIndex ) {
                string selectToShareResponse = string.Format("{0}={1} AND {2}={3} AND {4}={5} AND {6}={7}",
                    drSubject1.SubjectTag, dtSubject1.SubjectTagColumn.ColumnName,
                    (byte)Item.ShareBiodadGen2, dtSubject1.ItemColumn.ColumnName,
                    drResponse.LoopIndex, dtSubject1.LoopIndexColumn.ColumnName,
                    drResponse.SurveyYear, dtSubject1.SurveyYearColumn.ColumnName);
                LinksDataSet.tblResponseRow[] drsForShareResponse = (LinksDataSet.tblResponseRow[])dtSubject1.Select(selectToShareResponse);
                Trace.Assert(drsForShareResponse.Length == 1, "Exactly one row should be returned for the ShareBiodad item to Subject2");
                EnumResponsesGen2.ShareBiodadGen2 shareBiodad = (EnumResponsesGen2.ShareBiodadGen2)drsForShareResponse[0].Value;

                MarkerEvidence mzEvidence = Assign.EvidenceGen2.ShareBiodadForBioparents(shareBiodad);
                MarkerEvidence biodadEvidence = Assign.EvidenceGen2.ShareBiodadForBioparents(shareBiodad);
                AddMarkerRow(extendedID, drRelated.ID, markerType, drResponse.SurveyYear, mzEvidence, biodadEvidence, fromMother);
                recordsAdded += 1;
            }
            return recordsAdded;
        }
Ejemplo n.º 21
0
        private EnumResponsesGen1.Gen1Roster RetrieveResponse( Int32 subject1Tag, Int32 subject2ID, LinksDataSet.tblResponseDataTable dtFamily )
        {
            const Item itemID = Item.IDOfOther1979RosterGen1;
            const Item itemRelationship = Item.RosterGen1979;
            Int32 surveyYearCount = 1;  //The roster was asked only in 1979.

            //Use the other subject's ID to find the appropriate 'loop index';
            string selectToGetLoopIndex = string.Format("{0}={1} AND {2}={3} AND {4}={5}",
                subject1Tag, dtFamily.SubjectTagColumn.ColumnName,
                (byte)itemID, dtFamily.ItemColumn.ColumnName,
                subject2ID, dtFamily.ValueColumn.ColumnName);
            LinksDataSet.tblResponseRow[] drsForLoopIndex = (LinksDataSet.tblResponseRow[])dtFamily.Select(selectToGetLoopIndex);
            Trace.Assert(drsForLoopIndex.Length <= surveyYearCount, string.Format("No more than {0} row(s) should be returned that matches Subject2 for item '{1}'.", surveyYearCount, itemID.ToString()));

            //Use the loop index (that corresponds to the other subject) to find the roster response.
            LinksDataSet.tblResponseRow drResponse = drsForLoopIndex[0];
            string selectToShareResponse = string.Format("{0}={1} AND {2}={3} AND {4}={5}",
                subject1Tag, dtFamily.SubjectTagColumn.ColumnName,
                (byte)itemRelationship, dtFamily.ItemColumn.ColumnName,
                drResponse.LoopIndex, dtFamily.LoopIndexColumn.ColumnName);
            LinksDataSet.tblResponseRow[] drsForShareResponse = (LinksDataSet.tblResponseRow[])dtFamily.Select(selectToShareResponse);
            Trace.Assert(drsForShareResponse.Length == 1, "Exactly one row should be returned for the Item.RosterGen1979 item to Subject2");
            return (EnumResponsesGen1.Gen1Roster)drsForShareResponse[0].Value;
        }
Ejemplo n.º 22
0
 private static LinksDataSet.tblBabyDaddyRow RetrieveRow( Int32 subjectTag, Int16[] surveyYears, LinksDataSet.tblBabyDaddyDataTable dtInput, Int32 i )
 {
     Int16 surveyYear = surveyYears[i];
     string select = string.Format("{0}={1} AND {2}={3}",
         subjectTag, dtInput.SubjectTagColumn.ColumnName,
         surveyYear, dtInput.SurveyYearColumn.ColumnName);
     LinksDataSet.tblBabyDaddyRow[] drs = (LinksDataSet.tblBabyDaddyRow[])dtInput.Select(select);
     if ( drs.Length <= 0 ) {
         return null;
     }
     else {
         Trace.Assert(drs.Length <= 1, "There should be no more than one row.");
         return drs[0];
     }
 }