public async Task GetScansTest()
        {
            var mockRoom = new RoomEntity {
                id = 12, name = "123", building = new BuildingEntity {
                    id = 13, name = "unikalna nazwa budynku"
                }
            };
            var mockRoom2 = new RoomEntity {
                id = 2, name = "3/40", building = new BuildingEntity {
                    id = 1, name = "b 34"
                }
            };
            var mockOwner = new UserEntity {
                id = 1, login = "******"
            };
            var expected = new ScanEntity[] {
                new ScanEntity {
                    id = 5, room = mockRoom2, owner = mockOwner, create_date = new DateTime(2020, 6, 13, 21, 9, 12)
                },
                new ScanEntity {
                    id = 3, room = mockRoom, owner = mockOwner, create_date = new DateTime(2020, 6, 13, 19, 51, 37)
                }
            };

            Assert.AreEqual(expected, await apiController.getScans());
        }
        /// <summary>
        /// Konstruktor klasy
        /// </summary>
        /// <param name="room">pokoj w ktorym odbywa sie skanowanie</param>
        public ScanItemPage(RoomEntity room, int scanId, ScanEntity previusScan)
        {
            Room = room;

            scanningUpdate = new ScanningUpdate(api, room, scanId);

            InitializeComponent();
            GetAllAssets();

            if (previusScan != null)
            {
                InitializeWith(previusScan);
            }

            _scanner.Options = new MobileBarcodeScanningOptions()
            {
                DelayBetweenContinuousScans = 1800, // msec
                UseFrontCameraIfAvailable   = false,
                PossibleFormats             = new List <BarcodeFormat>(new[]
                {
                    BarcodeFormat.EAN_8,
                    BarcodeFormat.EAN_13,
                    BarcodeFormat.CODE_128,
                    BarcodeFormat.QR_CODE
                }),
                TryHarder = false //Gets or sets a flag which cause a deeper look into the bitmap.
            };
        }
Пример #3
0
 public void Update(string id, ScanEntity scanEntity)
 {
     _scanEntity.ReplaceOne(scanEntity => scanEntity.id == id, scanEntity);
     if (_memoryCacheExtensions.Contains(id))
     {
         _memoryCacheExtensions.Upate <ScanEntity>(scanEntity.id, scanEntity, ObsloteType.Absolutely, 1800);
     }
 }
Пример #4
0
        /// <summary>
        /// 把单元格中的检查与建议内容抓取出来
        /// </summary>
        /// <param name="parentNode"></param>
        /// <param name="cont"></param>
        private void crawlScanAndSuggestion(mshtml.IHTMLElement td, ScanEntity se)
        {
            string content = td.innerText;

            if (content != null && !"".Equals(content.Trim()))
            {
                //log.WriteLog("报告原文:【" + content + "】");
                if (content.Contains("检查所见"))
                {
                    se.YXBXHJCSJ = EpisodeRegexUtils.getFirstMatchedFromString(content, @"^\s*检查所见:\s*\n+(.+)$", true);
                }
                else if (content.Contains("诊断意见"))
                {
                    se.JCZDHTS = EpisodeRegexUtils.getFirstMatchedFromString(content, @"^\s*诊断意见:\s*\n+(.+)$", true);
                }
            }
        }
Пример #5
0
        public override void parseElement(IHTMLElement item)
        {
            try
            {
                if (item.tagName != null && item.tagName.ToUpper().Equals("TABLE"))
                {
                    ScanEntity se = new ScanEntity();
                    se.TStudyNoz = JCH;
                    foreach (IHTMLElement td in item.all)
                    {
                        if (td.tagName != null && td.tagName.ToUpper().Equals("TD"))
                        {
                            //把单元格中的检查与建议内容抓取出来
                            crawlScanAndSuggestion(td, se);
                        }
                    }

                    /*
                     * string updateSql = "update tb_hyft_jcjl set YXBXHJCSJ = '" + se.YXBXHJCSJ + "', JCZDHTS='" + se.JCZDHTS
                     + "' where JCH='" + se.TStudyNoz + "' and HZBM='" + episode.PatientID + "' and JZBM='" + episode.EpisodeID + "'";
                     * */
                    if (se.YXBXHJCSJ != null || se.JCZDHTS != null)
                    {
                        if (se.YXBXHJCSJ != null)
                        {
                            se.YXBXHJCSJ = se.YXBXHJCSJ.Replace("'", " ");
                        }
                        if (se.JCZDHTS != null)
                        {
                            se.JCZDHTS = se.JCZDHTS.Replace("'", " ");
                        }
                        string updateSql = "update tb_hyft_jcjl set YXBXHJCSJ = '" + se.YXBXHJCSJ + "', JCZDHTS='" + se.JCZDHTS
                                           + "' where JCH='" + se.TStudyNoz + "'";
                        log.WriteLog("更新报告检查意见与诊断意见,sql=" + updateSql);
                        sqlOp.executeUpdate(updateSql);
                    }
                }
            }
            catch (Exception e)
            {
                log.WriteLog("爬取超声报告内容异常:" + e.ToString() + "。" + e.StackTrace);
            }
        }
        /// <summary>
        /// Funkcja odpowiadajaca za inicjalizacje skanowania z wykorzystaniem poprzedniego skanowania
        /// </summary>
        /// <param name="previusScan">poprzedni skan</param>
        async void InitializeWith(ScanEntity previusScan)
        {
            var positions = await api.GetScanPositions(previusScan.id);

            if (positions == null)
            {
                return;
            }

            foreach (var position in positions)
            {
                scannedItem.Add($"{position.asset.type.id}-{position.asset.id}");

                ScanAsset(position.asset);

                var localReprezentation = AllPositions.Find(el => el.AssetEntity.id == position.asset.id);

                switch (position.state)
                {
                case 0:
                    // po prostu zeskanowano
                    break;

                case 1:
                    // zaakceptowano
                    localReprezentation.ItemMoved();
                    break;

                case 2:
                    // usunięto
                    localReprezentation.ItemDontMove();
                    break;
                }
            }

            UpdateCounter();
        }
Пример #7
0
        /// <summary>
        /// Funkcja odpowiadajaca za obsluge przycisku kontynuowania
        /// </summary>
        private void Continue_Button_Clicked(object o, EventArgs args)
        {
            EnableView(false);

            Device.BeginInvokeOnMainThread(async() =>
            {
                if (RoomPicker.SelectedIndex < 0)
                {
                    await DisplayAlert("Pomieszczenie", "Wybierz pomieszczenie", "OK");
                    EnableView(true);
                    return;
                }

                RoomEntity selectedRoom = null;
                string selectedName     = RoomPicker.Items[RoomPicker.SelectedIndex];

                await Task.Run(() =>
                {
                    foreach (var room in rooms)
                    {
                        if (room.name == selectedName)
                        {
                            selectedRoom = room;
                            break;
                        }
                    }
                });

                if (selectedRoom != null)
                {
                    var status = await CheckPermissions();

                    if (status != PermissionStatus.Granted)
                    {
                        await DisplayAlert("Komunikat", "Bez uprawnień do kamery aplikacja nie może działać poprawnie", "OK");
                    }
                    else
                    {
                        var scans = await api.getScans();
                        ScanEntity existingScan = null;

                        if (scans != null && scans.Length > 0)
                        {
                            foreach (var scan in scans)
                            {
                                if (scan.room.id == selectedRoom.id)
                                {
                                    existingScan = scan;
                                }
                            }
                        }

                        if (existingScan != null)
                        {
                            bool useThisScan = await DisplayAlert("Znaleziono niedokończone skanowanie", "Czy chcesz użyć niedokończonego skanowania?", "Tak", "Nie");

                            if (!useThisScan)
                            {
                                var scanning = new ScanningUpdate(api, selectedRoom, existingScan.id);
                                scanning.Delete();
                                existingScan = null;
                            }
                        }

                        int scanId = existingScan != null ? existingScan.id : await api.addScan(new ScanPrototype(selectedRoom.id));

                        await Navigation.PushModalAsync(new ScanItemPage(selectedRoom, scanId, existingScan));
                    }
                }
                else
                {
                    await DisplayAlert("Błąd", "Błąd niespodzianka, nie znaleziono wybranego pomieszczenia", "OK");
                }

                EnableView(true);
            });
        }
Пример #8
0
        public override void parseElement(IHTMLElement item)
        {
            if (item.id != null && item.id.Equals("tDHCRisclinicQueryOEItem"))
            {
                log.WriteLog("处理检查结果列表table id=【tDHCRisclinicQueryOEItem】");

                ArrayList  scans = new ArrayList();
                int        i     = 1;
                ScanEntity se    = null;
                Dictionary <string, ScanEntity> jch2Bean = new Dictionary <string, ScanEntity>();
                foreach (IHTMLElement ele in item.all)
                {
                    if (ele.id != null && ele.id.Equals("TStudyNoz" + i))
                    {
                        string jch = ele.innerText;
                        se = get(jch2Bean, jch);
                        if (se == null)
                        {
                            se = new ScanEntity();
                            jch2Bean.Add(jch, se);
                            se.TStudyNoz = jch;
                            scans.Add(se);
                        }
                    }
                    else if (ele.id != null && ele.id.Equals("TItemNamez" + i))
                    {
                        //同一个检查号,检查名称合并
                        se.TItemNamez = (se.TItemNamez == null ? "" : se.TItemNamez) + ele.innerText;
                    }
                    else if (ele.id != null && ele.id.Equals("TItemDatez" + i))
                    {
                        se.TItemDatez = ele.innerText;
                    }
                    else if (ele.id != null && ele.id.Equals("TItemStatusz" + i))
                    {
                        se.TItemStatusz = ele.innerText;
                    }
                    else if (ele.id != null && ele.id.Equals("TOEOrderDrz" + i))
                    {
                        se.TOEOrderDrz = ele.innerText;
                    }
                    else if (ele.id != null && ele.id.Equals("TIsIllz" + i))
                    {
                        se.TIsIllz = ele.innerText;
                    }
                    else if (ele.id != null && ele.id.Equals("TLocNamez" + i))
                    {
                        se.TLocNamez = ele.innerText;
                    }
                    else if (ele.id != null && ele.id.Equals("TreplocDrz" + i))
                    {
                        se.TreplocDrz = ele.innerText;
                    }
                    else if (ele.id != null && ele.id.Equals("TIshasImgz" + i))
                    {
                        se.TIshasImgz = ele.innerText;
                    }
                    else if (ele.id != null && ele.id.Equals("TMediumNamez" + i))
                    {
                        se.TMediumNamez = ele.innerText;
                    }
                    else if (ele.id != null && ele.id.Equals("Memoz" + i))
                    {
                        se.Memoz = ele.innerText;
                        i++; //处理完最后一个元素,i++准备处理下一个元素
                    }
                }
                insert2DB(scans);
            }
        }
Пример #9
0
 public ActionResult <ScanEntity> Post([Body] ScanEntity scanEntity)
 {
     scanEntity.scanTime = DateTime.Now;
     return(_scanDataBaseServer.Create(scanEntity));
 }
Пример #10
0
 public ScanEntity Create(ScanEntity scanEntity)
 {
     _scanEntity.InsertOne(scanEntity);
     _memoryCacheExtensions.Add <ScanEntity>(scanEntity.scanData, scanEntity, ObsloteType.Absolutely, 1800);
     return(scanEntity);
 }