public static CdaCodeObservation CreateUnknownProblemObservation()
        {
            CdaCodeObservation returnVal = new CdaCodeObservation();

            // *** Add Id, status ***
            returnVal.Id     = Guid.NewGuid().ToString(); //observation.Ien;
            returnVal.Status = Hl7ProblemActStatus.completed;

            // *** Add code ***
            returnVal.Value = new CdaCode()
            {
                CodeSystem = CodingSystem.SnomedCT, Code = "396782006", DisplayName = "Past Medical History Unknown"
            };

            returnVal.TemplateIds = new CdaTemplateIdList(
                CcdProblemEntryTemplateId,
                ProblemEntryTemplateId);

//            returnVal.EffectiveTime = new CdaEffectiveTime() { Low = observation.ObservationDate };

            returnVal.Code = new CdaCode()
            {
                CodeSystem = CodingSystem.SnomedCT, Code = "404684003", DisplayName = "Finding"
            };

            return(returnVal);
        }
        public static CdaCodeObservation CreateVisitSummaryCodeObservation(Observation observation)
        {
            CdaCodeObservation returnVal = new CdaCodeObservation();

            // *** Add Id, status ***
            returnVal.Id     = Guid.NewGuid().ToString(); //observation.Ien;
            returnVal.Status = Hl7ProblemActStatus.completed;

            // *** Add code ***
            returnVal.Code = new CdaCode()
            {
                CodeSystem = observation.CodeSystem, Code = observation.Code, DisplayName = observation.Description
            };

            // *** Add value ***
            returnVal.Value = GetVisitSummaryValueCode(observation);

            // *** Add date ***
            returnVal.EffectiveTime = new CdaEffectiveTime()
            {
                High = observation.EntryDate
            };

            return(returnVal);
        }
        public static CdaCodeObservation CreateUnknownFamilyHistoryObservation()
        {
            CdaCodeObservation returnVal = new CdaCodeObservation();

            // *** Add Id, status ***
            returnVal.Id     = Guid.NewGuid().ToString(); //observation.Ien;
            returnVal.Status = Hl7ProblemActStatus.completed;

            // *** Add code ***
            returnVal.Value = new CdaCode()
            {
                CodeSystem = CodingSystem.SnomedCT, Code = "407559004", DisplayName = "Family History Unknown"
            };

            // *** All the family observations from OB H&P Initial are diagnoses ***
            returnVal.Code = new CdaCode()
            {
                CodeSystem = CodingSystem.SnomedCT, Code = "282291009", DisplayName = "Diagnosis"
            };

            returnVal.TemplateIds = new CdaTemplateIdList(
                FamilyHistoryObservationTemplateId,
                SimpleObservationTemplateId,
                CcdFamilyHistoryObservationTemplateId
                );

            return(returnVal);
        }
        public static CdaCodeObservation CreateProblemObservation(Observation observation)
        {
            CdaCodeObservation returnVal = CreateCodeObservation(observation);

            if (returnVal != null)
            {
                returnVal.TemplateIds = new CdaTemplateIdList(
                    CcdProblemEntryTemplateId,
                    ProblemEntryTemplateId);

                returnVal.EffectiveTime = new CdaEffectiveTime()
                {
                    Low = observation.EntryDate
                };

                returnVal.Code = new CdaCode()
                {
                    CodeSystem = CodingSystem.SnomedCT, Code = "404684003", DisplayName = "Finding"
                };

                returnVal.Comment = observation.Narrative;
            }

            return(returnVal);
        }
        public static CdaCodeObservation CreateCodeObservation(Observation observation)
        {
            CdaCodeObservation returnVal = new CdaCodeObservation();

            // *** Add Id, status ***
            returnVal.Id     = Guid.NewGuid().ToString(); //observation.Ien;
            returnVal.Status = Hl7ProblemActStatus.completed;

            // *** Determine if negation indicator is needed ***
            bool val = false;

            if (bool.TryParse(observation.Value, out val))
            {
                if (val == false)
                {
                    returnVal.NegationIndicator = true;
                }
            }

            // *** Add code ***
            returnVal.Value = new CdaCode()
            {
                CodeSystem = observation.CodeSystem, Code = observation.Code, DisplayName = observation.Description
            };

            return(returnVal);
        }
        public void AddObservation(Hl7FamilyMember relation, CdaCodeObservation observation)
        {
            // *** Adds an observation to the dictionary ***

            // *** Add the list if it does not exist yet ***
            if (this.Observations.ContainsKey(relation) == false)
            {
                this.Observations.Add(relation, new List <CdaCodeObservation>());
            }

            // *** Add observation to proper list ***
            this.Observations[relation].Add(observation);
        }
        public static CdaCodeObservation CreateObservation(POCD_MT000040Procedure item)
        {
            CdaCodeObservation returnVal = new CdaCodeObservation();

            CdaProcedure tempProc = new CdaProcedure(item);

            returnVal.Id            = tempProc.Id;
            returnVal.Code          = tempProc.Code;
            returnVal.EffectiveTime = tempProc.EffectiveTime;
            returnVal.Value         = new CdaCode()
            {
                DisplayName = ""
            };

            return(returnVal);
        }
        public static CdaCodeObservation CreateCodeObservation(CodingSystem codeSystem, string code, string description)
        {
            CdaCodeObservation returnVal = new CdaCodeObservation();

            // *** Add Id, status ***
            returnVal.Id     = Guid.NewGuid().ToString(); //observation.Ien;
            returnVal.Status = Hl7ProblemActStatus.completed;

            // *** Add code ***
            returnVal.Value = new CdaCode()
            {
                CodeSystem = codeSystem, Code = code, DisplayName = description
            };

            return(returnVal);
        }
        public static CdaCodeObservation CreateProblemObservation(Problem problem)
        {
            CdaCodeObservation returnVal = new CdaCodeObservation();

            // *** Add Id, status ***
            returnVal.Id     = Guid.NewGuid().ToString();
            returnVal.Status = Hl7ProblemActStatus.completed;

            // *** Determine if negation indicator is needed ***
            //bool val = false;
            //if (bool.TryParse(observation.Value, out val))
            //    if (val == false)
            //        returnVal.NegationIndicator = true;

            // *** Add code ***
            returnVal.Value = new CdaCode()
            {
                CodeSystem = CodingSystem.Icd9, Code = problem.Icd.Value, DisplayName = problem.ItemName.Value
            };

            returnVal.TemplateIds = new CdaTemplateIdList(
                CcdProblemEntryTemplateId,
                ProblemEntryTemplateId);

            returnVal.EffectiveTime = new CdaEffectiveTime();

            if (problem.Onset != null)
            {
                returnVal.EffectiveTime.Low = problem.Onset.ToDateTime();
            }

            returnVal.Code = new CdaCode()
            {
                CodeSystem = CodingSystem.SnomedCT, Code = "404684003", DisplayName = "Finding"
            };

            return(returnVal);
        }
        public static CdaCodeObservation CreateSocialCodeObservation(Observation observation)
        {
            CdaCodeObservation returnVal = CreateCodeObservation(observation);

            returnVal.TemplateIds = new CdaTemplateIdList(CcdSocialHistoryObservationTemplateId, SimpleObservationTemplateId, SocialHistoryObservationTemplateId);

            // *** Code should be a category ***
            //switch (observation.Category)
            //{
            //    case "Social History: Diet":
            //        returnVal.Code = new CdaCode() { CodeSystem = CodingSystem.SnomedCT, Code = "364393001", DisplayName = "Diet" };
            //        break;
            //    case "Social History: Employment":
            //        returnVal.Code = new CdaCode() { CodeSystem = CodingSystem.SnomedCT, Code = "364703007", DisplayName = "Employment" };
            //        break;
            //    case "Social History: Toxic":
            //        returnVal.Code = new CdaCode() { CodeSystem = CodingSystem.SnomedCT, Code = "425400000", DisplayName = "Toxic Exposure" };
            //        break;
            //    case "Social History: Drug Use":
            //        returnVal.Code = new CdaCode() { CodeSystem = CodingSystem.SnomedCT, Code = "363908000", DisplayName = "Drug Use" };
            //        break;
            //    case "Social History: Other":
            //        returnVal.Code = new CdaCode() { CodeSystem = CodingSystem.SnomedCT, Code = "228272008", DisplayName = "Other Social History" };
            //        break;
            //}

            returnVal.Code = new CdaCode()
            {
                CodeSystem = observation.CodeSystem, Code = observation.Code, DisplayName = observation.Description
            };

            if (!string.IsNullOrWhiteSpace(observation.Narrative))
            {
                returnVal.Comment = observation.Narrative;
            }

            return(returnVal);
        }
        public static CdaCodeObservation CreateFamilyHistoryObservation(Observation observation)
        {
            CdaCodeObservation returnVal = CreateCodeObservation(observation);

            if (returnVal != null)
            {
                returnVal.TemplateIds = new CdaTemplateIdList(
                    FamilyHistoryObservationTemplateId,
                    SimpleObservationTemplateId,
                    CcdFamilyHistoryObservationTemplateId
                    );

                returnVal.Relationship = observation.Relationship;

                // *** All the family observations from OB H&P Initial are diagnoses ***
                returnVal.Code = new CdaCode()
                {
                    CodeSystem = CodingSystem.SnomedCT, Code = "282291009", DisplayName = "Diagnosis"
                };
            }

            return(returnVal);
        }