Прорыв к МС27

В июле-сентябре залез в самую сердцевину самого сложного блока программы, чтобы найти ошибку, которая порождала при исполнении процедуры Поиск суммирование подрубрик 4-го и 5-го порядков.  И строка (т.е. описательная часть симптома) раздувалась до неприличия и даже меня доводила до паники первое время. (Но, кажется, другие пользователи этого и не замечали.)  А сущностной являлась последняя часть после запятой.

Суммирование последних подрубрик

Так как происходит это не всегда, то и сразу замечено не было. Я знал об этой особенности примерно с 2004 года, и несколько раз пытался разобраться, но за 1 – 2 вечера ее было не взять, а больше мне жизнь не предоставляла. И вот, наконец, предоставила. Ну, дело же надо доделать! Вот я и засел. И ценой нечеловеческих усилий разобрался в чем дело и исправил. Попутно я нашел еще одну особенность. Оказывается, в поиске, строки из последней рубрики раздела выводились с искаженным названием. Например, вместо ЯЗВЫ – ЭКЗОСТОЗЫ. Вот ищешь “черные язвы” по поисковому запросу “черн”. И видишь: ЭКЗОСТОЗЫ, черное основание. Удивишься, конечно, вроде должен быть такой симптом, язвы то, черные, встречаются сплошь и рядом,  а здесь какие-то “экзостозы”. Представить, конечно, трудно, но мало ли, до какого экстремизма доходили Пионеры Гомеопатии в своих испытаниях. Шучу.

Вот она, странно сформированная рубрика Экзостозы

3 световых дня (а в августе они еще  достаточно длинные) понадобились, чтобы локализовать и исправить эту ошибку. Еще я попутно наладил в функции поиска точную работу с запросом в виде названия препарата. Теперь, если вводишь “ARS” то и на выходе будет именно “ARS”, а не “ARS-I” или “SARS” или вообще “cars in a wagon or on the”. (В последнем случае есть маленькая хитрость, чтобы избавится от этой неспецифики. Достаточно ввести пробел перед препаратом в текстовом оконце (textbox). И тогда из всех этих “каров” останутся только те, которые в списке препаратов имеют Мышьячок). Тоже долго пришлось повозиться. Хотя это мелочи. Функция поиска изначально не предназначалась для работы с препаратами, для этого была функция Патогенез, которая как раз работала корректно. Но я всегда мечтал сделать так, чтобы можно было найти рубрики, в которых, к примеру, есть и Сульфур и Мышьяк и Ликоподиум, но при этом нет Нукс вомики. Преисполненный величия высокопрофессиональный прагматик-гомеопат не поймет, для чего это надо, но кто поймет, тому будет приятно.

Пришлось распечать весь листинг фунции Поиск, иначе умом его не охватишь…

И вот уже когда все было готово, дай, думаю, посмотрю, нет ли того же самого в функции “Патогенез”. Я давно ее не задействовал, все равно она не заменяет благословенную Materia Medica. Так, иной раз, под вдохновение можно что-то уточнить. Причем скорее подтвердить идею, чем опровергнуть. Ведь если искомого симптома нет в патогенезе некоторого препарата, воссозданном программой, это не значит, что он невозможен. И вот, оказалось, что последняя рубрика раздела тоже не видна или замаскирована. Я уже не стал даже искать там ошибку, а понял, что мне проще будет объединить функции патогенеза и поиска, пустив единственный запрос функции патогенеза по универсальному тракту функции Поиск, уже к этому моменту добротно отлаженной. Там нужно было только найти места, куда вставить короткие блоки кода.  Конечно, сохранена возможность отдельно вывести симптомы высшей степени значимости или средней, или и те и другие вместе или вообще все подряд (речь идет о кодировании шрифтом препаратов разной степени значимости в симптоме). И раскраска шрифтами (полужирный, курсив, простой) тоже была сделана. На все это понадобился один световой день 16.10.2016. Еще и “Пиратов Карибского моря” удавалось большими кусками смотреть.

А все равно какое-то беспокойство. Ну, думаю, надо ждать и просто работать на приемах с программой, что-то вылезет. Вяло обдумываю планы увеличения функционала процедуры Протокол, чтобы столбцы из рабочего поля сами вставлялись в файл пациента. Хотя это и сейчас вроде не трудно: скопировал, переключился, вставил… Но все равно, если знаешь, что можно проще, одним нажатием кнопки, уже нужно совершать над собой усилие, чтобы делать это всякий раз. А рассудок психастеника склонен все усложнять, вот надо бы добавить возможность вставлять новые листы и предоставлять врачу выбор в какой лист, какой блок симптомов вставить, и сделать в пользовательской форме текстовое окно, в которое вставлять комментарий к блоку симптомов… И все это структурно не очень сложно, но есть множество вариантов реализации. И они конкурируют между собой при обдумывании и блокируют работу. И для некоторых вещей придется раскапывать синтаксические конструкции. Или в уже написанном когда-то давно коде, или в книгах, или на форумах… А с этим так: бывает быстро найдется, а бывает неделями ищешь. Решил все же делать, причем в наиболее простом варианте: с текстовым окном и переносом в лист Реперторизация файла пациента. И все. А Листов в файле пациента может быть сколько угодно. Для этого лист Реперторизация можно переименовывать. Например, для каждого посещения, когда используется реперториум и добавляются новые симптомы, присваивать этому листу дату посещения или отдельно в один лист психические симптомы, в другой лист – локальные и т.д. Это целиком на усмотрение пользователя. А потом вставлять новый лист, которому присваивать имя  Реперторизация. А дальше покажет практика.

И вот оно вылезает. Оказывается, лист Выбор, который, в сущности, играет роль браузера, своего рода Проводника, не корректно формирует 1 столбец, там где или количество подрубрик, или препаратов в подрубрике или указание, что своего списка препаратов нет, а есть только подрубрики (SubRub). Кажется, они сдвинуты по фазе на 8 строк. И хотя в этот столбец может никто и не смотрит, все равно непорядок, надо устранять. Как это могло получиться и остаться незамеченным непонятно: уже без малого 20 лет этим функциям, которые обслуживают вывод разделов, рубрик, подрубрик.

До…

3 часа я сидел над этим 23 октября и, наконец, понял в чем дело. Никаких ошибок кода там не было. Просто в определенном месте одного из скрытых листов файла Rwk.. уже в процессе моего летне-осеннего натиска на программу, удалился блок данных. И в соответствующем столбце произошел сдвиг данных, относительно соседних. У пользователей этого изъяна не было, т.к. эта редакция не попадала в интернет. Сказать, что я ощутил облегчение – ничего не сказать.

После… Найди 7 отличий. (может больше, я не считал)

Всякий раз, когда в неожиданном месте вылезала новая проблема, это было как издевка. Я, в частности, поймал себя на мысли, что работа над задачей и решение задачи уже не доставляют мне былого удовольствия. Реперториум не является делом моей жизни. Например, дело жизни столяра – делать стулья, но у него есть хорошие инструменты, какой-нибудь доведенный до совершенства верстак, рубанок и стамеска. А самое главное навык. Он просто прикасается к дереву, и дерево послушно меняет свою форму. Так и мое дело это все-таки лечение и просвещение людей, а не программирование и дизайн программ. А Мир Симилия – просто доведенный до совершенства инструмент, который я делал прежде всего для себя, потому что тех неочевидных функций, которые мне казались необходимыми, в готовых (Radar, Радуга и т.д) не было. А если бы и были, я не мог бы позволить себе их использовать безоглядно, не зная, как они сделаны. С таким же успехом можно было бы встроить в программу генератор случайного выбора препарата. (Подозреваю, что он был бы весьма эффективен, по крайней мере, когда препарат не определяется. Кстати, его нетрудно было бы сделать. Да шутка!, чего все так напряглись) То, что уже внесено в программу намного превосходит все мыслимые и немыслимые запросы пользователя. Я и сам довольно редко прибегаю ко многим функциям. Старость наступает стремительно, избытка сил и времени, которые можно направить на дальнейшее совершенствование “Мир Симилия”  уже все меньше. Я принесу больше пользы человечеству, если буду читать ММ и литературу по философии познания (Phihkal, например, или Толкиена) и делиться впечатлениями в виде постов или просто бесед с друзьями и пациентами. Я здесь говорю не о том, чтобы у пациентов отнять время, а о том, чем занять время, которое при прочих статьях бюджета времени тратится на программирование.

Соответственно я осознал, насколько дорогой ценой обернулся в моей жизни реперториум и по затратам времени, которое могло быть потрачено лучше для пациентов,  для себя,  для семьи, и по личной социализации. А тут еще и увидел, что бесплатной программой приторговывают какие-то скоты. Поэтому она будет распространяться очень избирательно, среди людей, гомеопатическая идеология которых для меня приемлема. Прежде всего, это не должны быть фельдшеризм (фанатичная вера в математическую точность назначения), жестокость, глумление и ксенофобия, насаждаемые сейчас повсеместно под ярлыком “профессиональная гомеопатия”.