CHANGELOG
Versioning scheme
Version - (3,10,5) (05/06/2026)
In the `chikitsha' module, inside the form for entering new symptoms for the patient, the `symptom check'
function has been changed. Previously it had an option to go in for a fuzzy check. Now, by default, the
check returns 15 existing entries using cosine distances. The gender of the patient is read in from the
database. The chapter is set to `unknown' by default.
Version - (3,9,5) (05/06/2026)
Altered the database for trainer-based vector embedding. Now there is a new link for
cosine-distance-based vector searching for existing symptom entries
against a given symptom string. This also opens the way for future natural-language-based operations.
Version - (2,8,4) (28/05/2026)
Hardened the entire system by removing embedded passwords from the code. Also, a
new `chapter' field has been added to the symptom table and corresponding modifications made to the
forms. A local llm has been used to help
map the existing symptoms to their chapters.
Version - (2,7,4) (30/03/2025)
Added another button to the remedy suggestion system so that the user
can choose between the old version and the new doctors' version. The
doctors' version was running very slow and we saw that the bottle-neck
was in PostgreSQL running many queries for the final matrix table. Since
serverless sqlite3 appears to be much faster (at least 30 times),
we now
create a temporary sqlite3 database in memory (:memory:) and create two
temporary tables to hold the necessary data. Huge speedup observed,
with almost no overhead.
Version - (2,6,4) (28/07/2024)
Changed algorithm and code for the Doctors' use. Below the table with
suggested remedies now appear two new tables. One of them lists the
details of the hits from CLIPS including the specific defrules which
have been fired. The second table is a matrix-like display of
symptoms along the rows and remedies along the columns (ordered by
total score) with the individual scores displayed at each intersection
between a symptom and a remedy. This is done by intercepting the
activations in the CLIPS agenda before executing the actual `run'
command. A new SQL table `defrule_remedy_map' has been introduced
along with code in the administration section to generate its
entries.
There is now a checkbox to decide whether the (optional) search feature
for the symptoms during the process of entering new patient symptoms
will be simple wild-card or fuzzy.
Many new repertory entries have been made in the meanwhile.
Version - (1,5,3) (03/07/2023)
Implemented a fuzzy match of the user's symptom input string with
`defanged strings' from the `clips_fuzzy_string_check' table. The CLIPS lhs
entries from the `symptom' table are `unfolded' by splitting on `or'
constructs and then all the combinations across the `|' symbols are
taken to create entries for the `clips_fuzzy_string_check' table. A new
admin. program `clips_fuzzy_symptom_match' has been written to create
these strings. `chikitsha_enter.C' and `chikitsha_enter_new.C' have been
modified accordingly.
Version - (1,4,3) (28/01/2023)
Added levenshtein distance analysis on top of the trigram stage. We take
10 best trigram matches and then take the lowest levenshtein distance
on that set.
Version - (1,3,3) (25/01/2023)
Introduced fuzzy search on the patient-entered symptom string, with
trigram-based match with a `words' table. Created the `words' table by
parsing the clips_lhs strings of symptom with a Haskell program
`create_words_table'. `chikitsha_enter_new' (C++) now has a Haskell
subroutine `fuzzyfy_hs' which is called via FFI to check the patient-entered
symptom string.
Version - (0,2,2) (20/12/2022)
Anirban Ghosh made substantial additions to the database.
Version - (0,2,1) (13/11/2022)
Fixed silly mistake in search codes for aggravation and amelioration
searches and
also used `LOWER' to make the search case-agnostic for aggravations,
ameliorations and symptoms.
Version - (0,1,1) (5/11/2022)
Fixed some issues with internal tokens in the chikitsha module - log-out
was not being handled properly.
Version - (0,0,1) (1/11/2022)
Changed over to this version after adding some documentation to the
sneak-peek.