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; }
private XCN ParseRole(string role, PV1 pv1) { XCN physician = null; switch (role.ToUpper()) { case "RF": physician = pv1.GetReferringDoctor(0); break; case "AT": physician = pv1.GetAttendingDoctor(0); break; case "CN": physician = pv1.GetConsultingDoctor(0); break; case "AD": physician = pv1.GetConsultingDoctor(0); break; } return(physician); }
private static void ProducePV1(PV1 pv1, Neusoft.HISFC.Models.RADT.PVisit patientVisit) { pv1.SetIDPV1.Value = "1"; pv1.PatientClass.Value = patientVisit.PatientType.ID.ToString(); pv1.PendingLocation.PointOfCare.Value = patientVisit.PatientLocation.Dept.ID; //pv1.PatientType.Value = patientVisit.PatientType.ID.ToString(); pv1.AssignedPatientLocation.PointOfCare.Value = patientVisit.PatientLocation.Dept.ID; pv1.AssignedPatientLocation.Room.Value = patientVisit.PatientLocation.Room; pv1.AssignedPatientLocation.Bed.Value = patientVisit.PatientLocation.Bed.ID; pv1.AssignedPatientLocation.Building.Value = patientVisit.PatientLocation.Building; pv1.AssignedPatientLocation.Floor.Value = patientVisit.PatientLocation.Floor; pv1.AssignedPatientLocation.LocationDescription.Value = patientVisit.PatientLocation.Dept.Name; //主治医生 XCN attendingDoctor = pv1.GetAttendingDoctor(0); attendingDoctor.IDNumber.Value = patientVisit.AttendingDoctor.ID; attendingDoctor.FamilyLastName.FamilyName.Value = patientVisit.AttendingDoctor.Name.Substring(0, 1); attendingDoctor.GivenName.Value = patientVisit.AttendingDoctor.Name.Substring(1); XCN referringDoctor = pv1.GetReferringDoctor(0); referringDoctor.IDNumber.Value = patientVisit.ReferringDoctor.ID; referringDoctor.FamilyLastName.FamilyName.Value = patientVisit.ReferringDoctor.Name.Substring(0, 1); referringDoctor.GivenName.Value = patientVisit.ReferringDoctor.Name.Substring(1); XCN consultingDoctor = pv1.GetConsultingDoctor(0); consultingDoctor.IDNumber.Value = patientVisit.ConsultingDoctor.ID; consultingDoctor.FamilyLastName.FamilyName.Value = patientVisit.ConsultingDoctor.Name.Substring(0, 1); consultingDoctor.GivenName.Value = patientVisit.ConsultingDoctor.Name.Substring(1); //入院途径 pv1.AdmitSource.Value = patientVisit.AdmitSource.ID; pv1.AdmitDateTime.TimeOfAnEvent.Value = patientVisit.InTime.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture); }