public HospitalizationComponent GetHospitalizationDetails(entitystorematerialised_CoreEncounter coreEncounter)
        {
            var hospitalization = new HospitalizationComponent();

            if (coreEncounter.IsNull())
            {
                return(hospitalization);
            }

            hospitalization.AdmitSource = new CodeableConcept();

            hospitalization.DischargeDisposition = new CodeableConcept();

            hospitalization.AdmitSource.Text = coreEncounter.Referringdoctortext;

            Coding admitSourceCode = new Coding
            {
                Code = coreEncounter.Referringdoctorid
            };

            hospitalization.AdmitSource.Coding.Add(admitSourceCode);

            hospitalization.DischargeDisposition.Text = coreEncounter.Dischargetext;

            Coding dischargeCode = new Coding();

            dischargeCode.Code = coreEncounter.Dischargecode;

            hospitalization.DischargeDisposition.Coding.Add(dischargeCode);

            return(hospitalization);
        }
        private Meta GetMeta(entitystorematerialised_CoreEncounter src)
        {
            if (src.IsNull() || !src.Createdtimestamp.HasValue)
            {
                return(null);
            }

            return(new Meta
            {
                VersionId = $"{src.Sequenceid}",
                LastUpdated = src.Createdtimestamp
            });
        }
        public Period GetEncounterPeriod(entitystorematerialised_CoreEncounter coreEncounter)
        {
            var period = new Period();

            if (coreEncounter.IsNull())
            {
                return(period);
            }

            period.Start = Convert.ToString(coreEncounter.Admitdatetime);
            period.End   = Convert.ToString(coreEncounter.Dischargedatetime);

            return(period);
        }
        //private ResourceReference GetSubject(entitystorematerialised_CorePersonidentifier personIdentifier)
        //{
        //    var subject = new ResourceReference
        //    {
        //        Identifier = new Identifier(),
        //        Reference = "Patient"
        //    };

        //    if (personIdentifier.IsNull()) return subject;

        //    subject.Identifier.Value = personIdentifier.Idnumber;
        //    subject.Identifier.System = personIdentifier.Idtypecode ?? "";// _defaultHospitalRefNo;

        //    return subject;
        //}

        private static EncounterStatus?GetStatus(entitystorematerialised_CoreEncounter coreEncounter)
        {
            if (coreEncounter.Episodestatuscode.IsEmpty())
            {
                return(default(EncounterStatus?));
            }

            switch (coreEncounter.Episodestatuscode.ToLower())
            {
            case "active":
                return(Encounter.EncounterStatus.InProgress);

            case "cancelled":
                return(Encounter.EncounterStatus.Cancelled);
            }

            return(default(EncounterStatus?));
        }
        private List <Identifier> GetEncounterIdentifiers(entitystorematerialised_CoreEncounter coreEncounter)
        {
            var identifiers = new List <Identifier>();

            if (coreEncounter.IsNull())
            {
                return(identifiers);
            }

            Identifier id = new Identifier
            {
                Value = coreEncounter.Visitnumber
            };

            identifiers.Add(id);

            return(identifiers);
        }
        public List <CodeableConcept> GetReasonCodes(entitystorematerialised_CoreEncounter coreEncounter)
        {
            var reasonCodes = new List <CodeableConcept>();

            if (coreEncounter.IsNull())
            {
                return(reasonCodes);
            }

            CodeableConcept reasonCode = new CodeableConcept();

            reasonCode.Text = coreEncounter.Admitreasontext;

            Coding coding = new Coding
            {
                Code = coreEncounter.Admitreasoncode
            };

            reasonCode.Coding.Add(coding);

            return(reasonCodes);
        }
        private Coding GetClass(entitystorematerialised_CoreEncounter coreEncounter)
        {
            Coding encounterClass = new Coding();

            if (coreEncounter.Patientclasscode.IsNull())
            {
                return(encounterClass);
            }

            encounterClass.Code = coreEncounter.Patientclasscode;

            switch (coreEncounter.Patientclasscode.ToLower())
            {
            case "ip":
                encounterClass.Display = "Inpatient Encounter";
                break;

            case "op":
                encounterClass.Display = "Outpatient Encounter";
                break;
            }

            return(encounterClass);
        }