public virtual void SetPV1(PV1 pv1, Visit visit) { pv1.VisitNumber.IDNumber.Value = visit.VisitNumber.Id; pv1.ServicingFacility.Value = visit.Facility.Code; if (visit.PatientClass != null) { pv1.PatientClass.Value = visit.PatientClass.Code; } if (visit.AdmissionType != null) { pv1.AdmissionType.Value = visit.AdmissionType.Code; } if (visit.PatientType != null) { pv1.PatientType.Value = visit.PatientType.Code; } if (visit.CurrentLocation != null) { pv1.AssignedPatientLocation.PointOfCare.Value = visit.CurrentLocation.PointOfCare; pv1.AssignedPatientLocation.Room.Value = visit.CurrentRoom; pv1.AssignedPatientLocation.Bed.Value = visit.CurrentBed; pv1.AssignedPatientLocation.Facility.NamespaceID.Value = visit.CurrentLocation.Facility.Code; pv1.AssignedPatientLocation.Building.Value = visit.CurrentLocation.Building; pv1.AssignedPatientLocation.Floor.Value = visit.CurrentLocation.Floor; } foreach (var practitioner in visit.Practitioners) { SetPhysician(pv1, practitioner); } foreach (var property in visit.ExtendedProperties) { if (!property.Key.Contains("Physician")) { continue; } var role = property.Key.Substring(0, property.Key.IndexOf("Physician")); SetPhysician(pv1, role, property.Value); } pv1.VIPIndicator.Value = BoolToString(visit.VipIndicator); if (visit.AdmitTime.HasValue) { pv1.AdmitDateTime.Time.Value = ExtractHL7DateTime(visit.AdmitTime); } if (visit.DischargeTime.HasValue) { pv1.GetDischargeDateTime(0).Time.Value = ExtractHL7DateTime(visit.DischargeTime); } pv1.DischargeDisposition.Value = visit.DischargeDisposition; pv1.VisitIndicator.Value = "V"; }
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; }