Files
2026-05-26 14:59:41 +02:00

122 lines
4.3 KiB
Python

from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
import routers.docOffices as docOffices
import routers.appointments as appointments
import routers.patients as patients
import routers.patients_files as patients_files
import routers.patients_notes as patients_notes
import routers.patients_queue as patients_queue
import routers.claim_statement_files as claim_statement_files
import routers.users as users
import routers.notifications as notifications
import routers.fileStorage as fileStorage
import routers.medicine as medicine
import routers.business_user as business_user
import routers.business as business
import routers.access_request as access_request
import routers.patient_access as patient_access
import routers.mzansi_wallet as mzansi_wallet
import routers.mzansi_directory as mzansi_directory
import routers.user_consent as user_consent
import routers.icd10_codes as icd10_codes
import routers.mine_sweeper_leaderboard as mine_sweeper_leaderboard
import routers.profile_links as profile_links
from fastapi.middleware.cors import CORSMiddleware
from supertokens_python import get_all_cors_headers
from supertokens_python.framework.fastapi import get_middleware
from supertokens_python import init, InputAppInfo, SupertokensConfig
from supertokens_python.recipe import emailpassword, session, dashboard
import os
from dotenv import load_dotenv
load_dotenv()
st_api_key = os.getenv("SUPERTOKENS_API_KEY")
origins = [
"http://localhost",
"http://localhost:80",
"http://localhost:83",
"http://localhost:1995",
"http://localhost:8080",
"http://MIH-API-Hub:80",
"http://MIH-API-Hub",
"http://api.mzansi-innovation-hub.co.za",
"http://app.mzansi-innovation-hub.co.za",
"https://api.mzansi-innovation-hub.co.za",
"https://app.mzansi-innovation-hub.co.za",
]
init(
app_info=InputAppInfo(
app_name="Mzansi Innovation Hub",
api_domain="http://localhost:8080/",
website_domain="https://app.mzansi-innovation-hub.co.za",
api_base_path="/auth",
website_base_path="/auth"
),
supertokens_config=SupertokensConfig(
# https://try.supertokens.com is for demo purposes. Replace this with the address of your core instance (sign up on supertokens.com), or self host a core.
connection_uri="http://mih-supertokens:3567/",
api_key=st_api_key
),
framework='fastapi',
recipe_list=[
# SuperTokens.init(),
session.init(), # initializes session features
emailpassword.init(),
# emailverification.init(mode='REQUIRED'),
dashboard.init(admins=[
"yasienmeth@gmail.com",
],
)
],
mode='wsgi' # use wsgi instead of asgi if you are running using gunicorn
)
app = FastAPI()#middleware=middleware)
app.add_middleware(get_middleware())
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"],
allow_headers=["Content-Type"] + get_all_cors_headers()
)
app.include_router(docOffices.router)
app.include_router(patients.router)
app.include_router(patients_files.router)
app.include_router(patients_notes.router)
app.include_router(patients_queue.router)
app.include_router(access_request.router)
app.include_router(patient_access.router)
app.include_router(users.router)
app.include_router(fileStorage.router)
app.include_router(claim_statement_files.router)
app.include_router(medicine.router)
app.include_router(business_user.router)
app.include_router(business.router)
app.include_router(notifications.router)
app.include_router(mzansi_wallet.router)
app.include_router(mzansi_directory.router)
app.include_router(user_consent.router)
app.include_router(icd10_codes.router)
app.include_router(appointments.router)
app.include_router(mine_sweeper_leaderboard.router)
app.include_router(profile_links.router)
# Check if server is up
@app.get("/", tags=["Server Check"])
def check_server():
return {"Status": "Server is Up and Running. whats good in the hood"}
@app.exception_handler(Exception)
async def global_exception_handler(request: Request, exc: Exception):
print(f"Global Error Log: {exc}")
return JSONResponse(
status_code=500,
content={"detail": "An internal server error occurred."},
)