codebookly / src /app /api /routes /index.py
aymie-oh's picture
initial commit
55d0d9e
from fastapi import APIRouter, Depends
from sqlalchemy.ext.asyncio import AsyncSession
# from app.schemas.schemas import IndexReference, IndexTerm, IndexReference
from app.schemas.schemas import IndexReference, EnrichedCode, CommitteeDesignation, Code
from app.database.db import get_async_session
import logging
from app.services.index import index_service
from app.services.enrichment import enrichment_service
log = logging.getLogger(__name__)
router = APIRouter(prefix="/api", tags=["index"])
@router.get("/mapped-index-terms")
async def get_mapped_index_terms(
limit: int = 10,
session: AsyncSession = Depends(get_async_session)
):
mapped_index_references = await index_service.map_index_references(session, limit)
return [IndexReference.model_validate(mapped_index_reference) for mapped_index_reference in mapped_index_references]
@router.get("/get-terms-by-code/{code}")
async def get_terms_by_code(
code: str,
session: AsyncSession = Depends(get_async_session)
):
references = await index_service.get_terms_by_code(session, code)
return [IndexReference.model_validate(row) for row in references]
@router.get("/get-codes-by-term/{term}")
async def get_codes_by_term(
term: str,
session: AsyncSession = Depends(get_async_session)
):
codes = await index_service.get_codes_by_term(session, term)
return [Code.model_validate(code) for code in codes]
# @router.get("/get-codes-by-term/{term}")
# async def get_codes_by_term(
# term: str,
# session: AsyncSession = Depends(get_async_session)
# ):
# codes = await index_service.get_codes_by_term(session, term)
# codes_list = []
# for code in codes:
# code_row, chapter_info, standards, committee_designations, index_terms = await enrichment_service.enrich_code(session, code.code)
# standards_list = []
# for standard in standards:
# standards_list.append({
# "agency": standard.agency,
# "standard_id": standard.standard_id,
# "definition": standard.definition,
# })
# codes_list.append({
# "code": code_row,
# "chapter_info": chapter_info,
# "standards": standards_list,
# "committee_designations": [CommitteeDesignation.model_validate(row) for row in committee_designations],
# "index_terms": [IndexReference.model_validate(row) for row in index_terms]
# })
# return [EnrichedCode.model_validate(code) for code in codes_list]