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";
        }
示例#2
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;
        }