Example #1
0
        protected virtual void HandleVisit(PV1 pv1)
        {
            bool doneCreatedVisit;

            var visit = _persistenceManager.GetVisit(pv1.VisitNumber.IDNumber.Value,
                                                     pv1.VisitNumber.AssigningAuthority.NamespaceID.Value,
                                                     true,
                                                     out doneCreatedVisit);

            if (visit == null)
            {
                return;
            }

            visit.Patient       = Patient;
            visit.PatientClass  = TryFind <PatientClassEnum>(pv1.PatientClass.Value);
            visit.AdmissionType = TryFind <AdmissionTypeEnum>(pv1.AdmissionType.Value);
            visit.VipIndicator  = StringToBool(pv1.VIPIndicator.Value);
            visit.PatientType   = TryFind <PatientTypeEnum>(pv1.PatientType.Value);

            visit.AdmitTime     = ParseNullableDateTimeFromDateField(pv1.AdmitDateTime.Time.Value);
            visit.DischargeTime = ParseNullableDateTimeFromDateField(pv1.GetDischargeDateTime(0).Time.Value);
            visit.InferVisitStatus();

            for (int i = 0; i < pv1.AmbulatoryStatusRepetitionsUsed; ++i)
            {
                visit.AmbulatoryStatuses.Add(TryFind <AmbulatoryStatusEnum>(pv1.GetAmbulatoryStatus(i).Value));
            }

            for (int i = 0; i < pv1.AttendingDoctorRepetitionsUsed; ++i)
            {
                HandlePractitioner(visit, pv1.GetAttendingDoctor(i), VisitPractitionerRole.AT);
            }

            for (int i = 0; i < pv1.ReferringDoctorRepetitionsUsed; ++i)
            {
                HandlePractitioner(visit, pv1.GetReferringDoctor(i), VisitPractitionerRole.RF);
            }

            for (int i = 0; i < pv1.ConsultingDoctorRepetitionsUsed; ++i)
            {
                HandlePractitioner(visit, pv1.GetConsultingDoctor(i), VisitPractitionerRole.CN);
            }

            for (int i = 0; i < pv1.AdmittingDoctorRepetitionsUsed; ++i)
            {
                HandlePractitioner(visit, pv1.GetConsultingDoctor(i), VisitPractitionerRole.AD);
            }

            HandlePatientLocation(visit, pv1);
            Visit = visit;
        }