Dhruv-Ty commited on
Commit
8bb4985
Β·
verified Β·
1 Parent(s): 97207fb

version 6 | DB

Browse files
Files changed (1) hide show
  1. src/architecture.md +52 -14
src/architecture.md CHANGED
@@ -14,10 +14,12 @@ Daease is an AI-powered medical consultation application that enables users to d
14
  β”œβ”€β”€ utils.py # Utility functions for text processing
15
  β”œβ”€β”€ chat_display.py # Chat UI components and rendering
16
  β”œβ”€β”€ session_state.py # Session state management
 
17
  β”œβ”€β”€ styles.py # Custom CSS styling
18
  β”œβ”€β”€ sendgrid_service.py # Email service for sending reports
19
  β”œβ”€β”€ __init__.py # Package initialization
20
- └── requirements.txt # Project dependencies
 
21
  ```
22
 
23
  ## Core Components
@@ -30,15 +32,19 @@ The entry point for the Streamlit web application.
30
  - Streamlit UI setup with dark theme
31
  - Chat interface for medical consultations
32
  - Toggle for enabling/disabling medical database search (RAG)
33
- - Report generation functionality
 
34
  - Session state management
 
35
 
36
  **Flow:**
37
  1. Initializes session state and applies styling
38
  2. Sets up the sidebar with features toggle and report generation button
39
  3. Displays chat history and handles new user inputs
40
- 4. Processes user queries through the orchestrator model
41
- 5. Updates the UI with AI responses
 
 
42
 
43
  ### 2. AI Model Integration (`model.py`)
44
 
@@ -65,11 +71,13 @@ Handles the creation of medical reports based on consultation history.
65
  - PDF report generation with ReportLab
66
  - File download functionality
67
  - Email integration for report sharing
 
 
68
 
69
  **Key Functions:**
70
  - `extract_medical_json()`: Extracts structured medical data from conversations
71
  - `build_medical_report()`: Creates a formatted PDF report
72
- - `generate_and_download_report()`: Manages the report generation workflow
73
  - `show_email_form()`: Handles the email input and sending interface
74
 
75
  ### 4. Utility Functions (`utils.py`)
@@ -87,29 +95,48 @@ Provides helper functions for text processing and formatting.
87
  Manages the chat interface components and rendering.
88
 
89
  **Key Functions:**
90
- - `display_chat_history()`: Renders the chat messages
91
  - `show_typing_indicator()`: Shows a typing animation while processing
92
  - `display_legal_disclaimer()`: Shows medical disclaimer
93
  - `get_avatars()`: Handles avatar images for the chat
94
 
95
  ### 6. Session State Management (`session_state.py`)
96
 
97
- Manages the application's state across interactions.
98
 
99
- **Key Function:**
100
  - `initialize_session_state()`: Sets up all required session variables
 
 
 
101
 
102
  **State Variables:**
103
- - `history`: Chat message history
104
  - `consultation_id`: Unique ID for each consultation
105
  - `use_rag`: Toggle for retrieval-augmented generation
106
  - `processing`: Flag for response generation status
 
107
  - `show_report_form`: Report generation form visibility
108
  - `patient_info`: Patient details for reports
109
  - `pdf_data`: Generated PDF report data
110
  - `show_email_form`: Email form visibility
111
 
112
- ### 7. Styling (`styles.py`)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
 
114
  Provides custom CSS styling for the application.
115
 
@@ -122,7 +149,7 @@ Provides custom CSS styling for the application.
122
  **Key Function:**
123
  - `apply_styling()`: Applies the custom CSS to the Streamlit app
124
 
125
- ### 8. Email Service (`sendgrid_service.py`)
126
 
127
  Handles email functionality for sending reports.
128
 
@@ -140,11 +167,12 @@ Handles email functionality for sending reports.
140
 
141
  1. **Initialization:**
142
  - Load environment variables
143
- - Initialize session state
144
  - Apply custom styling
145
 
146
  2. **User Interaction:**
147
  - User inputs symptoms or medical queries
 
148
  - The application displays a typing indicator while processing
149
 
150
  3. **Query Processing:**
@@ -156,10 +184,14 @@ Handles email functionality for sending reports.
156
  - Main response is shown in the chat
157
  - Detailed reasoning is available in an expandable section
158
  - Sources are linked to their original content
 
 
159
 
160
  5. **Report Generation:**
161
  - User clicks "Generate Report" button
162
- - Application extracts structured medical data from the conversation
 
 
163
  - PDF report is generated with patient information and consultation details
164
  - User can download the report or send it via email
165
 
@@ -168,14 +200,20 @@ Handles email functionality for sending reports.
168
  - System validates email format
169
  - Report is sent using the SendGrid service
170
 
 
 
 
 
171
  ## Dependencies
172
 
173
  - **Core:** openai, requests, beautifulsoup4, markdown, python-dotenv
174
  - **Report Generation:** jinja2, python-docx, pydantic, reportlab
175
  - **Web App:** streamlit
 
176
 
177
  ## Security and Compliance
178
 
179
  - Medical disclaimer is prominently displayed
180
  - Email functionality includes appropriate medical disclaimers
181
- - Patient data is not persisted between sessions
 
 
14
  β”œβ”€β”€ utils.py # Utility functions for text processing
15
  β”œβ”€β”€ chat_display.py # Chat UI components and rendering
16
  β”œβ”€β”€ session_state.py # Session state management
17
+ β”œβ”€β”€ database.py # Database integration with Supabase
18
  β”œβ”€β”€ styles.py # Custom CSS styling
19
  β”œβ”€β”€ sendgrid_service.py # Email service for sending reports
20
  β”œβ”€β”€ __init__.py # Package initialization
21
+ β”œβ”€β”€ requirements.txt # Project dependencies
22
+ └── README_DB_SETUP.md # Database setup instructions
23
  ```
24
 
25
  ## Core Components
 
32
  - Streamlit UI setup with dark theme
33
  - Chat interface for medical consultations
34
  - Toggle for enabling/disabling medical database search (RAG)
35
+ - Report generation functionality with priority management
36
+ - Conversation lock mechanism to ensure uninterrupted user experience
37
  - Session state management
38
+ - "End Conversation" functionality
39
 
40
  **Flow:**
41
  1. Initializes session state and applies styling
42
  2. Sets up the sidebar with features toggle and report generation button
43
  3. Displays chat history and handles new user inputs
44
+ 4. Prioritizes conversation processing over report generation
45
+ 5. Processes user queries through the orchestrator model
46
+ 6. Updates the UI with AI responses
47
+ 7. Only processes report generation when no conversation is active
48
 
49
  ### 2. AI Model Integration (`model.py`)
50
 
 
71
  - PDF report generation with ReportLab
72
  - File download functionality
73
  - Email integration for report sharing
74
+ - Error handling for patient information validation
75
+ - Conversation-aware processing to prevent disruptions
76
 
77
  **Key Functions:**
78
  - `extract_medical_json()`: Extracts structured medical data from conversations
79
  - `build_medical_report()`: Creates a formatted PDF report
80
+ - `generate_and_download_report()`: Manages the report generation workflow with conversation awareness
81
  - `show_email_form()`: Handles the email input and sending interface
82
 
83
  ### 4. Utility Functions (`utils.py`)
 
95
  Manages the chat interface components and rendering.
96
 
97
  **Key Functions:**
98
+ - `display_chat_history()`: Renders the chat messages from database
99
  - `show_typing_indicator()`: Shows a typing animation while processing
100
  - `display_legal_disclaimer()`: Shows medical disclaimer
101
  - `get_avatars()`: Handles avatar images for the chat
102
 
103
  ### 6. Session State Management (`session_state.py`)
104
 
105
+ Manages the application's state across interactions and integrates with database.
106
 
107
+ **Key Functions:**
108
  - `initialize_session_state()`: Sets up all required session variables
109
+ - `add_message_to_history()`: Adds messages to both local cache and database
110
+ - `get_full_history()`: Retrieves complete conversation history from database
111
+ - `end_conversation()`: Deletes conversation data from database
112
 
113
  **State Variables:**
114
+ - `history`: Local cache of chat message history
115
  - `consultation_id`: Unique ID for each consultation
116
  - `use_rag`: Toggle for retrieval-augmented generation
117
  - `processing`: Flag for response generation status
118
+ - `conversation_lock`: Flag to prioritize conversations over report generation
119
  - `show_report_form`: Report generation form visibility
120
  - `patient_info`: Patient details for reports
121
  - `pdf_data`: Generated PDF report data
122
  - `show_email_form`: Email form visibility
123
 
124
+ ### 7. Database Integration (`database.py`)
125
+
126
+ Handles persistence of conversation data in Supabase.
127
+
128
+ **Key Features:**
129
+ - Supabase integration for conversation history storage
130
+ - Error handling and fallback mechanisms
131
+ - Conversation and message management
132
+
133
+ **Key Functions:**
134
+ - `create_conversation()`: Creates a new conversation record
135
+ - `save_message()`: Saves individual messages to the database
136
+ - `get_conversation_history()`: Retrieves complete history for a consultation
137
+ - `delete_conversation()`: Removes conversation data when no longer needed
138
+
139
+ ### 8. Styling (`styles.py`)
140
 
141
  Provides custom CSS styling for the application.
142
 
 
149
  **Key Function:**
150
  - `apply_styling()`: Applies the custom CSS to the Streamlit app
151
 
152
+ ### 9. Email Service (`sendgrid_service.py`)
153
 
154
  Handles email functionality for sending reports.
155
 
 
167
 
168
  1. **Initialization:**
169
  - Load environment variables
170
+ - Initialize session state and database connection
171
  - Apply custom styling
172
 
173
  2. **User Interaction:**
174
  - User inputs symptoms or medical queries
175
+ - Conversation lock is activated to prioritize conversation processing
176
  - The application displays a typing indicator while processing
177
 
178
  3. **Query Processing:**
 
184
  - Main response is shown in the chat
185
  - Detailed reasoning is available in an expandable section
186
  - Sources are linked to their original content
187
+ - All data is persisted to the database
188
+ - Conversation lock is released after response is processed
189
 
190
  5. **Report Generation:**
191
  - User clicks "Generate Report" button
192
+ - System checks that no conversation is being processed
193
+ - Application retrieves full conversation history from database
194
+ - Input validation ensures all form fields have valid values
195
  - PDF report is generated with patient information and consultation details
196
  - User can download the report or send it via email
197
 
 
200
  - System validates email format
201
  - Report is sent using the SendGrid service
202
 
203
+ 7. **End Conversation:**
204
+ - User can end the conversation which deletes the data from the database
205
+ - A new conversation ID is generated for future interactions
206
+
207
  ## Dependencies
208
 
209
  - **Core:** openai, requests, beautifulsoup4, markdown, python-dotenv
210
  - **Report Generation:** jinja2, python-docx, pydantic, reportlab
211
  - **Web App:** streamlit
212
+ - **Database:** supabase, postgrest
213
 
214
  ## Security and Compliance
215
 
216
  - Medical disclaimer is prominently displayed
217
  - Email functionality includes appropriate medical disclaimers
218
+ - Database storage is secured with row-level security
219
+ - Conversations can be deleted to ensure data privacy