Beispiel #1
0
        /// <summary>
        /// Добавить карту обследования с двумя частями
        /// </summary>
        /// <param name="fromCardWorker">Класс для работы с картами из двух частей в базе, откуда копируется госпитализация</param>
        /// <param name="toCardWorker">Класс для работы с картами из двух частей в базе, куда копируется госпитализация</param>
        /// <param name="cardType">Тип карты</param>
        /// <param name="fromHospitalizationId">id госпитализации в базе, откуда копируются карты</param>
        /// <param name="toHospitalizationId">id новой госпитализации в базе, куда копируются карты</param>
        /// <param name="fromVisitId">id консультации в базе, откуда копируются карты</param>
        /// <param name="toVisitId">id новой консультации в базе, куда копируются карты</param>
        public static void AddLeftRightCard(
            CCardWorker fromCardWorker,
            CCardWorker toCardWorker,
            CardType cardType,
            int fromHospitalizationId,
            int toHospitalizationId,
            int fromVisitId,
            int toVisitId)
        {
            if (fromCardWorker.IsExists(fromHospitalizationId, fromVisitId, cardType))
            {
                toCardWorker.GetByGeneralData(toHospitalizationId, toVisitId, CardSide.Left, cardType);
                var newCard = new CCard(
                    fromCardWorker.GetByGeneralData(fromHospitalizationId, fromVisitId, CardSide.Left, cardType))
                {
                    HospitalizationId = toHospitalizationId,
                    VisitId           = toVisitId
                };
                toCardWorker.Update(newCard);

                toCardWorker.GetByGeneralData(toHospitalizationId, toVisitId, CardSide.Right, cardType);
                newCard = new CCard(
                    fromCardWorker.GetByGeneralData(fromHospitalizationId, fromVisitId, CardSide.Right, cardType))
                {
                    HospitalizationId = toHospitalizationId,
                    VisitId           = toVisitId
                };
                toCardWorker.Update(newCard);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Добавить консультацию и все вложенные объекты
        /// </summary>
        /// <param name="fromPatientWorker">Класс для работы с пациентами в базе, откуда копируется консультация</param>
        /// <param name="toPatientWorker">Класс для работы с пациентами в базе, куда копируется консультация</param>
        /// <param name="fromVisitWorker">Класс для работы с консультациями в базе, откуда копируется консультация</param>
        /// <param name="toVisitWorker">Класс для работы с консультациями в базе, куда копируется консультация</param>
        /// <param name="fromBrachialPlexusCardWorker"></param>
        /// <param name="toBrachialPlexusCardWorker"></param>
        /// <param name="fromObstetricParalysisCardWorker"></param>
        /// <param name="toObstetricParalysisCardWorker"></param>
        /// <param name="fromRangeOfMotionCardWorker"></param>
        /// <param name="toRangeOfMotionCardWorker"></param>
        /// <param name="fromCardWorker"></param>
        /// <param name="toCardWorker"></param>
        /// <param name="fromPatientId">id пациента из базы, откуда копируется консультация</param>
        /// <param name="toPaientId">id пациента из базы, куда копируется консультация</param>
        /// <param name="visitId">id консультации, который надо скопировать</param>
        public static void AddVisit(
            CPatientWorker fromPatientWorker,
            CPatientWorker toPatientWorker,
            CVisitWorker fromVisitWorker,
            CVisitWorker toVisitWorker,
            CBrachialPlexusCardWorker fromBrachialPlexusCardWorker,
            CBrachialPlexusCardWorker toBrachialPlexusCardWorker,
            CObstetricParalysisCardWorker fromObstetricParalysisCardWorker,
            CObstetricParalysisCardWorker toObstetricParalysisCardWorker,
            CRangeOfMotionCardWorker fromRangeOfMotionCardWorker,
            CRangeOfMotionCardWorker toRangeOfMotionCardWorker,
            CCardWorker fromCardWorker,
            CCardWorker toCardWorker,
            int fromPatientId,
            int toPaientId,
            int visitId)
        {
            CVisit fromVisit = fromVisitWorker.GetById(visitId);

            // Добавляем консультацию
            var newVisit = new CVisit(fromVisit)
            {
                Id        = toVisitWorker.GetNewID(),
                PatientId = toPaientId
            };

            toVisitWorker.Update(newVisit, toPatientWorker.GetById(toPaientId));

            // Добавляем карты
            AddCardsToDatabase(-1, fromVisit.Id, -1, newVisit.Id,
                               fromBrachialPlexusCardWorker, toBrachialPlexusCardWorker, fromObstetricParalysisCardWorker, toObstetricParalysisCardWorker,
                               fromRangeOfMotionCardWorker, toRangeOfMotionCardWorker, fromCardWorker, toCardWorker);
        }
Beispiel #3
0
        /// <summary>
        /// Добавить карты обследований в базу
        /// </summary>
        /// <param name="fromHospitalizationId">id госпитализации в базе, откуда копируются карты</param>
        /// <param name="fromVisitId">id консультации в базе, откуда копируются карты</param>
        /// <param name="toHospitalizationId">id новой госпитализации в базе, куда копируются карты</param>
        /// <param name="toVisitId">id новой консультации в базе, куда копируются карты</param>
        /// <param name="fromBrachialPlexusCardWorker">Класс для работы с картами на плечевое сплетение в базе, откуда копируется госпитализация</param>
        /// <param name="toBrachialPlexusCardWorker">Класс для работы с картами на плечевое сплетение в базе, куда копируется госпитализация</param>
        /// <param name="fromObstetricParalysisCardWorker">Класс для работы с картами на акушерский паралич в базе, откуда копируется госпитализация</param>
        /// <param name="toObstetricParalysisCardWorker">Класс для работы с картами на акушерский паралич в базе, куда копируется госпитализация</param>
        /// <param name="fromRangeOfMotionCardWorker">Класс для работы с картами на объём движений в базе, откуда копируется госпитализация</param>
        /// <param name="toRangeOfMotionCardWorker">Класс для работы с картами на объём движений в базе, куда копируется госпитализация</param>
        /// <param name="fromCardWorker">Класс для работы с картами из двух частей в базе, откуда копируется госпитализация</param>
        /// <param name="toCardWorker">Класс для работы с картами из двух частей в базе, куда копируется госпитализация</param>
        public static void AddCardsToDatabase(
            int fromHospitalizationId,
            int fromVisitId,
            int toHospitalizationId,
            int toVisitId,
            CBrachialPlexusCardWorker fromBrachialPlexusCardWorker,
            CBrachialPlexusCardWorker toBrachialPlexusCardWorker,
            CObstetricParalysisCardWorker fromObstetricParalysisCardWorker,
            CObstetricParalysisCardWorker toObstetricParalysisCardWorker,
            CRangeOfMotionCardWorker fromRangeOfMotionCardWorker,
            CRangeOfMotionCardWorker toRangeOfMotionCardWorker,
            CCardWorker fromCardWorker,
            CCardWorker toCardWorker)
        {
            AddBrachialPlexusCard(
                fromBrachialPlexusCardWorker,
                toBrachialPlexusCardWorker,
                fromHospitalizationId,
                toHospitalizationId,
                fromVisitId,
                toVisitId);

            AddObstetricParalysisCard(
                fromObstetricParalysisCardWorker,
                toObstetricParalysisCardWorker,
                fromHospitalizationId,
                toHospitalizationId,
                fromVisitId,
                toVisitId);

            AddRangeOfMotionCard(
                fromRangeOfMotionCardWorker,
                toRangeOfMotionCardWorker,
                fromHospitalizationId,
                toHospitalizationId,
                fromVisitId,
                toVisitId);

            var cardTypes = (CardType[])Enum.GetValues(typeof(CardType));

            foreach (CardType cardType in cardTypes)
            {
                AddLeftRightCard(
                    fromCardWorker,
                    toCardWorker,
                    cardType,
                    fromHospitalizationId,
                    toHospitalizationId,
                    fromVisitId,
                    toVisitId);
            }
        }
        public PaintDoublePictureForm(string formName, CWorkersKeeper workersKeeper, CCard cardLeftInfo, CCard cardRightInfo)
        {
            InitializeComponent();

            _configurationEngine = workersKeeper.ConfigurationEngine;

            Text             = formName;
            _cardWorker      = workersKeeper.CardWorker;
            _cardLeftInfo    = cardLeftInfo;
            _cardRightInfo   = cardRightInfo;
            _shadePaintLeft  = new ShadePaint(cardLeftInfo.Picture, "Левая сторона");
            _shadePaintRight = new ShadePaint(cardRightInfo.Picture, "Правая сторона");
        }
Beispiel #5
0
        /// <summary>
        /// Добавить пациента из одной базы в другую
        /// </summary>
        /// <param name="mergeForm">Указатель на MergeForm</param>
        /// <param name="to">Куда будет вставлять пациент (own или foreign)</param>
        /// <param name="nosologyChangesForDB">Список замен для нозологий</param>
        /// <param name="toNosologyWorker">Класс для работы с нозологиями в базе, куда копируется пациент</param>
        /// <param name="fromWorkersKeeper">Класс для хранения классов для работы с данными в базе, откуда копируется пациент</param>
        /// <param name="toWorkersKeeper">Класс для хранения классов для работы с данными в базе, куда копируется пациент</param>
        /// <param name="patientInfo">Данные копируемого пациента</param>
        /// <param name="fromPatientWorker">Класс для работы с пациентами в базе, откуда копируется пациент</param>
        /// <param name="toPatientWorker">Класс для работы с пациентами в базе, куда копируется пациент</param>
        /// <param name="fromAnamneseWorker">Класс для работы с анамнезами в базе, откуда копируется пациент</param>
        /// <param name="toAnamneseWorker">Класс для работы с анамнезами в базе, куда копируется пациент</param>
        /// <param name="fromObstetricHistoryWorker">Класс для работы с акушерскими анамнезами в базе, откуда копируется пациент</param>
        /// <param name="toObstetricHistoryWorker">Класс для работы с акушерскими анамнезами в базе, куда копируется пациент</param>
        /// <param name="fromHospitalizationWorker">Класс для работы с госпитализациями в базе, откуда копируется пациент</param>
        /// <param name="toHospitalizationWorker">Класс для работы с госпитализациями в базе, куда копируется пациент</param>
        /// <param name="fromMedicalInspectionWorker">Класс для работы с осмотрами в отделении в базе, откуда копируется пациент</param>
        /// <param name="toMedicalInspectionWorker">Класс для работы с осмотрами в отделении в базе, куда копируется пациент</param>
        /// <param name="fromDischargeEpicrisisWorker">Класс для работы с выписными эпикризами в базе, откуда копируется пациент</param>
        /// <param name="toDischargeEpicrisisWorker">Класс для работы с выписными эпикризами в базе, куда копируется пациент</param>
        /// <param name="fromLineOfCommunicationEpicrisisWorker">Класс для работы с этапными эпикризами в базе, откуда копируется пациент</param>
        /// <param name="toLineOfCommunicationEpicrisisWorker">Класс для работы с этапными эпикризами в базе, куда копируется пациент</param>
        /// <param name="fromTransferableEpicrisisWorker">Класс для работы с переводными эпикризами в базе, откуда копируется пациент</param>
        /// <param name="toTransferableEpicrisisWorker">Класс для работы с переводными эпикризами в базе, куда копируется пациент</param>
        /// <param name="fromOperationWorker">Класс для работы с операциями в базе, откуда копируется пациент</param>
        /// <param name="toOperationWorker">Класс для работы с операциями в базе, куда копируется пациент</param>
        /// <param name="fromOperationProtocolWorker">Класс для работы с операционными протоколами в базе, откуда копируется пациент</param>
        /// <param name="toOperationProtocolWorker">Класс для работы с операционными протоколами в базе, куда копируется пациент</param>
        /// <param name="fromVisitWorker">Класс для работы с консультациями в базе, откуда копируется пациент</param>
        /// <param name="toVisitWorker">Класс для работы с консультациями в базе, куда копируется пациент</param>
        /// <param name="fromBrachialPlexusCardWorker">Класс для работы с картами на плечевое сплетение в базе, откуда копируется пациент</param>
        /// <param name="toBrachialPlexusCardWorker">Класс для работы с картами на плечевое сплетение в базе, куда копируется пациент</param>
        /// <param name="fromObstetricParalysisCardWorker">Класс для работы с картами на акушерский паралич в базе, откуда копируется пациент</param>
        /// <param name="toObstetricParalysisCardWorker">Класс для работы с картами на акушерский паралич в базе, куда копируется пациент</param>
        /// <param name="fromRangeOfMotionCardWorker">Класс для работы с картами на объём движений в базе, откуда копируется пациент</param>
        /// <param name="toRangeOfMotionCardWorker">Класс для работы с картами на объём движений в базе, куда копируется пациент</param>
        /// <param name="fromCardWorker">Класс для работы с картами из двух частей в базе, откуда копируется пациент</param>
        /// <param name="toCardWorker">Класс для работы с картами из двух частей в базе, куда копируется пациент</param>
        /// <param name="copyPrivateData">Копировать данные из личной папки</param>
        public static void AddPatient(
            MergeForm mergeForm,
            string to,
            CNosologyWorker toNosologyWorker,
            CWorkersKeeper fromWorkersKeeper,
            CWorkersKeeper toWorkersKeeper,
            CPatient patientInfo,
            CPatientWorker fromPatientWorker,
            CPatientWorker toPatientWorker,
            CAnamneseWorker fromAnamneseWorker,
            CAnamneseWorker toAnamneseWorker,
            CObstetricHistoryWorker fromObstetricHistoryWorker,
            CObstetricHistoryWorker toObstetricHistoryWorker,
            CHospitalizationWorker fromHospitalizationWorker,
            CHospitalizationWorker toHospitalizationWorker,
            CMedicalInspectionWorker fromMedicalInspectionWorker,
            CMedicalInspectionWorker toMedicalInspectionWorker,
            CDischargeEpicrisisWorker fromDischargeEpicrisisWorker,
            CDischargeEpicrisisWorker toDischargeEpicrisisWorker,
            CLineOfCommunicationEpicrisisWorker fromLineOfCommunicationEpicrisisWorker,
            CLineOfCommunicationEpicrisisWorker toLineOfCommunicationEpicrisisWorker,
            CTransferableEpicrisisWorker fromTransferableEpicrisisWorker,
            CTransferableEpicrisisWorker toTransferableEpicrisisWorker,
            COperationWorker fromOperationWorker,
            COperationWorker toOperationWorker,
            COperationProtocolWorker fromOperationProtocolWorker,
            COperationProtocolWorker toOperationProtocolWorker,
            CVisitWorker fromVisitWorker,
            CVisitWorker toVisitWorker,
            CBrachialPlexusCardWorker fromBrachialPlexusCardWorker,
            CBrachialPlexusCardWorker toBrachialPlexusCardWorker,
            CObstetricParalysisCardWorker fromObstetricParalysisCardWorker,
            CObstetricParalysisCardWorker toObstetricParalysisCardWorker,
            CRangeOfMotionCardWorker fromRangeOfMotionCardWorker,
            CRangeOfMotionCardWorker toRangeOfMotionCardWorker,
            CCardWorker fromCardWorker,
            CCardWorker toCardWorker,
            bool copyPrivateData)
        {
            // Добавляем пациента
            var newPatient = new CPatient(patientInfo)
            {
                Id = toPatientWorker.GetNewID()
            };

            // Решаем конфликт с нозологией, если в базе нету нозологии, указанной у пациента
            foreach (string nosologyName in patientInfo.NosologyList)
            {
                if (toNosologyWorker.GetByGeneralData(nosologyName) == null)
                {
                    throw new Exception(string.Format("Unknown nosology: '{0}'", nosologyName));
                }
            }

            toPatientWorker.Update(newPatient);

            // Создание личной папки, если она указана
            if (newPatient.PrivateFolder.Length > 0)
            {
                if (!(newPatient.PrivateFolder.Length > 1 && newPatient.PrivateFolder[1] == ':'))
                {
                    string fullPrivateFolderPathTo   = Path.Combine(toWorkersKeeper.ExecutableDirectoryPath, newPatient.PrivateFolder);
                    string fullPrivateFolderPathFrom = Path.Combine(fromWorkersKeeper.ExecutableDirectoryPath, newPatient.PrivateFolder);

                    CopyContent(mergeForm, fullPrivateFolderPathFrom, fullPrivateFolderPathTo, copyPrivateData);
                }
            }

            AddAnamnese(fromAnamneseWorker, toAnamneseWorker, patientInfo.Id, newPatient.Id);

            AddObstetricHistory(fromObstetricHistoryWorker, toObstetricHistoryWorker, patientInfo.Id, newPatient.Id);

            // Проходим по всем госпитализациям и добавляем все данные о госпитализациях,
            // операциях и всех эпикризах
            foreach (CHospitalization fromHospitalization in fromHospitalizationWorker.GetListByPatientId(patientInfo.Id))
            {
                AddHospitalization(
                    fromPatientWorker,
                    toPatientWorker,
                    fromHospitalizationWorker,
                    toHospitalizationWorker,
                    fromMedicalInspectionWorker,
                    toMedicalInspectionWorker,
                    fromDischargeEpicrisisWorker,
                    toDischargeEpicrisisWorker,
                    fromLineOfCommunicationEpicrisisWorker,
                    toLineOfCommunicationEpicrisisWorker,
                    fromTransferableEpicrisisWorker,
                    toTransferableEpicrisisWorker,
                    fromOperationWorker,
                    toOperationWorker,
                    fromOperationProtocolWorker,
                    toOperationProtocolWorker,
                    fromBrachialPlexusCardWorker,
                    toBrachialPlexusCardWorker,
                    fromObstetricParalysisCardWorker,
                    toObstetricParalysisCardWorker,
                    fromRangeOfMotionCardWorker,
                    toRangeOfMotionCardWorker,
                    fromCardWorker,
                    toCardWorker,
                    patientInfo.Id,
                    newPatient.Id,
                    fromHospitalization.Id);
            }

            // Проходим по всем консультациям и добавляем все данные о консультациях
            foreach (CVisit fromVisit in fromVisitWorker.GetListByPatientId(patientInfo.Id))
            {
                AddVisit(
                    fromPatientWorker,
                    toPatientWorker,
                    fromVisitWorker,
                    toVisitWorker,
                    fromBrachialPlexusCardWorker,
                    toBrachialPlexusCardWorker,
                    fromObstetricParalysisCardWorker,
                    toObstetricParalysisCardWorker,
                    fromRangeOfMotionCardWorker,
                    toRangeOfMotionCardWorker,
                    fromCardWorker,
                    toCardWorker,
                    patientInfo.Id,
                    newPatient.Id,
                    fromVisit.Id);
            }
        }
Beispiel #6
0
        /// <summary>
        /// Добавить госпитализацю и все вложенные объекты
        /// </summary>
        /// <param name="fromPatientWorker">Класс для работы с пациентами в базе, откуда копируется госпитализация</param>
        /// <param name="toPatientWorker">Класс для работы с пациентами в базе, куда копируется госпитализация</param>
        /// <param name="fromHospitalizationWorker">Класс для работы с госпитализациями в базе, откуда копируется госпитализация</param>
        /// <param name="toHospitalizationWorker">Класс для работы с госпитализациями в базе, куда копируется госпитализация</param>
        /// <param name="fromMedicalInspectionWorker">Класс для работы с осмотрами в отделении в базе, откуда копируется госпитализация</param>
        /// <param name="toMedicalInspectionWorker">Класс для работы с осмотрами в отделении в базе, куда копируется госпитализация</param>
        /// <param name="fromDischargeEpicrisisWorker">Класс для работы с выписными эпикризами в базе, откуда копируется госпитализация</param>
        /// <param name="toDischargeEpicrisisWorker">Класс для работы с выписными эпикризами в базе, куда копируется госпитализация</param>
        /// <param name="fromLineOfCommunicationEpicrisisWorker">Класс для работы с этапными эпикризами в базе, откуда копируется госпитализация</param>
        /// <param name="toLineOfCommunicationEpicrisisWorker">Класс для работы с этапными эпикризами в базе, куда копируется госпитализация</param>
        /// <param name="fromTransferableEpicrisisWorker">Класс для работы с переводными эпикризами в базе, откуда копируется госпитализация</param>
        /// <param name="toTransferableEpicrisisWorker">Класс для работы с переводными эпикризами в базе, куда копируется госпитализация</param>
        /// <param name="fromOperationWorker">Класс для работы с операциями в базе, откуда копируется госпитализация</param>
        /// <param name="toOperationWorker">Класс для работы с операциями в базе, куда копируется госпитализация</param>
        /// <param name="fromOperationProtocolWorker">Класс для работы с операционными протоколами в базе, откуда копируется госпитализация</param>
        /// <param name="toOperationProtocolWorker">Класс для работы с операционными протоколами в базе, куда копируется госпитализация</param>
        /// <param name="fromBrachialPlexusCardWorker">Класс для работы с картами на плечевое сплетение в базе, откуда копируется госпитализация</param>
        /// <param name="toBrachialPlexusCardWorker">Класс для работы с картами на плечевое сплетение в базе, куда копируется госпитализация</param>
        /// <param name="fromObstetricParalysisCardWorker">Класс для работы с картами на акушерский паралич в базе, откуда копируется госпитализация</param>
        /// <param name="toObstetricParalysisCardWorker">Класс для работы с картами на акушерский паралич в базе, куда копируется госпитализация</param>
        /// <param name="fromRangeOfMotionCardWorker">Класс для работы с картами на объём движений в базе, откуда копируется госпитализация</param>
        /// <param name="toRangeOfMotionCardWorker">Класс для работы с картами на объём движений в базе, куда копируется госпитализация</param>
        /// <param name="fromCardWorker">Класс для работы с картами из двух частей в базе, откуда копируется госпитализация</param>
        /// <param name="toCardWorker">Класс для работы с картами из двух частей в базе, куда копируется госпитализация</param>
        /// <param name="fromPatientId">id пациента из базы, откуда копируется госпитализация</param>
        /// <param name="toPaientId">id пациента из базы, куда копируется госпитализация</param>
        /// <param name="hospitalizationId">id госпитализации, которую надо скопировать</param>
        public static void AddHospitalization(
            CPatientWorker fromPatientWorker,
            CPatientWorker toPatientWorker,
            CHospitalizationWorker fromHospitalizationWorker,
            CHospitalizationWorker toHospitalizationWorker,
            CMedicalInspectionWorker fromMedicalInspectionWorker,
            CMedicalInspectionWorker toMedicalInspectionWorker,
            CDischargeEpicrisisWorker fromDischargeEpicrisisWorker,
            CDischargeEpicrisisWorker toDischargeEpicrisisWorker,
            CLineOfCommunicationEpicrisisWorker fromLineOfCommunicationEpicrisisWorker,
            CLineOfCommunicationEpicrisisWorker toLineOfCommunicationEpicrisisWorker,
            CTransferableEpicrisisWorker fromTransferableEpicrisisWorker,
            CTransferableEpicrisisWorker toTransferableEpicrisisWorker,
            COperationWorker fromOperationWorker,
            COperationWorker toOperationWorker,
            COperationProtocolWorker fromOperationProtocolWorker,
            COperationProtocolWorker toOperationProtocolWorker,
            CBrachialPlexusCardWorker fromBrachialPlexusCardWorker,
            CBrachialPlexusCardWorker toBrachialPlexusCardWorker,
            CObstetricParalysisCardWorker fromObstetricParalysisCardWorker,
            CObstetricParalysisCardWorker toObstetricParalysisCardWorker,
            CRangeOfMotionCardWorker fromRangeOfMotionCardWorker,
            CRangeOfMotionCardWorker toRangeOfMotionCardWorker,
            CCardWorker fromCardWorker,
            CCardWorker toCardWorker,
            int fromPatientId,
            int toPaientId,
            int hospitalizationId)
        {
            CHospitalization fromHospitalization = fromHospitalizationWorker.GetById(hospitalizationId);

            // Добавляем госпитализацию
            var newHospitalization = new CHospitalization(fromHospitalization)
            {
                Id        = toHospitalizationWorker.GetNewID(),
                PatientId = toPaientId
            };

            toHospitalizationWorker.Update(newHospitalization, toPatientWorker.GetById(toPaientId));

            AddMedicalInspection(
                fromMedicalInspectionWorker,
                toMedicalInspectionWorker,
                hospitalizationId,
                newHospitalization.Id);

            AddDischargeEpicrisis(
                fromDischargeEpicrisisWorker,
                toDischargeEpicrisisWorker,
                hospitalizationId,
                newHospitalization.Id);

            AddLineOfCommunicationEpicrisis(
                fromLineOfCommunicationEpicrisisWorker,
                toLineOfCommunicationEpicrisisWorker,
                hospitalizationId,
                newHospitalization.Id);

            AddTransferableEpicrisis(
                fromTransferableEpicrisisWorker,
                toTransferableEpicrisisWorker,
                hospitalizationId,
                newHospitalization.Id);

            // Добавляем карты
            AddCardsToDatabase(fromHospitalization.Id, -1, newHospitalization.Id, -1,
                               fromBrachialPlexusCardWorker, toBrachialPlexusCardWorker, fromObstetricParalysisCardWorker, toObstetricParalysisCardWorker,
                               fromRangeOfMotionCardWorker, toRangeOfMotionCardWorker, fromCardWorker, toCardWorker);

            // Добавляем операции
            foreach (COperation fromOperation in fromOperationWorker.GetListByHospitalizationId(fromHospitalization.Id))
            {
                AddOperationAndProtocol(
                    toHospitalizationWorker,
                    fromOperationWorker,
                    toOperationWorker,
                    fromOperationProtocolWorker,
                    toOperationProtocolWorker,
                    fromOperation.Id,
                    newHospitalization.Id);
            }
        }
Beispiel #7
0
        public CWorkersKeeper(string dataPath, bool isNeedToStoreDbFiles)
        {
            if (!Directory.Exists(dataPath))
            {
                Directory.CreateDirectory(dataPath);
            }

            var dataDirectoryInfo = new DirectoryInfo(dataPath);

            ExecutableDirectoryPath = dataDirectoryInfo.Parent != null
                ? dataDirectoryInfo.Parent.FullName
                : dataDirectoryInfo.FullName;

            if (isNeedToStoreDbFiles)
            {
                try
                {
                    SaveDbFilesToTempFolder(dataPath);
                }
                catch (Exception ex)
                {
                    MessageBox.ShowDialog("Не удалось осуществить резервное копирование файлов с данными. Сообщение об ошибке:\r\n" + ex, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            var waitForm = new WaitForm("Загрузка данных...");

            try
            {
                waitForm.Show();
                Application.DoEvents();

                ConfigurationEngine = new CConfigurationEngine();

                waitForm.SetProgress(4);
                _nosologyWorker = new CNosologyWorker(dataPath);
                waitForm.SetProgress(8);
                _operationTypeWorker = new COperationTypeWorker(dataPath);
                waitForm.SetProgress(12);
                _orderlyWorker = new COrderlyWorker(dataPath);
                waitForm.SetProgress(16);
                _scrubNurseWorker = new CScrubNurseWorker(dataPath);
                waitForm.SetProgress(20);
                _surgeonWorker = new CSurgeonWorker(dataPath);

                waitForm.SetProgress(24);
                _patientWorker = new CPatientWorker(this, dataPath);
                waitForm.SetProgress(28);
                _hospitalizationWorker = new CHospitalizationWorker(this, dataPath);
                waitForm.SetProgress(32);
                _visitWorker = new CVisitWorker(this, dataPath);
                waitForm.SetProgress(36);
                _operationWorker = new COperationWorker(this, dataPath);

                waitForm.SetProgress(40);
                _dischargeEpicrisisWorker = new CDischargeEpicrisisWorker(dataPath);
                waitForm.SetProgress(44);
                _lineOfCommunicationEpicrisisWorker = new CLineOfCommunicationEpicrisisWorker(dataPath);
                waitForm.SetProgress(48);
                _medicalInspectionWorker = new CMedicalInspectionWorker(dataPath);
                waitForm.SetProgress(52);
                _operationProtocolWorker = new COperationProtocolWorker(dataPath);
                waitForm.SetProgress(56);
                _transferableEpicrisisWorker = new CTransferableEpicrisisWorker(dataPath);

                waitForm.SetProgress(60);
                _anamneseWorker = new CAnamneseWorker(dataPath);
                waitForm.SetProgress(66);
                _obstetricHistoryWorker = new CObstetricHistoryWorker(dataPath);

                waitForm.SetProgress(72);
                _cardWorker = new CCardWorker(dataPath);
                waitForm.SetProgress(78);
                _brachialPlexusCardWorker = new CBrachialPlexusCardWorker(dataPath);
                waitForm.SetProgress(84);
                _rangeOfMotionCardWorker = new CRangeOfMotionCardWorker(dataPath);
                waitForm.SetProgress(92);
                _obstetricParalysisCardWorker = new CObstetricParalysisCardWorker(dataPath);

                waitForm.SetProgress(100);
                _globalSettings = new CGlobalSettings(dataPath);
            }
            finally
            {
                waitForm.CloseForm();
            }
        }
        /// <summary>
        /// Добавить пациента из одной базы в другую
        /// </summary>
        /// <param name="mergeForm">Указатель на MergeForm</param>
        /// <param name="to">Куда будет вставлять пациент (own или foreign)</param>
        /// <param name="nosologyChangesForDB">Список замен для нозологий</param>
        /// <param name="toNosologyWorker">Класс для работы с нозологиями в базе, куда копируется пациент</param>
        /// <param name="fromWorkersKeeper">Класс для хранения классов для работы с данными в базе, откуда копируется пациент</param>
        /// <param name="toWorkersKeeper">Класс для хранения классов для работы с данными в базе, куда копируется пациент</param>
        /// <param name="patientInfo">Данные копируемого пациента</param>
        /// <param name="fromPatientWorker">Класс для работы с пациентами в базе, откуда копируется пациент</param>
        /// <param name="toPatientWorker">Класс для работы с пациентами в базе, куда копируется пациент</param>
        /// <param name="fromAnamneseWorker">Класс для работы с анамнезами в базе, откуда копируется пациент</param>
        /// <param name="toAnamneseWorker">Класс для работы с анамнезами в базе, куда копируется пациент</param>
        /// <param name="fromObstetricHistoryWorker">Класс для работы с акушерскими анамнезами в базе, откуда копируется пациент</param>
        /// <param name="toObstetricHistoryWorker">Класс для работы с акушерскими анамнезами в базе, куда копируется пациент</param>
        /// <param name="fromHospitalizationWorker">Класс для работы с госпитализациями в базе, откуда копируется пациент</param>
        /// <param name="toHospitalizationWorker">Класс для работы с госпитализациями в базе, куда копируется пациент</param>
        /// <param name="fromMedicalInspectionWorker">Класс для работы с осмотрами в отделении в базе, откуда копируется пациент</param>
        /// <param name="toMedicalInspectionWorker">Класс для работы с осмотрами в отделении в базе, куда копируется пациент</param>
        /// <param name="fromDischargeEpicrisisWorker">Класс для работы с выписными эпикризами в базе, откуда копируется пациент</param>
        /// <param name="toDischargeEpicrisisWorker">Класс для работы с выписными эпикризами в базе, куда копируется пациент</param>
        /// <param name="fromLineOfCommunicationEpicrisisWorker">Класс для работы с этапными эпикризами в базе, откуда копируется пациент</param>
        /// <param name="toLineOfCommunicationEpicrisisWorker">Класс для работы с этапными эпикризами в базе, куда копируется пациент</param>
        /// <param name="fromTransferableEpicrisisWorker">Класс для работы с переводными эпикризами в базе, откуда копируется пациент</param>
        /// <param name="toTransferableEpicrisisWorker">Класс для работы с переводными эпикризами в базе, куда копируется пациент</param>
        /// <param name="fromOperationWorker">Класс для работы с операциями в базе, откуда копируется пациент</param>
        /// <param name="toOperationWorker">Класс для работы с операциями в базе, куда копируется пациент</param>
        /// <param name="fromOperationProtocolWorker">Класс для работы с операционными протоколами в базе, откуда копируется пациент</param>
        /// <param name="toOperationProtocolWorker">Класс для работы с операционными протоколами в базе, куда копируется пациент</param>
        /// <param name="fromVisitWorker">Класс для работы с консультациями в базе, откуда копируется пациент</param>
        /// <param name="toVisitWorker">Класс для работы с консультациями в базе, куда копируется пациент</param>
        /// <param name="fromBrachialPlexusCardWorker">Класс для работы с картами на плечевое сплетение в базе, откуда копируется пациент</param>
        /// <param name="toBrachialPlexusCardWorker">Класс для работы с картами на плечевое сплетение в базе, куда копируется пациент</param>
        /// <param name="fromObstetricParalysisCardWorker">Класс для работы с картами на акушерский паралич в базе, откуда копируется пациент</param>
        /// <param name="toObstetricParalysisCardWorker">Класс для работы с картами на акушерский паралич в базе, куда копируется пациент</param>
        /// <param name="fromRangeOfMotionCardWorker">Класс для работы с картами на объём движений в базе, откуда копируется пациент</param>
        /// <param name="toRangeOfMotionCardWorker">Класс для работы с картами на объём движений в базе, куда копируется пациент</param>
        /// <param name="fromCardWorker">Класс для работы с картами из двух частей в базе, откуда копируется пациент</param>
        /// <param name="toCardWorker">Класс для работы с картами из двух частей в базе, куда копируется пациент</param>
        public static void AddPatient(
            MergeForm mergeForm,
            string to,
            Dictionary <string, string> nosologyChangesForDB,
            CNosologyWorker toNosologyWorker,
            CWorkersKeeper fromWorkersKeeper,
            CWorkersKeeper toWorkersKeeper,
            CPatient patientInfo,
            CPatientWorker fromPatientWorker,
            CPatientWorker toPatientWorker,
            CAnamneseWorker fromAnamneseWorker,
            CAnamneseWorker toAnamneseWorker,
            CObstetricHistoryWorker fromObstetricHistoryWorker,
            CObstetricHistoryWorker toObstetricHistoryWorker,
            CHospitalizationWorker fromHospitalizationWorker,
            CHospitalizationWorker toHospitalizationWorker,
            CMedicalInspectionWorker fromMedicalInspectionWorker,
            CMedicalInspectionWorker toMedicalInspectionWorker,
            CDischargeEpicrisisWorker fromDischargeEpicrisisWorker,
            CDischargeEpicrisisWorker toDischargeEpicrisisWorker,
            CLineOfCommunicationEpicrisisWorker fromLineOfCommunicationEpicrisisWorker,
            CLineOfCommunicationEpicrisisWorker toLineOfCommunicationEpicrisisWorker,
            CTransferableEpicrisisWorker fromTransferableEpicrisisWorker,
            CTransferableEpicrisisWorker toTransferableEpicrisisWorker,
            COperationWorker fromOperationWorker,
            COperationWorker toOperationWorker,
            COperationProtocolWorker fromOperationProtocolWorker,
            COperationProtocolWorker toOperationProtocolWorker,
            CVisitWorker fromVisitWorker,
            CVisitWorker toVisitWorker,
            CBrachialPlexusCardWorker fromBrachialPlexusCardWorker,
            CBrachialPlexusCardWorker toBrachialPlexusCardWorker,
            CObstetricParalysisCardWorker fromObstetricParalysisCardWorker,
            CObstetricParalysisCardWorker toObstetricParalysisCardWorker,
            CRangeOfMotionCardWorker fromRangeOfMotionCardWorker,
            CRangeOfMotionCardWorker toRangeOfMotionCardWorker,
            CCardWorker fromCardWorker,
            CCardWorker toCardWorker)
        {
            // Добавляем пациента
            var newPatient = new CPatient(patientInfo)
            {
                Id = toPatientWorker.GetNewID()
            };

            // Решаем конфликт с нозологией, если в базе нету нозологии, указанной у пациента
            if (toNosologyWorker.GetByGeneralData(patientInfo.Nosology) == null)
            {
                if (nosologyChangesForDB.ContainsKey(patientInfo.Nosology))
                {
                    newPatient.Nosology = nosologyChangesForDB[patientInfo.Nosology];
                    mergeForm.SetStatus("Прописываем нозологию '" + nosologyChangesForDB[patientInfo.Nosology] + "' вместо нозологии '" + patientInfo.Nosology + "'");
                }
                else
                {
                    new AddNosologyByMergeForm(toNosologyWorker, nosologyChangesForDB, newPatient, to, mergeForm).ShowDialog();
                }
            }

            toPatientWorker.Update(newPatient);

            // Создание личной папки, если она указана
            if (newPatient.PrivateFolder.Length > 0)
            {
                if (!(newPatient.PrivateFolder.Length > 1 && newPatient.PrivateFolder[1] == ':'))
                {
                    string fullPrivateFolderPathTo   = Path.Combine(toWorkersKeeper.ExecutableDirectoryPath, newPatient.PrivateFolder);
                    string fullPrivateFolderPathFrom = Path.Combine(fromWorkersKeeper.ExecutableDirectoryPath, newPatient.PrivateFolder);

                    CopyContent(mergeForm, fullPrivateFolderPathFrom, fullPrivateFolderPathTo);
                }
            }

            AddAnamnese(fromAnamneseWorker, toAnamneseWorker, patientInfo.Id, newPatient.Id);

            AddObstetricHistory(fromObstetricHistoryWorker, toObstetricHistoryWorker, patientInfo.Id, newPatient.Id);

            // Проходим по всем госпитализациям и добавляем все данные о госпитализациях,
            // операциях и всех эпикризах
            foreach (CHospitalization fromHospitalization in fromHospitalizationWorker.GetListByPatientId(patientInfo.Id))
            {
                AddHospitalization(
                    fromPatientWorker,
                    toPatientWorker,
                    fromHospitalizationWorker,
                    toHospitalizationWorker,
                    fromMedicalInspectionWorker,
                    toMedicalInspectionWorker,
                    fromDischargeEpicrisisWorker,
                    toDischargeEpicrisisWorker,
                    fromLineOfCommunicationEpicrisisWorker,
                    toLineOfCommunicationEpicrisisWorker,
                    fromTransferableEpicrisisWorker,
                    toTransferableEpicrisisWorker,
                    fromOperationWorker,
                    toOperationWorker,
                    fromOperationProtocolWorker,
                    toOperationProtocolWorker,
                    fromBrachialPlexusCardWorker,
                    toBrachialPlexusCardWorker,
                    fromObstetricParalysisCardWorker,
                    toObstetricParalysisCardWorker,
                    fromRangeOfMotionCardWorker,
                    toRangeOfMotionCardWorker,
                    fromCardWorker,
                    toCardWorker,
                    patientInfo.Id,
                    newPatient.Id,
                    fromHospitalization.Id);
            }

            // Проходим по всем консультациям и добавляем все данные о консультациях
            foreach (CVisit fromVisit in fromVisitWorker.GetListByPatientId(patientInfo.Id))
            {
                AddVisit(
                    fromPatientWorker,
                    toPatientWorker,
                    fromVisitWorker,
                    toVisitWorker,
                    fromBrachialPlexusCardWorker,
                    toBrachialPlexusCardWorker,
                    fromObstetricParalysisCardWorker,
                    toObstetricParalysisCardWorker,
                    fromRangeOfMotionCardWorker,
                    toRangeOfMotionCardWorker,
                    fromCardWorker,
                    toCardWorker,
                    patientInfo.Id,
                    newPatient.Id,
                    fromVisit.Id);
            }
        }