public async Task <List <Guid> > OrderByLongestImpression( IEnumerable <Guid> cards, int historyDepth, CardSide side) { using (var context = new MainDatabaseContext()) { var accountedForImpressions = await context.CardImpressions .Where(x => cards.Any(y => y == x.CardId)) .Where(x => x.TestedSide == side) .GroupBy(x => x.CardId) .ToDictionaryAsync( x => x.Key, x => x.OrderByDescending(y => y.Date).Take(historyDepth)); var impressionsOrderedBySpentMedian = accountedForImpressions .OrderByDescending(x => x.Value.Select(y => side == CardSide.Front ? y.FrontMillisecondsSpent : y.BackMillisecondsSpent) .Median()) .Select(x => x.Key); var newCards = cards.Except(impressionsOrderedBySpentMedian); return(newCards.Union(impressionsOrderedBySpentMedian).ToList()); } }
public CObstetricParalysisCard(int hospitalizationId, int visitId) { HospitalizationId = hospitalizationId; VisitId = visitId; SideOfCard = CardSide.Left; GlobalAbductionPicturesSelection = new bool[5]; GlobalAbductionPicturesSelection[0] = true; GlobalExternalRotationPicturesSelection = new bool[5]; GlobalExternalRotationPicturesSelection[0] = true; HandToNeckPicturesSelection = new bool[5]; HandToNeckPicturesSelection[0] = true; HandToSpinePicturesSelection = new bool[5]; HandToSpinePicturesSelection[0] = true; HandToMouthPicturesSelection = new bool[5]; HandToMouthPicturesSelection[0] = true; ComboBoxes = new string[7]; for (int i = 0; i < ComboBoxes.Length; i++) { ComboBoxes[i] = "да"; } }
public NextCardToTest( Guid cardId, CardSide sideToTest, Guid collectionId) { this.CardSideToTest = sideToTest; this.CardId = cardId; this.CollectionId = collectionId; }
private GraphicsInfo BuildGraphicsInfo(ZebraCardImageI zebraCardImage, CardSide side, PrintType printType) { return(new GraphicsInfo { GraphicData = zebraCardImage ?? null, GraphicType = zebraCardImage != null ? GraphicType.BMP : GraphicType.NA, Side = side, PrintType = printType }); }
public CCard(CCard cardInfo) { HospitalizationId = cardInfo.HospitalizationId; VisitId = cardInfo.VisitId; CurrentCardType = cardInfo.CurrentCardType; CurrentSideOfCard = cardInfo.CurrentSideOfCard; Picture = new Bitmap(cardInfo.Picture); NotInDatabase = cardInfo.NotInDatabase; }
/// <summary> /// Получить карту обследования по переданному id госпитализации, /// id консультации, типа карты и стороны /// </summary> /// <param name="hospitalizationId">id госпитализации</param> /// <param name="visitId">id консультации</param> /// <param name="cardSide">Сторона карты</param> /// <param name="cardType">Тип карты</param> /// <returns></returns> public CCard GetByGeneralData( int hospitalizationId, int visitId, CardSide cardSide, CardType cardType) { int n = GetIndexFromList(hospitalizationId, visitId, cardSide, cardType); if (n == _cardList.Count) { var newCardInfo = new CCard { HospitalizationId = hospitalizationId, VisitId = visitId, CurrentSideOfCard = cardSide, CurrentCardType = cardType, NotInDatabase = true }; Bitmap packedPicture; switch (cardType) { case CardType.HandCutaneousNerves: packedPicture = Properties.Resources.CardHandCutaneousNerves; break; case CardType.HandDermatome: packedPicture = Properties.Resources.CardHandDermatome; break; case CardType.LegCutaneousNerves: packedPicture = Properties.Resources.CardLegCutaneousNerves; break; case CardType.LegDermatome: packedPicture = Properties.Resources.CardLegDermatome; break; case CardType.PamplegiaCard: packedPicture = Properties.Resources.CardPamplegiaCard; break; case CardType.SacriplexCard: packedPicture = Properties.Resources.CardSacriplexCard; break; default: throw new ArgumentException(cardType + " неизвестный тип карты обследования"); } newCardInfo.Picture = new Bitmap(packedPicture); _cardList.Add(newCardInfo); return(new CCard(newCardInfo)); } return(new CCard(_cardList[n])); }
public async Task <NextCardToTest> GetNextFlashcard() { CardSide cardSideToTest = this.GetCardSideToTest(); var orderByUnseenTime = await this.impressionStorageService.OrderByLongestUnseen(this.Cards.SelectMany(x => x.Value)); var orderByImpressionLength = await this.impressionStorageService.OrderByLongestImpression(this.Cards.SelectMany(x => x.Value), 3, cardSideToTest); var orderByUnsuccess = await this.impressionStorageService.OrderByMostUnsuccessful(this.Cards.SelectMany(x => x.Value), 5, cardSideToTest); var rankings = this.Cards.SelectMany(x => x.Value).Select(card => { int unseenOrder = orderByUnseenTime.IndexOf(card); int impressionLengthOrder = orderByImpressionLength.IndexOf(card); int unsuccessOrder = orderByUnsuccess.IndexOf(card); int rank; if (this.LastCardId == card) { // Must not present the same card twice. rank = System.Int32.MaxValue; } else { rank = unsuccessOrder * 55 + impressionLengthOrder * 10 + unseenOrder * 20 + random.Next(this.Cards.Count - 1) * 15; } return(new { CardId = card, Rank = rank }); }) .OrderBy(x => x.Rank) .ToList(); if (rankings.Count == 0) { throw new InvalidOperationException(); } var cardId = rankings.First().CardId; this.LastCardId = cardId; return(new NextCardToTest(cardId, cardSideToTest, this.Cards.First(x => x.Value.Any(y => y == cardId)).Key)); }
public CObstetricParalysisCard(CObstetricParalysisCard obstetricParalysisCard) { HospitalizationId = obstetricParalysisCard.HospitalizationId; VisitId = obstetricParalysisCard.VisitId; SideOfCard = obstetricParalysisCard.SideOfCard; GlobalAbductionPicturesSelection = CConvertEngine.CopyArray(obstetricParalysisCard.GlobalAbductionPicturesSelection); GlobalExternalRotationPicturesSelection = CConvertEngine.CopyArray(obstetricParalysisCard.GlobalExternalRotationPicturesSelection); HandToNeckPicturesSelection = CConvertEngine.CopyArray(obstetricParalysisCard.HandToNeckPicturesSelection); HandToSpinePicturesSelection = CConvertEngine.CopyArray(obstetricParalysisCard.HandToSpinePicturesSelection); HandToMouthPicturesSelection = CConvertEngine.CopyArray(obstetricParalysisCard.HandToMouthPicturesSelection); ComboBoxes = CConvertEngine.CopyArray(obstetricParalysisCard.ComboBoxes); NotInDatabase = obstetricParalysisCard.NotInDatabase; }
private GraphicsInfo BuildGraphicsInfo(ZebraCardImageI zebraCardImage, CardSide side, PrintType printType) { GraphicsInfo graphicsInfo = new GraphicsInfo { Side = side, PrintType = printType, GraphicType = zebraCardImage != null ? GraphicType.BMP : GraphicType.NA }; if (zebraCardImage != null) { graphicsInfo.GraphicData = zebraCardImage; } return(graphicsInfo); }
private static GraphicsInfo AddImage(CardSide side, PrintType printType, int xOffset, int yOffset, int fillColor, ZebraCardImageI zebraCardImage) { return(new GraphicsInfo { Side = side, PrintType = printType, GraphicType = zebraCardImage != null ? GraphicType.BMP : GraphicType.NA, XOffset = xOffset, YOffset = yOffset, FillColor = fillColor, Opacity = 0, Overprint = false, GraphicData = zebraCardImage ?? null }); }
/// <summary> /// Получить индекс карты обследования в списке для указанного id госпитализации, /// id консультации, типа карты и стороны /// </summary> /// <param name="hospitalizationId">id госпитализации</param> /// <param name="visitId">id консультации</param> /// <param name="cardSide">Сторона карты</param> /// <param name="cardType">Тип карты</param> /// <returns></returns> private int GetIndexFromList( int hospitalizationId, int visitId, CardSide cardSide, CardType cardType) { int n = 0; while (n < _cardList.Count && (_cardList[n].HospitalizationId != hospitalizationId || _cardList[n].VisitId != visitId || _cardList[n].CurrentSideOfCard != cardSide || _cardList[n].CurrentCardType != cardType)) { n++; } return(n); }
public CBrachialPlexusCard(int hospitalizationId, int visitId) { HospitalizationId = hospitalizationId; VisitId = visitId; SideOfCard = CardSide.Left; VascularStatus = "N"; Diaphragm = "N"; HornersSyndrome = "нет"; TinelsSymptom = "N"; IsMyelographyEnabled = false; Myelography = "N"; MyelographyType = "КТ"; IsEMNGEnabled = false; EMNG = "N"; MyelographyDate = DateTime.Now; EMNGDate = DateTime.Now; }
public Card(CardRank rank, CardSuit suit) { if (rank < CardRank.Two || rank > CardRank.Ace) { throw new ArgumentNullException("Карта не может быть меньшь 2 и больше Туза"); } _rank = rank; //Релизовать через оператор сравнения с перечислением CardSuit if (!"♠♣♦♥".Contains(dicCardSuit[(CardSuit)suit])) { throw new ArgumentNullException("Данная масть не существует"); } _suit = suit; _side = CardSide.Back; _name = dicCardRank[rank] + dicCardSuit[suit]; }
public CBrachialPlexusCard(CBrachialPlexusCard brachialPlexusCardInfo) { HospitalizationId = brachialPlexusCardInfo.HospitalizationId; VisitId = brachialPlexusCardInfo.VisitId; SideOfCard = brachialPlexusCardInfo.SideOfCard; Picture = new Bitmap(brachialPlexusCardInfo.Picture); Diaphragm = brachialPlexusCardInfo.Diaphragm; EMNG = brachialPlexusCardInfo.EMNG; EMNGDate = CConvertEngine.CopyDateTime(brachialPlexusCardInfo.EMNGDate); HornersSyndrome = brachialPlexusCardInfo.HornersSyndrome; IsEMNGEnabled = brachialPlexusCardInfo.IsEMNGEnabled; IsMyelographyEnabled = brachialPlexusCardInfo.IsMyelographyEnabled; Myelography = brachialPlexusCardInfo.Myelography; MyelographyDate = CConvertEngine.CopyDateTime(brachialPlexusCardInfo.MyelographyDate); MyelographyType = brachialPlexusCardInfo.MyelographyType; TinelsSymptom = brachialPlexusCardInfo.TinelsSymptom; VascularStatus = brachialPlexusCardInfo.VascularStatus; NotInDatabase = brachialPlexusCardInfo.NotInDatabase; }
private CardSide GetCardSideToTest() { CardSide cardSideToTest = CardSide.Front; switch (this.sideToTest) { case CardSideToTest.Both: cardSideToTest = this.random.Next(100) > 50 ? CardSide.Back : CardSide.Front; break; case CardSideToTest.Front: cardSideToTest = CardSide.Front; break; case CardSideToTest.Back: cardSideToTest = CardSide.Back; break; } return(cardSideToTest); }
public Quaternion GetNextCardRotation(CardSide side) { GameObject tmpObj = new GameObject("tmpObj"); if(IsPerspective) { if(side == CardSide.Front) tmpObj.transform.up = transform.forward; else tmpObj.transform.LookAt(tmpObj.transform.position + transform.up, transform.forward); } else { if(side == CardSide.Front) tmpObj.transform.up = GameGui.Instance.GameCamera.transform.up; else tmpObj.transform.up = -GameGui.Instance.GameCamera.transform.up; } Quaternion result = tmpObj.transform.rotation; Destroy(tmpObj); return result; }
public async Task <List <Guid> > OrderByMostUnsuccessful( IEnumerable <Guid> cardIds, int historyDepth, CardSide side) { using (var context = new MainDatabaseContext()) { var accountedForImpressions = await context.CardImpressions .Where(x => cardIds.Any(y => y == x.CardId)) .Where(x => x.TestedSide == side) .GroupBy(x => x.CardId) .ToDictionaryAsync( x => x.Key, x => x.OrderByDescending(y => y.Date).Take(historyDepth)); var impressionsOrderedBySuccessAverage = accountedForImpressions .OrderBy(x => x.Value.Select(y => y.GuessedCorrectly ? 10 : 0) .Average()) .Select(x => x.Key); var newCards = cardIds.Except(impressionsOrderedBySuccessAverage); return(newCards.Union(impressionsOrderedBySuccessAverage).ToList()); } }
public uint GetSide(CardSide side) { return((uint)typeof(Card).GetRuntimeProperty(side.ToString()).GetValue(this)); }
public void ShowSide(CardSide side) { spriteRenderer.sprite = side == CardSide.Front ? sprite : GameManager.Instance.cardBack; CurrentlyShowingSide = side; }
public void FlipSide() { _side = CardSide.Face; }
private List <GraphicsInfo> CreateGraphicsInfo(ZebraGraphics graphics, Dictionary <PrintType, string> imageInfo, CardSide side) { List <GraphicsInfo> graphicsInfoList = new List <GraphicsInfo>(); foreach (PrintType type in imageInfo.Keys) { graphics.Initialize(0, 0, OrientationType.Landscape, type, -1); if (type == PrintType.Overlay && imageInfo[type] == null) { GraphicsInfo graphicsInfo = new GraphicsInfo { Side = side, PrintType = type, GraphicType = GraphicType.NA }; graphicsInfoList.Add(graphicsInfo); } else { byte[] imageData = File.ReadAllBytes(imageInfo[type]); graphics.DrawImage(imageData, 0, 0, 0, 0, RotationType.RotateNoneFlipNone); graphicsInfoList.Add(BuildGraphicsInfo(graphics.CreateImage(), side, type)); } graphics.Clear(); } return(graphicsInfoList); }