string GetTextToothPrepare(List <GroupOfTooth> groups)
        {
            string            text        = "";
            List <text_block> text_blocks = new List <text_block>();

            foreach (GroupOfTooth group in groups)
            {
                text_block tb = new text_block();
                if (group.ToothsInGroup.Count > 1)
                {
                    tb.analogObjects = group.GetToothsText(true);
                }
                tb.textOfBlock = group.ToothsInGroup[0].Treat.prepare
            }
            return(text);
        }
        string GetTextConditionsTreatment(List <GroupOfTooth> groups)
        {
            string text = "";


            List <text_block> text_blocks = new List <text_block>();

            foreach (GroupOfTooth group in groups)
            {
                text_block tb = new text_block();
                if (groups.Count > 1)
                {
                    foreach (Tooth tooth in group.ToothsInGroup)
                    {
                        tb.analogObjectsList.Add(tooth);
                    }
                }
            }

            return(text);
        }
Exemple #3
0
        string GetTextFromTooths(List <GroupOfTooth> groups)
        {
            string            text        = "";
            List <text_block> text_blocks = new List <text_block>();

            foreach (GroupOfTooth group in groups)
            {
                text_block curBlock = new text_block();

                curBlock.analogObjects = group.GetToothsText(true);
                curBlock.analogObjectsList.AddRange(group.ToothsInGroup.ToArray());

                curBlock.allText = GetFacesObjective(group.ToothsInGroup[0]) + GetToothObjective(group.ToothsInGroup[0]);
                text_blocks.Add(curBlock);
            }

            foreach (text_block tb in text_blocks)
            {
                text += tb.analogObjects + " - " + tb.allText;
            }

            return(text);
        }
Exemple #4
0
        string GetTextFromTooths(List <GroupOfTooth> groupsOfPretreat, List <GroupOfTooth> groupsOfDiag)
        {
            string text           = "";
            string textPretreat   = "";
            string textHealedEasy = "";
            string textHealedHard = "";
            string textNotHealed  = "";

            foreach (GroupOfTooth group in groupsOfPretreat) //сборка блоков текста лечен или не лечен
            {
                text_block curBlock = new text_block();

                foreach (Tooth tooth in group.ToothsInGroup)
                {
                    curBlock.analogObjects += tooth.number + ", ";
                }
                curBlock.analogObjects  = curBlock.analogObjects.Remove(curBlock.analogObjects.Length - 2);
                curBlock.analogObjects += " зуб";
                string key = "anamnes_pretreat_" + group.pretreat;
                curBlock.textOfBlock = KlisheParams.GetBlock(key);
                if (group.ToothsInGroup.Count > 1)
                {
                    curBlock.multi          = true;
                    curBlock.analogObjects += "ы";
                    curBlock.textOfBlock    = curBlock.textOfBlock.Replace("лечен", "лечены");
                }
                curBlock.allText = curBlock.analogObjects + curBlock.textOfBlock;
                switch (group.pretreat)
                {
                case 0: textNotHealed = curBlock.allText;
                    break;

                case 1: textHealedEasy = curBlock.allText;
                    break;

                case 2: textHealedHard = curBlock.allText;
                    break;
                }
                textPretreat = textNotHealed + textHealedEasy + textHealedHard;
            }//end of foreach state


            //List<byte> tooths = new List<byte>();



            string            textTrouble   = "";
            string            textOfGroup   = "";
            string            toothsNumbers = "";
            List <text_block> text_blocks   = new List <text_block>();

            foreach (GroupOfTooth group in groupsOfDiag)//создание блоков текста сколько и как беспокоит
            {
                textOfGroup = KlisheParams.GetBlock("anamnes_trouble_" + group.MainDs.identityString);
                if (textOfGroup == "ERROR")
                {
                    textOfGroup = KlisheParams.GetBlock("anamnes_trouble_" + group.MainDs.layer);
                }


                toothsNumbers = group.GetToothsText(false);
                bool alreadyHaveOne = false;
                foreach (text_block block in text_blocks)
                {
                    if (block.textOfBlock == textOfGroup)
                    {
                        block.analogObjects = toothsNumbers + ", " + block.analogObjects;
                        block.multi         = true;
                        alreadyHaveOne      = true;
                        break;
                    }
                }

                if (!alreadyHaveOne)
                {
                    text_block newBlock = new text_block();
                    newBlock.textOfBlock   = textOfGroup;
                    newBlock.analogObjects = toothsNumbers;
                    try
                    {
                        newBlock.changerText = KlisheParams.GetBlock("anamnes_trouble_multi_" + group.MainDs.identityString);
                    }
                    catch
                    {
                    }
                    try
                    {
                        if (newBlock.changerText == " _ " || newBlock.changerText == "")
                        {
                            newBlock.changerText = KlisheParams.GetBlock("anamnes_trouble_multi_" + group.MainDs.layer);
                        }
                    }
                    catch
                    {
                    }
                    if (group.ToothsInGroup.Count > 1)
                    {
                        newBlock.multi = true;
                    }


                    text_blocks.Add(newBlock);
                }
            }//end of foreach for groups


            foreach (text_block block in text_blocks)// теперь все блоки собираем вместе
            {
                if (text_blocks.Count > 1)
                {
                    block.allText += block.analogObjects;

                    if (block.multi)
                    {
                        block.allText += " зубы - ";
                    }
                    else
                    {
                        block.allText += " зуб - ";
                    }
                }
                block.allText += block.textOfBlock;
                if (block.multi)
                {
                    if (!ClisheTextManipulations.MultiplyText(block.allText, block.changerText, out block.allText))
                    {
                        block.allText = block.allText.Replace("оит", "оят");
                    }
                }
                textTrouble += block.allText;
                if (text_blocks.IndexOf(block) + 1 == text_blocks.Count)
                {
                    textTrouble += ". ";
                }
                else
                {
                    textTrouble += ", ";
                }
            }//end of foreach for blocks

            text = textPretreat + textTrouble;
            return(text);
        } //end of GetText method
        string GetTextFromGroups(List <GroupOfTooth> groups)
        {
            string            text          = "";
            string            textOfGroup   = "";
            string            toothsNumbers = "";
            List <text_block> text_blocks   = new List <text_block>();

            foreach (GroupOfTooth group in groups)     //создание блоков текста сколько и как беспокоит
            {
                textOfGroup = KlisheParams.GetBlock("jaloby_" + group.MainCondition.Name + "_" + group.MainCondition.Depth.ToString());
                if (textOfGroup == "ERROR")
                {
                    textOfGroup = KlisheParams.GetBlock("jaloby_" + group.MainCondition.Name);
                }

                toothsNumbers = group.GetToothsText(false);
                bool alreadyHaveOne = false;
                foreach (text_block block in text_blocks)
                {
                    if (block.textOfBlock == textOfGroup)
                    {
                        block.analogObjects = toothsNumbers + ", " + block.analogObjects;
                        block.multi         = true;
                        alreadyHaveOne      = true;
                        break;
                    }
                }

                if (!alreadyHaveOne)
                {
                    text_block newBlock = new text_block();
                    newBlock.textOfBlock   = textOfGroup;
                    newBlock.analogObjects = toothsNumbers;

                    if (group.ToothsInGroup.Count > 1)
                    {
                        newBlock.multi = true;
                    }

                    text_blocks.Add(newBlock);
                }
            }//end of foreach for groups

            foreach (text_block tblock in text_blocks)     // теперь все блоки собираем вместе
            {
                tblock.allText += tblock.textOfBlock;


                if (tblock.multi)
                {
                    tblock.allText += KlisheParams.GetBlock("jaloby_zubMany");
                }
                else
                {
                    tblock.allText += KlisheParams.GetBlock("jaloby_zubOne");
                }
                tblock.allText += tblock.analogObjects + ".";



                text += tblock.allText;
                if (text_blocks.IndexOf(tblock) + 1 != text_blocks.Count)
                {
                    text += "\n";
                }
            }     //end of foreach for blocks

            return(text);



            // string text = "Жалобы: ";
            // string textOfGroup = "";
            // string numbersOfTeeth = "";


            //int first = 0;
            //List<int> analogIndicies = new List<int>();
            //     foreach (GroupOfTooth group in groups)
            // {



            //                         //if (textOfGroup == "")
            //                         //{
            //                         //                textOfGroup = blocks.GetBlock("jaloby_" + group.MainDs.ToString());
            //                         //                numbersOfTeeth = group.GetToothsText(false);
            //                         //                if (group.ToothsInGroup.Count == 1)
            //                         //                {
            //                         //                    text += textOfGroup + blocks.GetBlock("jaloby_zubOne") + numbersOfTeeth + ". \n";
            //                         //                }
            //                         //                else
            //                         //                {
            //                         //                    text += textOfGroup + blocks.GetBlock("jaloby_zubMany") + numbersOfTeeth + ". \n";


            //                         //                }
            //                         //}

            //                         //else
            //     if (!analogIndicies.Contains(first))
            //     {
            //         textOfGroup = blocks.GetBlock("jaloby_" + group.MainDs.ToString());
            //         numbersOfTeeth = group.GetToothsText(false);
            //         if (group.ToothsInGroup.Count == 1)
            //         {
            //             text += textOfGroup + blocks.GetBlock("jaloby_zubOne") + numbersOfTeeth + ". \n";
            //         }
            //         else
            //         {
            //             text += textOfGroup + blocks.GetBlock("jaloby_zubMany") + numbersOfTeeth + ". \n";


            //         }
            //     }
            //      if (textOfGroup != "null"&&!analogIndicies.Contains(first))
            //         {
            //             int second = 0;

            //             foreach (GroupOfTooth insideGroup in groups)
            //             {
            //                 if (second > first && textOfGroup == blocks.GetBlock("jaloby_" + insideGroup.MainDs.ToString()))
            //                 {

            //                     text = text.Replace("зуба " + numbersOfTeeth, "зубов " + insideGroup.GetToothsText(false) + ", " + numbersOfTeeth);
            //                     text = text.Replace("зубов " + numbersOfTeeth, "зубов " + insideGroup.GetToothsText(false) + ", " + numbersOfTeeth);
            //                     numbersOfTeeth = insideGroup.GetToothsText(false);
            //                     analogIndicies.Add(second);

            //                 }
            //                 second++;

            //             }
            //             textOfGroup = "null";
            //         }



            //          first++;
            //     }


            // return text;
        }
Exemple #6
0
        string GetFacesObjective(Tooth tooth)
        {
            string            text        = "";
            List <text_block> text_blocks = new List <text_block>();
            bool haveOne = false;



            foreach (Face face in tooth.GetAllFaces())
            {
                foreach (Condition cond in face.GetConditionsOfFace())
                {
                    foreach (text_block tb in  text_blocks)
                    {
                        if (((Condition)tb.comparer).Name == cond.Name)
                        {
                            haveOne = true;
                            bool alreadyConnected = false;
                            foreach (Face fc in tb.analogObjectsList)//проверяем нет ли среди поверхностей с таким же диагнозом, таких с которым эта поверхность уже соединена
                            {
                                if (face.GetConnections().Contains(fc))
                                {
                                    if (((Condition)tb.comparer).Depth < cond.Depth)
                                    {
                                        tb.comparer = cond;
                                    }
                                    alreadyConnected = true;
                                    break;
                                }
                            }
                            if (!alreadyConnected)//если присоединенных поверхностей нет тогда она будет описываться отдельно.
                            {
                                tb.analogObjectsList.Add(face);
                                tb.multi = true;
                            }
                            break;
                        }
                    }

                    if (!haveOne)
                    {
                        text_block tb = new text_block();
                        tb.analogObjectsList.Add(face);
                        tb.layer       = cond.layerForDiscription;
                        tb.comparer    = cond;
                        tb.textOfBlock = cond.rvgDescription;
                        tb.changerText = cond.multiDiscription;
                        text_blocks.Add(tb);
                    }
                    haveOne = false;
                }
            }

            text_blocks = text_blocks.OrderBy(t => t.layer).ToList();//упорядочиваем список блоков текста по слоям (первые слои наиболее важные - кариес и тому подобное, потом уже идет описание остальных слоев)

            foreach (text_block tb in text_blocks)
            {
                bool edge     = false;
                bool onlyEdge = false;

                foreach (Face fc in tb.analogObjectsList)
                {
                    if (fc.faceName != Face.faceSide.edge)                                                        //если это не режущий край тогда
                    {
                        tb.allText += "на " + KlisheParams.GetBlock("face_name_" + fc.faceName.ToString()) + "о"; //записываем в текст имя поверхности


                        if (fc.GetConnections().Length > 0)//если есть присоединенные поверхности тогда добавляем их
                        {
                            foreach (Face connectedFace in fc.GetConnections())
                            {
                                if (connectedFace.faceName != Face.faceSide.edge)
                                {
                                    tb.allText += "-" + KlisheParams.GetBlock("face_name_" + connectedFace.faceName.ToString()) + "о";
                                }
                                else
                                {
                                    edge = true;
                                }
                            }
                        }
                        tb.allText += "й и ";
                    }
                    //
                    //            if (tb.allText == "") tb.allText += "на " + KlisheParams.GetBlock("face_name_" + fc.faceName.ToString()) + "о";
                    //            else tb.allText += "-" + KlisheParams.GetBlock("face_name_" + fc.faceName.ToString()) + "о";
                    //        }
                    else
                    {
                        if (tb.allText == "" && tb.analogObjectsList.Count == 1)
                        {
                            onlyEdge    = true;
                            tb.allText += "по " + KlisheParams.GetBlock("face_name_" + fc.faceName.ToString() + "_onthe") + " ";
                        }
                        else
                        {
                            edge = true;
                        }
                    }
                }
                if (!onlyEdge)
                {
                    tb.allText = tb.allText.Remove(tb.allText.Length - 2) + " поверхности ";
                }
                if (edge)
                {
                    tb.allText += " с выходом на режущий край ";
                }
                if (tb.multi)
                {
                    tb.allText += tb.MultiplyText();
                }
                else
                {
                    tb.allText += tb.textOfBlock;
                }

                tb.ToUpperFirstChar(text);

                text += tb.allText;
            }//end of foreach text_block



            return(text);
        }