A FastAPI-based service that maps traditional medical terms to ICD-11 codes through the NAMASTE (National Ayurveda, Siddha, Unani, and Traditional Medicine) system.
- Traditional Term Lookup: Search for traditional medical terms and get their ICD-11 mappings
- Multi-System Support: Supports Ayurveda, Siddha, and Unani medical systems
- Comprehensive Mapping: Maps traditional terms through NAMASTE codes to ICD-11 codes
- Partial Search: Search for terms with partial matching
- Detailed Response: Returns complete mapping information including confidence scores
Look up a traditional term and get its complete ICD-11 mapping details.
Request Body:
{
"traditional_term": "Jwara"
}Response:
{
"traditional_term": "Jwara",
"namaste_code": "NAMASTE_AY_001",
"english_translation": "Fever",
"medical_system": "Ayurveda",
"category": "General fever conditions",
"icd11_tm2_code": "XM01A0",
"icd11_biomedicine_code": "8A43",
"mapping_type": "Exact",
"confidence_score": 0.77,
"icd11_details": {
"title": "Fever pattern in traditional medicine",
"module": "TM2",
"category": "General symptoms",
"code_type": "Traditional_Medicine",
"parent_code": "XM00",
"dual_code_partner": "8A43"
}
}Search for traditional terms with partial matching.
Example: GET /search/jwara
Health check endpoint.
API information and available endpoints.
-
Clone or download the project files
-
Install dependencies:
pip install -r requirements.txt
-
Ensure CSV files are in the correct location:
Datasets/namaste_100_dataset.csvDatasets/namaste_icd11_100_mapping.csvDatasets/icd11_100_dataset.csv
-
Run the API:
python main.py
Or using uvicorn directly:
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
# Look up a traditional term
curl -X POST "http://localhost:8000/lookup" \
-H "Content-Type: application/json" \
-d '{"traditional_term": "Jwara"}'
# Search for partial matches
curl "http://localhost:8000/search/kasa"
# Health check
curl "http://localhost:8000/health"import requests
# Look up a traditional term
response = requests.post(
"http://localhost:8000/lookup",
json={"traditional_term": "Jwara"}
)
print(response.json())
# Search for partial matches
response = requests.get("http://localhost:8000/search/kasa")
print(response.json())The API uses three CSV files:
- namaste_100_dataset.csv: Contains traditional terms with their NAMASTE codes
- namaste_icd11_100_mapping.csv: Maps NAMASTE codes to ICD-11 codes
- icd11_100_dataset.csv: Contains detailed ICD-11 code information
The API returns appropriate HTTP status codes:
200: Success400: Bad request (empty term)404: No match found500: Internal server error
- Ayurveda: Traditional Indian medicine
- Siddha: Tamil traditional medicine
- Unani: Greco-Arabic traditional medicine
Once the server is running, visit:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- Ayurveda: Jwara (Fever), Kasa (Cough), Shwasa (Dyspnea)
- Siddha: Suram (Fever), Irumal (Cough), Moolam (Hemorrhoids)
- Unani: Humma (Fever), Sual (Cough), Zeequnnafs (Dyspnea)