import json from sqlalchemy.orm import Session from app.database.models import ( OnboardingMessage, OnboardingSession, OnboardingState, ) class OnboardingService: def get_session( self, db: Session, session_id: str, ): return ( db.query(OnboardingSession) .filter( OnboardingSession.session_id == session_id ) .first() ) def get_state( self, db: Session, session_id: str, ): state = ( db.query(OnboardingState) .filter( OnboardingState.session_id == session_id ) .first() ) if not state: default_state = { "reason_for_visit": { "status": "not_collected", "value": None }, "symptoms": { "status": "not_collected", "items": [] }, "medical_history": { "status": "not_collected", "items": [] }, "medications": { "status": "not_collected", "items": [] }, "allergies": { "status": "not_collected", "items": [] } } state = OnboardingState( session_id=session_id, state_json=json.dumps(default_state), ) db.add(state) db.commit() db.refresh(state) return state def save_message( self, db: Session, session_id: str, role: str, message: str, stage: str, ): new_message = OnboardingMessage( session_id=session_id, role=role, message=message, stage=stage, ) db.add(new_message) db.commit() return new_message def update_state( self, db: Session, state: OnboardingState, data: dict, ): state.state_json = json.dumps(data) db.commit() db.refresh(state) return state