Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

dmeoli/PESAD

Repository files navigation

PESAD 🧠

CI Telegram Technical report License: MIT

PESAD (Prolog Expert System for Anxiety, Obsessive-Compulsive and Trauma-Related Disorders) is a rule-based expert system for diagnosing, under uncertainty, the disorders of the DSM-5-TR Anxiety, Obsessive-Compulsive and Related, and Trauma- and Stressor-Related chapters.

This code was developed during the Artificial Intelligence Fundamentals course @ Department of Computer Science @ University of Pisa.

The American Psychiatric Association knowledge base is built from the diagnostic criteria of the DSM-5-TR Diagnostic and Statistical Manual of Mental Disorders.

Prerequisites

To run the expert system you have to download SWI-Prolog for your operating system.

Running the expert system

To run the expert system you just type into the terminal:

$ swipl prolog/start.pl

At start-up the system asks you to choose the interface language (English or Italian) and the uncertainty method (certainty factors / minimum t-norm, the default, or fuzzy / product t-norm). Only the questions, diagnoses and explanations the user reads are shown in the selected language, while the commands are always in English: investigation, control, facts, help, clean, quit.

Testing

A small regression suite of clinical vignettes (one per disorder family) runs the whole inference under both uncertainty methods and checks the top-ranked diagnosis:

$ swipl prolog/clinical_tests.pl

Telegram bot

The expert system is also available as a Telegram bot that drives the very same engine over the SWI-Prolog Machine Query Interface. See telegram_bot/ for how it works, how to run it, and telegram_bot/DEPLOY.md for deployment.

Project structure

prolog/ Prolog sources (inference engine, knowledge base, bot bridge)
telegram_bot/ Telegram front-end (Python, python-telegram-bot + swiplserver)
doc/ Documentation
Dockerfile, docker-compose.yml Containerised deployment

The Prolog system under prolog/ is organized by responsibility:

File Responsibility
start.pl Terminal bootstrap: directives and module loading, runs main/0
shell.pl User shell: REPL loop, language selection, command dispatch, result presentation, decode/explain localization
ask.pl Knowledge acquisition: the criterion / multiple / selective question protocols
uncertainty.pl Certainty calculus (switchable min / product t-norm), certainty-based ordering, inference-level indexes
explanation.pl Proof-tree printing (how a conclusion was reached)
memory.pl Working-memory management (facts and proof trees)
utils.pl General-purpose helpers
disorders.pl Knowledge base: codable DSM-5-TR disorders (diagnostic goals) and entry points
criteria.pl Knowledge base: sub-disorders, types/specifiers, symptomatic manifestations/features, questions
interface_en.pl, interface_it.pl English / Italian localization (label/3, explanation/3)
clinical_tests.pl Regression test suite over clinical vignettes
bot_io.pl I/O abstraction (ui_read/2): terminal vs Telegram-bot mode
bot_boot.pl, bot_session.pl Bot bootstrap (per-chat thread-local state) and MQI session API

License License: MIT

This software is released under the MIT License. See the LICENSE file for details.

About

Prolog Expert System for Anxiety, Obsessive-Compulsive and Trauma-Related Disorders (DSM-5-TR)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /