예제 #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;
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }