Пример #1
0
        /// <summary>
        /// Creates and Hydrates the reviewed medical history section for the Shared Health Summary
        ///
        /// Note: the data used within this method is intended as a guide and should be replaced.
        /// </summary>
        /// <returns>A Hydrated ReviewedMedicalHistory object</returns>
        private static IMedicalHistory CreateMedicalHistory(Boolean mandatorySectionsOnly)
        {
            var medicalHistory = BaseCDAModel.CreateMedicalHistory();

            if (!mandatorySectionsOnly)
            {
                // NOTE: This section demonstrates the different combinations of Procedure's, Medical History Item's & diagnosis
                var procedureList       = new List <Procedure>();
                var medicalHistoryItems = new List <IMedicalHistoryItem>();
                var diagnosisList       = new List <IProblemDiagnosis>();

                // Procedures
                var procedure1 = BaseCDAModel.CreateProcedure();
                procedure1.Comment           = "L Procedure Comment";
                procedure1.ProcedureName     = BaseCDAModel.CreateCodableText("301040004", CodingSystem.SNOMED, "Primary closed wire fixation of fracture");
                procedure1.ProcedureDateTime = CdaInterval.CreateLowHigh(new ISO8601DateTime(DateTime.Now.AddDays(-402), ISO8601DateTime.Precision.Day),
                                                                         new ISO8601DateTime(DateTime.Now.AddDays(-400), ISO8601DateTime.Precision.Day));
                procedure1.ShowOngoingInNarrative = true;
                procedureList.Add(procedure1);

                var prodcedure2 = BaseCDAModel.CreateProcedure();
                prodcedure2.Comment           = "Comment";
                prodcedure2.ProcedureName     = BaseCDAModel.CreateCodableText("388544006", CodingSystem.SNOMED, "Crab RAST");
                prodcedure2.ProcedureDateTime = CdaInterval.CreateLow(new ISO8601DateTime(DateTime.Now.AddDays(-400), ISO8601DateTime.Precision.Day));
                procedureList.Add(prodcedure2);

                // Uncategorised Medical History Items
                var medicalHistoryItem = BaseCDAModel.CreateMedicalHistoryItem();
                medicalHistoryItem.DateTimeInterval       = CdaInterval.CreateLow(new ISO8601DateTime(DateTime.Now.AddDays(-400), ISO8601DateTime.Precision.Day));
                medicalHistoryItem.ShowOngoingInNarrative = true;
                medicalHistoryItem.ItemDescription        = "Uncategorised Medical History item description";
                medicalHistoryItem.ItemComment            = "Item Comment";
                medicalHistoryItems.Add(medicalHistoryItem);

                var medicalHistoryItem1 = BaseCDAModel.CreateMedicalHistoryItem();
                medicalHistoryItem1.ShowOngoingInNarrative = true;
                medicalHistoryItem1.ItemDescription        = "Uncategorised Medical History item description here";
                medicalHistoryItem1.ItemComment            = "Item Comment";
                medicalHistoryItems.Add(medicalHistoryItem1);

                var medicalHistoryItem2 = BaseCDAModel.CreateMedicalHistoryItem();
                var ongoingInterval2    = CdaInterval.CreateLowHigh(
                    new ISO8601DateTime(DateTime.Now.AddDays(-400), ISO8601DateTime.Precision.Day),
                    new ISO8601DateTime(DateTime.Now.AddDays(0), ISO8601DateTime.Precision.Day));

                medicalHistoryItem2.DateTimeInterval = ongoingInterval2;
                medicalHistoryItem2.ItemDescription  = "Uncategorised Medical History item description here";
                medicalHistoryItem2.ItemComment      = "Item Comment";
                medicalHistoryItems.Add(medicalHistoryItem2);

                var medicalHistoryItem3 = BaseCDAModel.CreateMedicalHistoryItem();
                var ongoingInterval3    = CdaInterval.CreateHigh(new ISO8601DateTime(DateTime.Now.AddDays(200), ISO8601DateTime.Precision.Day));
                medicalHistoryItem3.DateTimeInterval = ongoingInterval3;
                medicalHistoryItem3.ItemDescription  = "Uncategorised Medical History item description here";
                medicalHistoryItem3.ItemComment      = "Item Comment 4";
                medicalHistoryItems.Add(medicalHistoryItem3);

                // Problem Diagnosis
                var diagnosis = BaseCDAModel.CreateProblemDiagnosis();

                // This fails Schematron - Ignore
                //diagnosis.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("57883007", CodingSystem.SNOMED, "Renin test diet",
                //"Renin test diet [Left, Right]", // NOTE: Qualifier codes must be provided as [value,value] in the codes original text for the narrative
                //new List<QualifierCode>
                //{
                //    // Qualifier Code
                //    BaseCDAModel.CreateQualifierCode(
                //        // Name
                //        BaseCDAModel.CreateCodableText("272741003", CodingSystem.SNOMED, "Laterality"),
                //        // Value
                //        BaseCDAModel.CreateCodableText("7771000", CodingSystem.SNOMED, "Left")
                //    ),

                //    // Qualifier Code
                //    BaseCDAModel.CreateQualifierCode(
                //        // Name
                //        BaseCDAModel.CreateCodableText("272741003", CodingSystem.SNOMED, "Laterality"),
                //        // Value
                //        BaseCDAModel.CreateCodableText("24028007", CodingSystem.SNOMED, "Right")
                //    )
                //});

                diagnosis.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("57883007", CodingSystem.SNOMED, "Renin test diet", "Renin test diet [Left, Right]");

                diagnosis.DateOfOnset = new ISO8601DateTime(DateTime.Now.AddYears(-2), ISO8601DateTime.Precision.Day);
                diagnosis.DateOfResolutionRemission = new ISO8601DateTime(DateTime.Now.AddYears(-1), ISO8601DateTime.Precision.Day);
                diagnosis.Comment = "Comment";
                diagnosis.ShowOngoingDateInNarrative = true;
                diagnosisList.Add(diagnosis);

                var diagnosis1 = SharedHealthSummary.CreateProblemDiagnosis();
                diagnosis1.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("72940007", CodingSystem.SNOMED, "Acute abscess of areola");
                diagnosisList.Add(diagnosis1);

                var diagnosis2 = SharedHealthSummary.CreateProblemDiagnosis();
                diagnosis2.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("36083008", CodingSystem.SNOMED, "Sick sinus syndrome");
                diagnosisList.Add(diagnosis2);

                var diagnosis3 = SharedHealthSummary.CreateProblemDiagnosis();
                diagnosis3.Comment = "Diuretic induced";
                diagnosis3.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("162311003", CodingSystem.SNOMED, "Heavy head");
                diagnosisList.Add(diagnosis3);

                var diagnosis4 = SharedHealthSummary.CreateProblemDiagnosis();
                diagnosis4.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("258245003", CodingSystem.SNOMED, "G4 grade");
                diagnosis4.DateOfResolutionRemission      = new ISO8601DateTime(DateTime.Parse("27 Feb 2007"), ISO8601DateTime.Precision.Day);
                diagnosisList.Add(diagnosis4);

                var diagnosis5 = SharedHealthSummary.CreateProblemDiagnosis();
                diagnosis5.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("396275006", CodingSystem.SNOMED, "Osteoarthritis");
                diagnosis5.DateOfOnset = new ISO8601DateTime(DateTime.Parse("01 Jan 2000"), ISO8601DateTime.Precision.Day);
                diagnosis5.ShowOngoingDateInNarrative = true;
                diagnosisList.Add(diagnosis5);

                var diagnosis6 = SharedHealthSummary.CreateProblemDiagnosis();
                diagnosis6.Comment = "Cementless";
                diagnosis6.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("43408002", CodingSystem.SNOMED, "Red reflex");
                diagnosis6.DateOfOnset = new ISO8601DateTime(DateTime.Parse("27 Feb 2007"), ISO8601DateTime.Precision.Day);
                diagnosis6.ShowOngoingDateInNarrative = true;
                diagnosisList.Add(diagnosis6);

                var diagnosis7 = SharedHealthSummary.CreateProblemDiagnosis();
                diagnosis7.Comment = "T-score less than -3";
                diagnosis7.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("286114007", CodingSystem.SNOMED, "Does not do dusting");
                diagnosis7.DateOfOnset = new ISO8601DateTime(DateTime.Parse("01 Jan 2007"), ISO8601DateTime.Precision.Day);
                diagnosis7.ShowOngoingDateInNarrative = true;
                diagnosisList.Add(diagnosis7);

                var diagnosis8 = SharedHealthSummary.CreateProblemDiagnosis();
                diagnosis8.Comment = "Comment";
                diagnosis8.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("248515009", CodingSystem.SNOMED, "Lump in lid margin");
                diagnosis8.DateOfOnset = new ISO8601DateTime(DateTime.Parse("01 Aug 2010"), ISO8601DateTime.Precision.Day);
                diagnosis8.DateOfResolutionRemission = new ISO8601DateTime(DateTime.Parse("01 Sep 2010"), ISO8601DateTime.Precision.Day);
                diagnosisList.Add(diagnosis8);

                var diagnosis9 = SharedHealthSummary.CreateProblemDiagnosis();
                diagnosis9.Comment = "Diagnosis Comment";
                diagnosis9.ShowOngoingDateInNarrative     = true;
                diagnosis9.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("200608005", CodingSystem.SNOMED, "Boil of back");
                diagnosis9.DateOfOnset = new ISO8601DateTime(DateTime.Parse("01 Aug 2010"), ISO8601DateTime.Precision.Day);
                diagnosis9.DateOfResolutionRemission = new ISO8601DateTime(DateTime.Parse("01 Sep 2010"), ISO8601DateTime.Precision.Day);
                diagnosisList.Add(diagnosis9);

                var diagnosis10 = SharedHealthSummary.CreateProblemDiagnosis();
                diagnosis10.ProblemDiagnosisIdentification = BaseCDAModel.CreateCodableText("267032009", CodingSystem.SNOMED, "Tired all the time");
                diagnosis10.DateOfOnset = new ISO8601DateTime(DateTime.Parse("01 Aug 2010"), ISO8601DateTime.Precision.Day);
                diagnosis10.ShowOngoingDateInNarrative = true;
                diagnosisList.Add(diagnosis10);

                medicalHistory.MedicalHistoryItems = medicalHistoryItems;
                medicalHistory.Procedures          = procedureList;
                medicalHistory.ProblemDiagnosis    = diagnosisList;
            }
            else
            {
                // NOTE : NotAsked is not a valid entry in context of a Shared Health Summary
                medicalHistory.ProblemDiagnosisExclusionStatement       = BaseCDAModel.CreateStatement();
                medicalHistory.ProblemDiagnosisExclusionStatement.Value = NCTISGlobalStatementValues.NoneSupplied;

                medicalHistory.ProceduresExclusionStatement       = BaseCDAModel.CreateStatement();
                medicalHistory.ProceduresExclusionStatement.Value = NCTISGlobalStatementValues.NoneSupplied;
            }

            return(medicalHistory);
        }