--- title: Fist-aid assitant emoji: 🚀 colorFrom: blue colorTo: green sdk: streamlit sdk_version: 1.33.0 app_file: app.py pinned: false --- # Snakebit Firstaid 🚀 **Short description:** Web application that provides quick, essential first-aid guidance for snakebite (poisoned wound) and normal wounds, and then offers an advanced ChatGPT-powered assistant to deliver tailored next-step guidance. --- ## Features * Simple, two-panel quick-first-aid interface: * Left: Snakebite (poisoned wound) — short essential steps. * Right: Normal wound — short essential steps. * Users confirm completion and press **Next → Advanced** which forwards the wound type to the advanced assistant. * Advanced assistant powered by OpenAI ChatGPT (via the `openai` package): * Confirms basic-first-aid steps completed. * Collects victim information (name, age, height, weight, notes). * Saves victim info to `./data/victims.json`. * Provides in-depth, concise first-aid & monitoring steps and supports follow-up questions. * Safe defaults for deployment (server settings in `.streamlit/config.toml`). --- ## Files in the repo * `app.py` — main Streamlit app (single-file app). * `requirements.txt` — project dependencies. * `.streamlit/config.toml` — UI theme + server defaults. * `.streamlit/secrets.toml` — (empty by default; store `OPENAI_API_KEY` here locally if needed — **do not commit**). * `data/victims.json` — auto-created and appended with victim records by the app (add `data/.gitkeep` if you want the empty folder tracked). * `.gitignore` — prevents committing secrets, virtualenvs, and local data. * `README.md` — this document. --- ## Quick start (local) > Tested with Python 3.10+ (recommend 3.11). Adjust if your environment differs. 1. Create a virtual environment and activate it: ```bash python -m venv .venv # macOS / Linux source .venv/bin/activate # Windows (PowerShell) .\.venv\Scripts\Activate.ps1 ``` 2. Install dependencies: ```bash pip install -r requirements.txt ``` 3. Provide your OpenAI API key securely. Recommended options: * Add to environment (temporary): ```bash export OPENAI_API_KEY="sk-..." # Windows PowerShell $env:OPENAI_API_KEY = "sk-..." ``` * OR (local only, not for public repos) add to `.streamlit/secrets.toml`: ```toml OPENAI_API_KEY = "sk-REPLACE_WITH_YOUR_KEY" # Optionally set the model # OPENAI_MODEL = "gpt-4o-mini" ``` 4. Run the app: ```bash streamlit run app.py ``` Open the address printed by Streamlit (usually [http://localhost:8501](http://localhost:8501)). --- ## Deploying to Hugging Face Spaces (Streamlit) 1. Create a new Space on Hugging Face and choose **Streamlit** as the SDK. 2. Push this repository (all files except secrets) to the Space. 3. In the Space settings, add a secret named `OPENAI_API_KEY` with your OpenAI key. Do **not** commit `secrets.toml` to the repo. 4. Start the Space — it will use `app.py` automatically. --- ## Configuration & secrets * `.streamlit/config.toml` contains the UI theme and safe server defaults (headless mode, address `0.0.0.0`, disabled XSRF for certain container environments). * **Never commit** `.streamlit/secrets.toml` (contains API keys). Add it to `.gitignore` (already provided). --- ## Security & emergency notes * This app is *not* a substitute for professional medical care. It gives short, essential guidance to assist non-professionals. * If a victim is deteriorating, losing consciousness, has severe bleeding, or you suspect life-threatening poisoning, **call local emergency services immediately**. * The app stores victim records in `./data/victims.json`. Treat this as potentially sensitive information; if you deploy publicly, review data retention policies and consider adding encryption or removing storage. --- ## Requirements See `requirements.txt`. Minimal runtime packages include `streamlit` and `openai`. Optionally include `toml`, `python-dotenv`, and `Pillow`. --- ## Development notes * The app accepts `OPENAI_MODEL` environment variable to override the default model used. * The app supports both the modern `openai.OpenAI(api_key=...)` client shape and the classic `openai` package usage (the code tries both imports). * `data/victims.json` is appended; if you want the directory tracked but empty, create `data/.gitkeep` and commit it. --- ## Contributing If you want improvements (multi-page separation, richer UI, persistent DB, authentication, localization), open an issue or send a pull request. I can help implement features such as: * Separate pages for the simple/advanced parts (actual `next.py` pages). * Better UX: progress indicators, larger touch targets, i18n (Vietnamese + English). * Replace local JSON file with small database (SQLite) or cloud storage for multi-user deployments. --- ## License Add a license (e.g., MIT) — currently not set in this repo.