Files
mih-project/mih_api_hub/routers/icd10_codes.py

48 lines
1.9 KiB
Python

from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
import os
import xlrd
#SuperToken Auth from front end
from supertokens_python.recipe.session.framework.fastapi import verify_session
from supertokens_python.recipe.session import SessionContainer
from fastapi import Depends
router = APIRouter()
#get all medicines
@router.get("/icd10-codes/all", tags=["ICD10 Code"])
async def read_all_icd10_codes(session: SessionContainer = Depends(verify_session())):
return getICD10CodesData("")
#get all medicines by search
@router.get("/icd10-codes/{search}", tags=["ICD10 Code"])
async def read_icd10_codes_search(search: str, session: SessionContainer = Depends(verify_session())): #, session: SessionContainer = Depends(verify_session())
return getICD10CodesData(search)
def getICD10CodesData(search: str):
path = os.getcwd()
#print(path)
#parentDir = os.path.abspath(os.path.join(path, os.pardir))
filePath = os.path.join(path, "ICD10_Codes", "ICD-10_MIT_2021_Excel_16-March_2021.xls")
print(f'========================= %s ===============================',filePath)
book = xlrd.open_workbook_xls(filePath)
sh = book.sheet_by_index(0)
codeList = []
for rx in range(1,sh.nrows):
if(str(sh.cell_value(rx, 7)).strip() != ""
and search.lower() in str(sh.cell_value(rx, 7)).strip().lower()
or search.lower() in str(sh.cell_value(rx, 8)).strip().lower()):
codeList.append({
"icd10": str(sh.cell_value(rx, 7)).strip(),
"description": str(sh.cell_value(rx, 8)).strip(),
})
seen = set()
codeList_noDuplicates = []
for d in codeList:
t = tuple(d.items())
#print(t[0][1])
if t not in seen:
seen.add(t)
codeList_noDuplicates.append(d)
return sorted(codeList_noDuplicates, key=lambda d: d['icd10']) #qsort(medlist)