コード例 #1
0
        public ActionResult LocationOfExposure(HumanCase humanCase)
        {
            long root = humanCase.idfCase;

            ViewBag.IdfCase = root;
            GeoLocation geoLocation = humanCase.PointGeoLocation;

            ModelStorage.Put(Session.SessionID, root, geoLocation.idfGeoLocation, null, geoLocation);
            return(PartialView(geoLocation));
        }
コード例 #2
0
        private static GeoLocation GetCloneOfOriginalGeoLocation(HumanCase humanCase)
        {
            GeoLocation originalGeoLocation = humanCase.PointGeoLocation;

            originalGeoLocation.idfsGeoLocationType = (long)GeoLocationTypeEnum.ExactPoint;
            GeoLocation cloneGeoLocation = originalGeoLocation.CloneWithSetup();

            if (humanCase.PointGeoLocation.IsNull)
            {
                cloneGeoLocation.Country = humanCase.Patient.CurrentResidenceAddress.Country;
                cloneGeoLocation.Region  = humanCase.Patient.CurrentResidenceAddress.Region;
                cloneGeoLocation.Rayon   = humanCase.Patient.CurrentResidenceAddress.Rayon;
            }
            return(cloneGeoLocation);
        }
コード例 #3
0
        public void PostTest2()
        {
            var item = Upload506Item.Accessor.Instance(null).CreateNewForTest2(manager, master);

            item.Resolution = (int)Upload506Resolution.Created;
            master.Items.Add(item);
            Assert.AreEqual(item.idfCase, 0);
            Assert.IsTrue(master.ValidateItems());
            Assert.IsTrue(accessor.Post(manager, master));
            Assert.AreNotEqual(item.idfCase, 0);
            HumanCase hc = HumanCase.Accessor.Instance(null).SelectByKey(manager, item.idfCase);

            Assert.IsNotNull(hc);
            Assert.AreEqual(item.idfCase, hc.idfCase);
            Assert.AreEqual(item.strCaseID, hc.strCaseID);
            Assert.AreEqual(item.iDISEASE, (int)master.DiagnosisRefs.FirstOrDefault(i => i.idfsTentativeDiagnosis == hc.idfsTentativeDiagnosis, i => i.DISEASE));
            Assert.AreEqual(item.NAME, hc.Patient.strName);
            Assert.AreEqual(item.HN, hc.strLocalIdentifier);
            Assert.AreEqual(item.SEX, (int)master.HumanGenderRefs.FirstOrDefault(i => i.idfsHumanGender == hc.Patient.idfsHumanGender, i => i.SEX));
            Assert.AreEqual(item.YEAR, hc.intPatientAge);
            Assert.AreEqual(item.MARIETAL, (int)master.MaritalStatusRefs.FirstOrDefault(
                                i => i.idfsMaritalStatus == (long)hc.FFPresenterEpi.ActivityParameters[1].varValue, i => i.MARIETAL));
            Assert.AreEqual(item.RACE, (int)master.NationalityRefs.FirstOrDefault(i => i.idfsNationality == hc.Patient.idfsNationality, i => i.RACE));
            Assert.AreEqual(item.RACE1, (int)master.ForeignerTypeRefs.FirstOrDefault(
                                i => i.idfsForeignerType == (long)hc.FFPresenterEpi.ActivityParameters[5].varValue, i => i.RACE1));
            Assert.AreEqual(item.OCCUPAT, (int)master.OccupationTypeRefs.FirstOrDefault(i => i.idfsOccupationType == hc.idfsOccupationType, i => i.OCCUPAT));
            Assert.AreEqual(item.ADDRESS, hc.Patient.CurrentResidenceAddress.strHouse);
            Assert.AreEqual(item.PROVINCE + item.ADDRCODE, hc.Patient.CurrentResidenceAddress.strBuilding);
            Assert.AreEqual(item.METROPOL, (int)master.MunicipalityRefs.FirstOrDefault(
                                i => i.idfsMunicipality == (long)hc.FFPresenterEpi.ActivityParameters[3].varValue, i => i.METROPOL));
            Assert.AreEqual(item.HOSPITAL, (int)master.HospitalizationRefs.FirstOrDefault(
                                i => i.idfsHospitalization == (long)hc.FFPresenterEpi.ActivityParameters[0].varValue, i => i.HOSPITAL));
            Assert.AreEqual(item.TYPE, (int)master.PatientTypeRefs.FirstOrDefault(
                                i => i.idfsPatientType == (long)hc.FFPresenterEpi.ActivityParameters[4].varValue, i => i.TYPE));
            Assert.AreEqual(item.RESULT, (int)master.OutcomeRefs.FirstOrDefault(i => i.idfsOutcome == hc.idfsOutcome, i => i.RESULT));
            Assert.AreEqual(item.DATESICK, hc.datOnSetDate);
            Assert.AreEqual(item.DATEDEFINE, hc.datTentativeDiagnosisDate);
            Assert.AreEqual(item.DATERECORD, hc.datNotificationDate);
            Assert.AreEqual(item.DATEDEATH, hc.datDateOfDeath);
            Assert.AreEqual(item.iCOMPLICA, (int)master.ComplicationRefs.FirstOrDefault(
                                i => i.idfsComplication == (long)hc.FFPresenterEpi.ActivityParameters[2].varValue, i => i.COMPLICA));
        }
コード例 #4
0
        private void HumanCaseWinForm_Load(object sender, EventArgs e)
        {
            using (DbManagerProxy manager = DbManagerFactory.Factory.Create())
            {
                HumanCase.Accessor acc = HumanCase.Accessor.Instance(null);
                m_Case = acc.CreateNewT(manager, null);
            }

            m_Case.TentativeDiagnosis = m_Case.TentativeDiagnosisLookup.FirstOrDefault();

            //diagnosisLookupBindingSource.DataSource
            //comboBoxEdit1.DataBindings.Add(new Binding("EditValue", this.diagnosisLookupBindingSource, "name", true));

            //this.diagnosisLookupBindingSource.D

            //comboBox1.DataSource = m_case.TentativeDiagnosisLookup;
            //comboBox1.DisplayMember = "name";
            //comboBox1.ValueMember = "idfsDiagnosis";
            //comboBox1.DataBindings.Add(new Binding("idfsTentativeDiagnosis", m_case, "SelectedValue"));
            //comboBox1.DataBindings.Add(new Binding("SelectedValue", m_case, "TentativeDiagnosis"));
            //false, DataSourceUpdateMode.OnPropertyChanged, "", null, null));
        }
コード例 #5
0
        public void OpenApiTestHumanCaseGeneral()
        {
            var hcin = new HumanCase();

            hcin.Diagnosis = new Diagnosis()
            {
                RecordID = ReferenceBll.GetDignosisList().Last(c => !c.Aggregate && (c.AccessoryCode & (int)HACode.Human) != 0).RecordID
            };
            hcin.Patient = new Patient()
            {
                PatientLastName         = "last",
                PatientCurrentResidence = new Address()
                {
                    Country = new GisReference()
                    {
                        RecordID = 780000000
                    },
                    Region = new GisReference()
                    {
                        RecordID = ReferenceBll.GetRegionList(780000000).First().RecordID
                    },
                }
            };
            hcin.Patient.PatientCurrentResidence.Rayon = new GisReference()
            {
                RecordID = ReferenceBll.GetRayonList(hcin.Patient.PatientCurrentResidence.Region.RecordID).First().RecordID
            };

            hcin.SamplesCollected = new Reference()
            {
                RecordID = ReferenceBll.GetList(19000100).Single(c => c.RecordID == 10100001).RecordID
            };

            //hcin.strCaseID = "QQQ";

            /*hcin.Samples = new List<Sample>();
             * hcin.Samples.Add(new Sample()
             *  {
             *      SampleType = new Reference()
             *          {
             *              id = ReferenceBll.GetSampleTypeForDiagnosisList((int)HACode.Human, 0).Last().id
             *          }
             *  });
             */
            var hcout = HumanCaseBll.Create(hcin);

            var hcfnd = HumanCaseBll.Select(hcout.RecordID);

            Assert.IsNotNull(hcfnd.Samples);
            Assert.AreEqual(0, hcfnd.Samples.Count);

            var smp = HumanCaseSampleBll.Create(hcfnd.RecordID, new Sample()
            {
                SampleType = new Reference()
                {
                    RecordID = ReferenceBll.GetSampleTypeForDiagnosisList((int)HACode.Human, 0).Last().RecordID
                }
            });

            hcfnd = HumanCaseBll.Select(hcout.RecordID);
            Assert.IsNotNull(hcfnd.Samples);
            Assert.AreEqual(1, hcfnd.Samples.Count);
            Assert.IsNotNull(hcfnd.Samples[0].RecordID);
            Assert.AreEqual(smp.RecordID, hcfnd.Samples[0].RecordID);

            HumanCaseSampleBll.Delete(hcfnd.RecordID, hcfnd.Samples[0].RecordID);

            hcfnd = HumanCaseBll.Select(hcout.RecordID);
            Assert.IsNotNull(hcfnd.Samples);
            Assert.AreEqual(0, hcfnd.Samples.Count);


            var list = HumanCaseBll.Select(new HumanCaseListFilter());

            Assert.IsTrue(list.Count >= 1);

            list = HumanCaseBll.Select(new HumanCaseListFilter()
            {
                CaseID = hcout.CaseID
            });
            Assert.IsTrue(list.Count == 1);

            list = HumanCaseBll.Select(new HumanCaseListFilter()
            {
                Diagnosis = 100
            });
            Assert.IsTrue(list.Count == 0);

            list = HumanCaseBll.Select(new HumanCaseListFilter()
            {
                Diagnosis = hcout.Diagnosis.RecordID
            });
            Assert.IsTrue(list.Count >= 1);

            list = HumanCaseBll.Select(new HumanCaseListFilter()
            {
                DateEnteredFrom = DateTime.Now.AddMinutes(-1), DateEnteredTo = DateTime.Now.AddDays(1)
            });
            Assert.IsTrue(list.Count >= 1);

            list = HumanCaseBll.Select(new HumanCaseListFilter()
            {
                DateEnteredFrom = DateTime.Now.AddDays(1), DateEnteredTo = DateTime.Now.AddDays(2)
            });
            Assert.IsTrue(list.Count == 0);
        }
コード例 #6
0
        public void PostTest()
        {
            var item = Upload506Item.Accessor.Instance(null).CreateNewForTest(manager, master, 22);

            item.Resolution = (int)Upload506Resolution.Created;
            master.Items.Add(item);
            Assert.AreEqual(item.idfCase, 0);
            Assert.IsTrue(master.ValidateItems());
            Assert.IsTrue(accessor.Post(manager, master));
            Assert.AreNotEqual(item.idfCase, 0);
            HumanCase hc = HumanCase.Accessor.Instance(null).SelectByKey(manager, item.idfCase);

            Assert.IsNotNull(hc);
            Assert.AreEqual(item.idfCase, hc.idfCase);
            Assert.AreEqual(item.strCaseID, hc.strCaseID);
            Assert.AreEqual(item.iDISEASE, (int)master.DiagnosisRefs.FirstOrDefault(i => i.idfsTentativeDiagnosis == hc.idfsTentativeDiagnosis, i => i.DISEASE));
            Assert.AreEqual(item.NAME, hc.Patient.strName);
            Assert.AreEqual(item.HN, hc.strLocalIdentifier);
            Assert.AreEqual(item.SEX, (int)master.HumanGenderRefs.FirstOrDefault(i => i.idfsHumanGender == hc.Patient.idfsHumanGender, i => i.SEX));
            Assert.AreEqual(item.YEAR, hc.intPatientAge);
            Assert.AreEqual(item.MARIETAL, (int)master.MaritalStatusRefs.FirstOrDefault(
                                i => i.idfsMaritalStatus == (long)hc.FFPresenterEpi.ActivityParameters[1].varValue, i => i.MARIETAL));
            Assert.AreEqual(item.RACE, (int)master.NationalityRefs.FirstOrDefault(i => i.idfsNationality == hc.Patient.idfsNationality, i => i.RACE));
            Assert.AreEqual(item.RACE1, (int)master.ForeignerTypeRefs.FirstOrDefault(
                                i => i.idfsForeignerType == (long)hc.FFPresenterEpi.ActivityParameters[5].varValue, i => i.RACE1));
            Assert.AreEqual(item.OCCUPAT, (int)master.OccupationTypeRefs.FirstOrDefault(i => i.idfsOccupationType == hc.idfsOccupationType, i => i.OCCUPAT));
            Assert.AreEqual(item.ADDRESS, hc.Patient.CurrentResidenceAddress.strHouse);
            Assert.AreEqual(item.PROVINCE + item.ADDRCODE, hc.Patient.CurrentResidenceAddress.strBuilding);
            Assert.AreEqual(item.METROPOL, (int)master.MunicipalityRefs.FirstOrDefault(
                                i => i.idfsMunicipality == (long)hc.FFPresenterEpi.ActivityParameters[3].varValue, i => i.METROPOL));
            Assert.AreEqual(item.HOSPITAL, (int)master.HospitalizationRefs.FirstOrDefault(
                                i => i.idfsHospitalization == (long)hc.FFPresenterEpi.ActivityParameters[0].varValue, i => i.HOSPITAL));
            Assert.AreEqual(item.TYPE, (int)master.PatientTypeRefs.FirstOrDefault(
                                i => i.idfsPatientType == (long)hc.FFPresenterEpi.ActivityParameters[4].varValue, i => i.TYPE));
            Assert.AreEqual(item.RESULT, (int)master.OutcomeRefs.FirstOrDefault(i => i.idfsOutcome == hc.idfsOutcome, i => i.RESULT));
            Assert.AreEqual(item.DATESICK, hc.datOnSetDate);
            Assert.AreEqual(item.DATEDEFINE, hc.datTentativeDiagnosisDate);
            Assert.AreEqual(item.DATERECORD, hc.datNotificationDate);
            Assert.AreEqual(item.DATEDEATH, hc.datDateOfDeath);
            Assert.AreEqual(item.iCOMPLICA, (int)master.ComplicationRefs.FirstOrDefault(
                                i => i.idfsComplication == (long)hc.FFPresenterEpi.ActivityParameters[2].varValue, i => i.COMPLICA));

            var duplicate = Upload506Duplicate.Accessor.Instance(null).SelectByItem(manager, item);

            Assert.IsNotNull(duplicate);
            Assert.AreEqual(duplicate.strTentativeDiagnosisEIDSS, duplicate.strTentativeDiagnosis506);
            Assert.AreEqual(duplicate.strLocalIdentifierEIDSS, duplicate.strLocalIdentifier506);
            Assert.AreEqual(duplicate.strPatientNameEIDSS, duplicate.strPatientName506);
            Assert.AreEqual(duplicate.strHumanGenderEIDSS, duplicate.strHumanGender506);
            Assert.AreEqual(duplicate.datDateofBirthEIDSS, duplicate.datDateofBirth506);
            Assert.AreEqual(duplicate.intPatientAgeEIDSS, duplicate.intPatientAge506);
            Assert.AreEqual(duplicate.strHumanAgeTypeEIDSS, duplicate.strHumanAgeType506);
            Assert.AreEqual(duplicate.strNationalityEIDSS, duplicate.strNationality506);
            Assert.AreEqual(duplicate.strOccupationTypeEIDSS, duplicate.strOccupationType506);
            Assert.AreEqual(duplicate.strAddrCodeEIDSS, duplicate.strAddrCode506);
            Assert.AreEqual(duplicate.strAddressEIDSS, duplicate.strAddress506);
            Assert.AreEqual(duplicate.strRegionEIDSS, duplicate.strRegion506);
            Assert.AreEqual(duplicate.strRayonEIDSS, duplicate.strRayon506);
            Assert.AreEqual(duplicate.strSettlementEIDSS, duplicate.strSettlement506);
            Assert.AreEqual(duplicate.strTypeEIDSS, duplicate.strType506);
            Assert.AreEqual(duplicate.strOutcomeEIDSS, duplicate.strOutcome506);
            Assert.AreEqual(duplicate.strSentByOfficeEIDSS, duplicate.strSentByOffice506);
            Assert.AreEqual(duplicate.strEmployerNameEIDSS, duplicate.strEmployerName506);
            Assert.AreEqual(duplicate.datSickEIDSS, duplicate.datSick506);
            Assert.AreEqual(duplicate.datDefineEIDSS, duplicate.datDefine506);
            Assert.AreEqual(duplicate.datDeathEIDSS, duplicate.datDeath506);
            Assert.AreEqual(duplicate.datRecordEIDSS, duplicate.datRecord506);
            Assert.AreEqual(duplicate.strComplicaEIDSS, duplicate.strComplica506);
            Assert.AreEqual(duplicate.strMarietalEIDSS, duplicate.strMarietal506);
            Assert.AreEqual(duplicate.strForeignEIDSS, duplicate.strForeign506);
            Assert.AreEqual(duplicate.strMunicipalityEIDSS, duplicate.strMunicipality506);
            Assert.AreEqual(duplicate.strHospitalizationEIDSS, duplicate.strHospitalization506);

            item.NAME       = "BBB CCCCCC";
            item.HN         = "AAAAAA";
            item.SEX        = 2;
            item.YEAR       = 50;
            item.MARIETAL   = 2;
            item.RACE       = 6;
            item.RACE1      = 2;
            item.OCCUPAT    = 2;
            item.ADDRESS    = "63/98";
            item.ADDRCODE   = "020902";
            item.PROVINCE   = "12";
            item.METROPOL   = 2;
            item.HOSPITAL   = 1;
            item.TYPE       = 2;
            item.RESULT     = 3;
            item.HSERV      = "010420";
            item.DATESICK   = new DateTime(2015, 5, 11);
            item.DATEDEFINE = new DateTime(2015, 5, 13);
            item.DATERECORD = new DateTime(2015, 5, 17);
            item.COMPLICA   = "2";
            item.Resolution = (int)Upload506Resolution.Updated;
            Assert.IsTrue(master.ValidateItems());
            Assert.IsTrue(accessor.Post(manager, master));
            hc = HumanCase.Accessor.Instance(null).SelectByKey(manager, item.idfCase);
            Assert.AreEqual(item.idfCase, hc.idfCase);
            Assert.AreEqual(item.strCaseID, hc.strCaseID);
            Assert.AreEqual(item.iDISEASE, (int)master.DiagnosisRefs.FirstOrDefault(i => i.idfsTentativeDiagnosis == hc.idfsTentativeDiagnosis, i => i.DISEASE));
            Assert.AreEqual(item.NAME, hc.Patient.strName);
            Assert.AreEqual(item.HN, hc.strLocalIdentifier);
            Assert.AreEqual(item.SEX, (int)master.HumanGenderRefs.FirstOrDefault(i => i.idfsHumanGender == hc.Patient.idfsHumanGender, i => i.SEX));
            Assert.AreEqual(item.YEAR, hc.intPatientAge);
            Assert.AreEqual(item.MARIETAL, (int)master.MaritalStatusRefs.FirstOrDefault(
                                i => i.idfsMaritalStatus == (long)hc.FFPresenterEpi.ActivityParameters[1].varValue, i => i.MARIETAL));
            Assert.AreEqual(item.RACE, (int)master.NationalityRefs.FirstOrDefault(i => i.idfsNationality == hc.Patient.idfsNationality, i => i.RACE));
            Assert.AreEqual(item.RACE1, (int)master.ForeignerTypeRefs.FirstOrDefault(
                                i => i.idfsForeignerType == (long)hc.FFPresenterEpi.ActivityParameters[5].varValue, i => i.RACE1));
            Assert.AreEqual(item.OCCUPAT, (int)master.OccupationTypeRefs.FirstOrDefault(i => i.idfsOccupationType == hc.idfsOccupationType, i => i.OCCUPAT));
            Assert.AreEqual(item.ADDRESS, hc.Patient.CurrentResidenceAddress.strHouse);
            Assert.AreEqual(item.PROVINCE + item.ADDRCODE, hc.Patient.CurrentResidenceAddress.strBuilding);
            Assert.AreEqual(item.METROPOL, (int)master.MunicipalityRefs.FirstOrDefault(
                                i => i.idfsMunicipality == (long)hc.FFPresenterEpi.ActivityParameters[3].varValue, i => i.METROPOL));
            Assert.AreEqual(item.HOSPITAL, (int)master.HospitalizationRefs.FirstOrDefault(
                                i => i.idfsHospitalization == (long)hc.FFPresenterEpi.ActivityParameters[0].varValue, i => i.HOSPITAL));
            Assert.AreEqual(item.TYPE, (int)master.PatientTypeRefs.FirstOrDefault(
                                i => i.idfsPatientType == (long)hc.FFPresenterEpi.ActivityParameters[4].varValue, i => i.TYPE));
            Assert.AreEqual(item.RESULT, (int)master.OutcomeRefs.FirstOrDefault(i => i.idfsOutcome == hc.idfsOutcome, i => i.RESULT));
            Assert.AreEqual(item.DATESICK, hc.datOnSetDate);
            Assert.AreEqual(item.DATEDEFINE, hc.datTentativeDiagnosisDate);
            Assert.AreEqual(item.DATERECORD, hc.datNotificationDate);
            Assert.AreEqual(item.DATEDEATH, hc.datDateOfDeath);
            Assert.AreEqual(item.iCOMPLICA, (int)master.ComplicationRefs.FirstOrDefault(
                                i => i.idfsComplication == (long)hc.FFPresenterEpi.ActivityParameters[2].varValue, i => i.COMPLICA));
        }
コード例 #7
0
        public bool Save(bool bSaveNotification)
        {
            bool ret = false;

            using (DbManagerProxy manager = DbManagerFactory.Factory.Create(EidssUserContext.Instance))
            {
                var       acc = HumanCase.Accessor.Instance(null);
                HumanCase hc  = null;
                if (string.IsNullOrEmpty(OfflineCaseID))
                {
                    hc = (Id != 0) ? acc.SelectByKey(manager, Id) : acc.CreateNewT(manager, null);
                }
                else
                {
                    var find = find_by_offline_id(manager);
                    if (find != 0)
                    {
                        hc = acc.SelectByKey(manager, find);
                    }
                    else
                    {
                        hc = acc.CreateNewT(manager, null);
                        if (Id != 0)
                        {
                            MarkedToDelete = true;
                            return(true);
                        }
                    }
                }

                if (hc == null)
                {
                    throw new SoapException(string.Format("Case with id='{0}' is not found", Id != 0 ? Id.ToString() : OfflineCaseID), new XmlQualifiedName("id"));
                }

                hc.strCaseID = CaseID ?? "";
                try { hc.uidOfflineCaseID = new Guid(OfflineCaseID); } catch {}
                hc.strLocalIdentifier = LocalID;
                //hc.strLocalIdentifier = LocalIdentifier;
                hc.datCompletionPaperFormDate = CompletionPaperFormDate;
                hc.datFacilityLastVisit       = FacilityLastVisitDate;
                hc.datOnSetDate = OnsetDate;
                if (bSaveNotification)
                {
                    hc.datNotificationDate = NotificationDate;
                }
                hc.TentativeDiagnosis = TentativeDiagnosis == null ? null
                    : hc.TentativeDiagnosisLookup.SingleOrDefault(c => c.idfsDiagnosis == TentativeDiagnosis.Id);
                hc.datTentativeDiagnosisDate = TentativeDiagnosisDate;
                hc.FinalDiagnosis            = FinalDiagnosis == null ? null :
                                               hc.FinalDiagnosisLookup.SingleOrDefault(c => c.idfsDiagnosis == FinalDiagnosis.Id);
                hc.datFinalDiagnosisDate         = FinalDiagnosisDate;
                hc.intPatientAge                 = PatientAge.HasValue && PatientAge.Value > 0 ? PatientAge : null;
                hc.Patient.intPatientAgeFromCase = hc.intPatientAge;
                hc.Patient.strFirstName          = FirstName;
                hc.Patient.strSecondName         = MiddleName;
                hc.Patient.strLastName           = LastName;
                hc.Patient.HumanAgeType          = PatientAgeType == null ? null :
                                                   hc.Patient.HumanAgeTypeLookup.SingleOrDefault(c => c.idfsBaseReference == PatientAgeType.Id);
                hc.Patient.Gender = PatientGender == null ? null :
                                    hc.Patient.GenderLookup.SingleOrDefault(c => c.idfsBaseReference == PatientGender.Id);
                hc.CaseProgressStatus = CaseStatus == null ? null :
                                        hc.CaseProgressStatusLookup.SingleOrDefault(c => c.idfsBaseReference == CaseStatus.Id);
                hc.RelatedToOutbreak = RelatedToOutbreak == null ? null :
                                       hc.RelatedToOutbreakLookup.SingleOrDefault(c => c.idfsBaseReference == RelatedToOutbreak.Id);
                hc.PatientLocationType = CurrentLocation == null ? null :
                                         hc.PatientLocationTypeLookup.SingleOrDefault(c => c.idfsBaseReference == CurrentLocation.Id);
                hc.Hospitalization = Hospitalization == null ? null :
                                     hc.HospitalizationLookup.SingleOrDefault(c => c.idfsBaseReference == Hospitalization.Id);
                hc.InitialCaseClassification = CaseClassification == null ? null :
                                               hc.InitialCaseClassificationLookup.SingleOrDefault(c => c.idfsReference == CaseClassification.Id);
                hc.FinalCaseClassification = FinalCaseStatus == null ? null :
                                             hc.FinalCaseClassificationLookup.SingleOrDefault(c => c.idfsReference == FinalCaseStatus.Id);
                hc.PatientState = PatientState == null ? null :
                                  hc.PatientStateLookup.SingleOrDefault(c => c.idfsBaseReference == PatientState.Id);
                hc.Patient.datDateofBirth = DateOfBirth;
                hc.Patient.Nationality    = Citizenship == null ? null :
                                            hc.Patient.NationalityLookup.SingleOrDefault(c => c.idfsBaseReference == Citizenship.Id);
                hc.strNote = AdditionalComment;
                hc.Outcome = Outcome == null ? null :
                             hc.OutcomeLookup.SingleOrDefault(c => c.idfsBaseReference == Outcome.Id);

                hc.Patient.CurrentResidenceAddress.Country = CurrentResidence == null || CurrentResidence.Country == null ? null :
                                                             hc.Patient.CurrentResidenceAddress.CountryLookup.SingleOrDefault(c => c.idfsCountry == CurrentResidence.Country.Id);
                hc.Patient.CurrentResidenceAddress.Region = CurrentResidence == null || CurrentResidence.Region == null ? null :
                                                            hc.Patient.CurrentResidenceAddress.RegionLookup.SingleOrDefault(c => c.idfsRegion == CurrentResidence.Region.Id);
                hc.Patient.CurrentResidenceAddress.Rayon = CurrentResidence == null || CurrentResidence.Rayon == null ? null :
                                                           hc.Patient.CurrentResidenceAddress.RayonLookup.SingleOrDefault(c => c.idfsRayon == CurrentResidence.Rayon.Id);
                hc.Patient.CurrentResidenceAddress.Settlement = CurrentResidence == null || CurrentResidence.Settlement == null ? null :
                                                                hc.Patient.CurrentResidenceAddress.SettlementLookup.SingleOrDefault(c => c.idfsSettlement == CurrentResidence.Settlement.Id);
                hc.Patient.CurrentResidenceAddress.strStreetName = CurrentResidence == null ? null : CurrentResidence.Street;
                hc.Patient.CurrentResidenceAddress.strPostCode   = CurrentResidence == null ? null : CurrentResidence.ZipCode;

                hc.Patient.EmployerAddress.Country = EmployerAddress == null || EmployerAddress.Country == null ? null :
                                                     hc.Patient.EmployerAddress.CountryLookup.SingleOrDefault(c => c.idfsCountry == EmployerAddress.Country.Id);
                hc.Patient.EmployerAddress.Region = EmployerAddress == null || EmployerAddress.Region == null ? null :
                                                    hc.Patient.EmployerAddress.RegionLookup.SingleOrDefault(c => c.idfsRegion == EmployerAddress.Region.Id);
                hc.Patient.EmployerAddress.Rayon = EmployerAddress == null || EmployerAddress.Rayon == null ? null :
                                                   hc.Patient.EmployerAddress.RayonLookup.SingleOrDefault(c => c.idfsRayon == EmployerAddress.Rayon.Id);
                hc.Patient.EmployerAddress.Settlement = EmployerAddress == null || EmployerAddress.Settlement == null ? null :
                                                        hc.Patient.EmployerAddress.SettlementLookup.SingleOrDefault(c => c.idfsSettlement == EmployerAddress.Settlement.Id);
                hc.Patient.EmployerAddress.strStreetName = EmployerAddress == null ? null : EmployerAddress.Street;
                hc.Patient.EmployerAddress.strPostCode   = EmployerAddress == null ? null : EmployerAddress.ZipCode;

                hc.Patient.strEmployerName = EmployerName;
                hc.strCurrentLocation      = CurrentLocationName;
                if (bSaveNotification)
                {
                    hc.idfSentByOffice = NotificationSentBy.Id;
                    //hc.SentByOffice = NotificationSentBy == null ? null :
                    //    hc.SentByOfficeLookup.SingleOrDefault(c => c.idfInstitution == NotificationSentBy.Id);
                    hc.idfSentByPerson = NotificationSentByPerson.Id;
                    //hc.SentByPerson = NotificationSentByPerson == null ? null :
                    //    hc.SentByPersonLookup.SingleOrDefault(c => c.idfPerson == NotificationSentByPerson.Id);
                    hc.strSentByFirstName      = NotificationSentByFirstName;
                    hc.strSentByPatronymicName = NotificationSentByPatronymicName;
                    hc.strSentByLastName       = NotificationSentByLastName;
                    hc.idfReceivedByOffice     = NotificationReceivedBy.Id;
                    //hc.ReceivedByOffice = NotificationReceivedBy == null ? null :
                    //    hc.ReceivedByOfficeLookup.SingleOrDefault(c => c.idfInstitution == NotificationReceivedBy.Id);
                    hc.strReceivedByFirstName      = NotificationReceivedByFirstName;
                    hc.strReceivedByPatronymicName = NotificationReceivedByPatronymicName;
                    hc.strReceivedByLastName       = NotificationReceivedByLastName;
                }
                hc.Patient.strHomePhone = PhoneNumber;

                hc.Validation += (sender, args) =>
                {
                    LastErrorDescription = GetErrorMessage(args);
                    throw new SoapException(EidssMessages.GetValidationErrorMessage(args, "en"), new XmlQualifiedName(args.FieldName));
                };

                ret = acc.Post(manager, hc);
                if (!ret)
                {
                    LastErrorDescription = "Unknown error is occured during posting case";
                    throw new SoapException("Unknown error is occured during posting case", new XmlQualifiedName("post"));
                }

                Id     = hc.idfCase;
                CaseID = hc.strCaseID;
            }

            return(ret);
        }