mgbam commited on
Commit
a0dc6fc
·
verified ·
1 Parent(s): 57c159c

Update models/chat.py

Browse files
Files changed (1) hide show
  1. models/chat.py +12 -16
models/chat.py CHANGED
@@ -1,42 +1,38 @@
 
1
  from sqlmodel import SQLModel, Field, Relationship
2
- from typing import Optional, List, TYPE_CHECKING # Ensure TYPE_CHECKING is imported
3
  from datetime import datetime
4
 
5
- # Forward reference for type hinting to avoid circular imports
6
  if TYPE_CHECKING:
7
- from .user import User # For the 'user' attribute in ChatSession
8
 
9
  class ChatSessionBase(SQLModel):
10
- user_id: int = Field(foreign_key="user.id") # Foreign key to the 'user' table's 'id' column
11
  start_time: datetime = Field(default_factory=datetime.utcnow)
12
  title: Optional[str] = None
 
 
 
 
13
 
14
  class ChatSession(ChatSessionBase, table=True):
15
  id: Optional[int] = Field(default=None, primary_key=True)
16
-
17
- # ------------ RELATIONSHIP DEFINITION ------------
18
- # A ChatSession belongs to one User.
19
- # `back_populates="chat_sessions"` links this to the `chat_sessions` attribute in the User model.
20
  user: Optional["User"] = Relationship(back_populates="chat_sessions")
21
-
22
- # A ChatSession can have many ChatMessage objects.
23
  messages: List["ChatMessage"] = Relationship(back_populates="session")
24
- # -------------------------------------------------
25
 
26
  class ChatMessageBase(SQLModel):
27
- # Foreign key to the 'chatsession' table's 'id' column.
28
- # SQLModel infers table names from class names (lowercase).
29
  session_id: int = Field(foreign_key="chatsession.id")
30
- role: str
31
  content: str
32
  timestamp: datetime = Field(default_factory=datetime.utcnow)
33
  tool_call_id: Optional[str] = None
34
  tool_name: Optional[str] = None
 
 
 
35
 
36
  class ChatMessage(ChatMessageBase, table=True):
37
  id: Optional[int] = Field(default=None, primary_key=True)
38
-
39
- # A ChatMessage belongs to one ChatSession.
40
  session: Optional["ChatSession"] = Relationship(back_populates="messages")
41
 
42
  class ChatMessageCreate(ChatMessageBase):
 
1
+ # /home/user/app/models/chat.py
2
  from sqlmodel import SQLModel, Field, Relationship
3
+ from typing import Optional, List, TYPE_CHECKING, Dict, Any # Ensure TYPE_CHECKING is imported
4
  from datetime import datetime
5
 
 
6
  if TYPE_CHECKING:
7
+ from .user import User
8
 
9
  class ChatSessionBase(SQLModel):
10
+ user_id: int = Field(foreign_key="user.id")
11
  start_time: datetime = Field(default_factory=datetime.utcnow)
12
  title: Optional[str] = None
13
+ # NEW: For storing initial context provided by the clinician
14
+ patient_context_summary: Optional[str] = Field(default=None, description="Brief summary of patient context for this session")
15
+ # NEW: Could store structured context as JSON if more detail is needed
16
+ # patient_context_structured: Optional[Dict[str, Any]] = Field(default=None, sa_column=Column(JSON)) # If using SQLAlchemy Column for JSON
17
 
18
  class ChatSession(ChatSessionBase, table=True):
19
  id: Optional[int] = Field(default=None, primary_key=True)
 
 
 
 
20
  user: Optional["User"] = Relationship(back_populates="chat_sessions")
 
 
21
  messages: List["ChatMessage"] = Relationship(back_populates="session")
 
22
 
23
  class ChatMessageBase(SQLModel):
 
 
24
  session_id: int = Field(foreign_key="chatsession.id")
25
+ role: str # "user", "assistant", "system", "tool"
26
  content: str
27
  timestamp: datetime = Field(default_factory=datetime.utcnow)
28
  tool_call_id: Optional[str] = None
29
  tool_name: Optional[str] = None
30
+ # NEW: For AI to optionally provide source/confidence
31
+ # source_references: Optional[List[str]] = Field(default=None, sa_column=Column(JSON)) # If using SQLAlchemy Column for JSON
32
+ # confidence_score: Optional[float] = None
33
 
34
  class ChatMessage(ChatMessageBase, table=True):
35
  id: Optional[int] = Field(default=None, primary_key=True)
 
 
36
  session: Optional["ChatSession"] = Relationship(back_populates="messages")
37
 
38
  class ChatMessageCreate(ChatMessageBase):