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; }