Comprehensive simulation system for Pain Management Support Group (PMSG) program evaluation. Generates realistic data for 100 patients with complete 8-week trajectories, assessment data, attendance tracking, and medication utilization.
pip install -r requirements.txt
python patient_simulator.py
This generates: - pmsg_data_csv/ directory with 4 CSV
files - pmsg_simulation_100patients.xlsx with 4 sheets
python database_integration.py
This generates: - All CSV files - All Excel files - SQLite database:
pmsg_platform.db - Database export:
pmsg_database_export.xlsx
pmsg_simulator/
├── database_models.py # SQLAlchemy ORM models
├── patient_simulator.py # Core simulation engine
├── database_integration.py # Database loading & queries
├── requirements.txt # Python dependencies
└── README.md # This file
Output files:
├── pmsg_data_csv/
│ ├── patients.csv # 100 patient records
│ ├── assessments.csv # ~900 assessment records
│ ├── attendance.csv # ~1200 attendance records
│ └── medications.csv # ~280 medication records
├── pmsg_simulation_100patients.xlsx
├── pmsg_database_export.xlsx
└── pmsg_platform.db # SQLite database
import pandas as pd
# Load CSV data
patients = pd.read_csv('pmsg_data_csv/patients.csv')
assessments = pd.read_csv('pmsg_data_csv/assessments.csv')
# Calculate improvement
baseline = assessments[assessments['week_number'] == 0]
week8 = assessments[assessments['week_number'] == 8]
improvement = baseline.merge(week8, on='patient_id', suffixes=('_baseline', '_week8'))
improvement['bpi_improvement'] = improvement['bpi_severity_score_baseline'] - improvement['bpi_severity_score_week8']
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from database_models import Patient, Assessment
engine = create_engine('sqlite:///pmsg_platform.db')
Session = sessionmaker(bind=engine)
session = Session()
# Query completers
completers = session.query(Patient).filter_by(program_status='Completed').all()
# Get patient with assessments
patient = session.query(Patient).filter_by(patient_id='PMSG-01-001').first()
assessments = patient.assessments # Access related assessments
Open pmsg_simulation_100patients.xlsx and use: - Pivot
tables for cohort-level analysis - VLOOKUP to join patient and
assessment data - Charts for visualization
simulator = PMSGPatientSimulator(n_patients=200, base_cohort=1, random_seed=42)
simulator = PMSGPatientSimulator(n_patients=100, base_cohort=1, random_seed=12345)
db = DatabaseIntegration(
database_url='postgresql://user:password@localhost/pmsg'
)
Edit PAIN_CONDITIONS dictionary in
patient_simulator.py:
PAIN_CONDITIONS = {
'Your Condition': 0.30, # 30% prevalence
'Another Condition': 0.20,
# ... total weights must sum to 1.0
}
The simulation incorporates evidence-based parameters:
For questions about the PMSG platform or this simulator: - Clinical Lead: Dr. Darrell Harris - Organization: Empowering For Excellence Youth (EFE) - Location: Toledo, Ohio
Internal use for EFE PMSG program evaluation and development.