Trying to fix basic functionality again.

This commit is contained in:
2025-03-23 11:53:47 -07:00
parent ebda48190a
commit 2141e81f42
406 changed files with 173963 additions and 69 deletions

127
scripts/prepare_environment.sh Executable file
View File

@@ -0,0 +1,127 @@
#!/bin/bash
# prepare_environment.sh
#
# This script prepares the environment for running the Synthea pipeline.
# It rebuilds the Docker containers, ensures the directory structure is correct,
# and starts the necessary services.
set -e # Exit on error
# Display a header
echo "=================================================="
echo "Synthea All Diseases Pipeline - Environment Setup"
echo "=================================================="
# Check for Docker
if ! command -v docker &> /dev/null; then
echo "ERROR: Docker is not installed or not in the PATH."
echo "Please install Docker and try again."
exit 1
fi
# Check for docker-compose
if ! command -v docker-compose &> /dev/null; then
echo "ERROR: docker-compose is not installed or not in the PATH."
echo "Please install docker-compose and try again."
exit 1
fi
# Create necessary directories if they don't exist
echo "Creating required directories..."
mkdir -p module_generator
mkdir -p src/main/resources/modules
mkdir -p src/main/resources/disease
mkdir -p modules
mkdir -p output
# Check if the module_generator directory has the required scripts
if [ ! -f "module_generator/module_generator.py" ] || [ ! -f "module_generator/run_module_generator.py" ]; then
echo "ERROR: Required Python scripts not found in module_generator directory!"
# Check if they're in the python directory and we need to move them
if [ -d "python" ] && [ -f "python/module_generator.py" ] && [ -f "python/run_module_generator.py" ]; then
echo "Found scripts in python directory, moving them to module_generator directory..."
mkdir -p module_generator
mv python/module_generator.py module_generator/
mv python/run_module_generator.py module_generator/
# Copy README if exists
if [ -f "python/README_module_generator.md" ]; then
mv python/README_module_generator.md module_generator/
fi
else
echo "Scripts not found in python directory either. Please ensure the scripts are in the module_generator directory."
exit 1
fi
fi
# Make the Python scripts executable
chmod +x module_generator/module_generator.py
chmod +x module_generator/run_module_generator.py
# Create symlinks for convenience
ln -sf "$(pwd)/module_generator/run_module_generator.py" "$(pwd)/run_module_generator.py"
ln -sf "$(pwd)/module_generator/module_generator.py" "$(pwd)/module_generator.py"
# Create an empty disease_list.json if it doesn't exist
if [ ! -f "src/main/resources/disease_list.json" ]; then
echo "Creating empty disease_list.json..."
echo "[]" > src/main/resources/disease_list.json
fi
# Check if .env file exists
if [ ! -f ".env" ]; then
echo ".env file is missing. Creating from .env.example..."
if [ -f ".env.example" ]; then
cp .env.example .env
echo " Created .env from .env.example. Please edit it with your API key."
else
echo "WARNING: .env.example not found. Creating minimal .env file..."
echo "ANTHROPIC_API_KEY=your_api_key_here" > .env
fi
fi
# Stop any running containers
echo "Stopping any running containers..."
docker-compose down || true
# Rebuild the containers
echo "Building Docker containers..."
docker-compose build
# Start the Synthea container
echo "Starting Synthea container..."
docker-compose up -d synthea
# Give the container a moment to start
echo "Waiting for Synthea container to be ready..."
sleep 10
# Check if the container is healthy
CONTAINER_ID=$(docker-compose ps -q synthea)
if [ -z "$CONTAINER_ID" ]; then
echo "ERROR: Failed to start Synthea container."
exit 1
fi
# Check if the container is using proper health checks
HEALTH_STATUS=$(docker inspect --format='{{.State.Health.Status}}' $CONTAINER_ID 2>/dev/null || echo "unknown")
if [ "$HEALTH_STATUS" != "healthy" ] && [ "$HEALTH_STATUS" != "unknown" ]; then
echo "WARNING: Synthea container is not reporting as healthy (status: $HEALTH_STATUS)."
echo "It may take some time for the container to become fully operational."
echo "You can proceed, but the pipeline may fail if the container is not ready."
fi
# Check if we should generate modules
if [ "$1" == "--generate-modules" ]; then
echo "Starting module generator..."
docker-compose --profile generator up module-generator
fi
echo "=================================================="
echo "Environment is ready!"
echo ""
echo "To generate patients for a disease module:"
echo "nextflow run main.nf --disease_name \"Disease Name\" --generate_patients true"
echo ""
echo "To generate a new module and patients:"
echo "nextflow run main.nf --disease_name \"Disease Name\" --force_generate true --generate_patients true"
echo "=================================================="