brestok commited on
Commit
127f2f2
·
1 Parent(s): 0fb9a75

made report and changes editable

Browse files
ocr/api/openai_requests.py CHANGED
@@ -60,6 +60,9 @@ async def generate_consult_note(text: str, changes: str, type_: str):
60
  "assessment": ocr_prompts.consult.generate_assessment,
61
  "plan": ocr_prompts.consult.generate_plan,
62
  }
 
 
 
63
  messages = [
64
  {
65
  "role": "system",
@@ -67,7 +70,7 @@ async def generate_consult_note(text: str, changes: str, type_: str):
67
  },
68
  {
69
  "role": "user",
70
- "content": f"Medical information:\n```\n{text}\n```\n{changes}"
71
  }
72
  ]
73
  return messages
 
60
  "assessment": ocr_prompts.consult.generate_assessment,
61
  "plan": ocr_prompts.consult.generate_plan,
62
  }
63
+ user_content = f'Medical information:\n```\n{text}\n```'
64
+ if changes:
65
+ user_content += f'\nChanges:\n```\n{changes}\n```'
66
  messages = [
67
  {
68
  "role": "system",
 
70
  },
71
  {
72
  "role": "user",
73
+ "content": user_content
74
  }
75
  ]
76
  return messages
ocr/api/report/db_requests.py CHANGED
@@ -1,5 +1,6 @@
1
  from fastapi import HTTPException
2
 
 
3
  from ocr.api.report.dto import ReportModelShort
4
  from ocr.api.report.model import ReportModel
5
  from ocr.core.config import settings
@@ -30,3 +31,29 @@ async def save_report_obj(report: str, changes: str | None, original_text: str,
30
  async def get_last_report_obj() -> ReportModel | None:
31
  report = await settings.DB_CLIENT.reports.find().sort("_id", -1).to_list(length=1)
32
  return ReportModel.from_mongo(report[0]) if report else None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  from fastapi import HTTPException
2
 
3
+ from ocr.api.message.schemas import CreateMessageRequest
4
  from ocr.api.report.dto import ReportModelShort
5
  from ocr.api.report.model import ReportModel
6
  from ocr.core.config import settings
 
31
  async def get_last_report_obj() -> ReportModel | None:
32
  report = await settings.DB_CLIENT.reports.find().sort("_id", -1).to_list(length=1)
33
  return ReportModel.from_mongo(report[0]) if report else None
34
+
35
+
36
+ async def change_report_report_obj(report_id: str, data: CreateMessageRequest) -> ReportModel:
37
+ report = await settings.DB_CLIENT.reports.find_one({"id": report_id})
38
+ if not report:
39
+ raise HTTPException(status_code=404, detail="Report not found")
40
+ report = ReportModel.from_mongo(report)
41
+ report.report = data.text
42
+ await settings.DB_CLIENT.reports.update_one(
43
+ {"id": report.id},
44
+ {"$set": report.to_mongo()},
45
+ )
46
+ return report
47
+
48
+
49
+ async def change_changes_report_obj(report_id: str, data: CreateMessageRequest) -> ReportModel:
50
+ report = await settings.DB_CLIENT.reports.find_one({"id": report_id})
51
+ if not report:
52
+ raise HTTPException(status_code=404, detail="Report not found")
53
+ report = ReportModel.from_mongo(report)
54
+ report.changes = data.text
55
+ await settings.DB_CLIENT.reports.update_one(
56
+ {"id": report.id},
57
+ {"$set": report.to_mongo()},
58
+ )
59
+ return report
ocr/api/report/views.py CHANGED
@@ -2,17 +2,18 @@ import asyncio
2
 
3
  from fastapi import UploadFile, File
4
 
 
5
  from ocr.api.openai_requests import generate_report, generate_changes
6
  from ocr.api.report import report_router
7
  from ocr.api.report.db_requests import (get_all_reports_obj,
8
  delete_all_reports,
9
  get_report_obj_by_id,
10
  save_report_obj,
11
- get_last_report_obj)
12
  from ocr.api.report.dto import Paging
13
  from ocr.api.report.model import ReportModel
14
  from ocr.api.report.schemas import AllReportResponse
15
- from ocr.api.utils import divide_images, prepare_request_content, clean_response, extract_text_from_images
16
  from ocr.core.wrappers import OcrResponseWrapper
17
 
18
 
@@ -38,6 +39,24 @@ async def get_report(reportId: str) -> OcrResponseWrapper[ReportModel]:
38
  return OcrResponseWrapper(data=report)
39
 
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  @report_router.post('')
42
  async def create_report(
43
  file: UploadFile = File(...),
 
2
 
3
  from fastapi import UploadFile, File
4
 
5
+ from ocr.api.message.schemas import CreateMessageRequest
6
  from ocr.api.openai_requests import generate_report, generate_changes
7
  from ocr.api.report import report_router
8
  from ocr.api.report.db_requests import (get_all_reports_obj,
9
  delete_all_reports,
10
  get_report_obj_by_id,
11
  save_report_obj,
12
+ get_last_report_obj, change_report_report_obj, change_changes_report_obj)
13
  from ocr.api.report.dto import Paging
14
  from ocr.api.report.model import ReportModel
15
  from ocr.api.report.schemas import AllReportResponse
16
+ from ocr.api.utils import divide_images, clean_response, extract_text_from_images
17
  from ocr.core.wrappers import OcrResponseWrapper
18
 
19
 
 
39
  return OcrResponseWrapper(data=report)
40
 
41
 
42
+ @report_router.patch('/{reportId}/report')
43
+ async def change_report_report(
44
+ reportId: str,
45
+ data: CreateMessageRequest
46
+ ) -> OcrResponseWrapper[ReportModel]:
47
+ report = await change_report_report_obj(reportId, data)
48
+ return OcrResponseWrapper(data=report)
49
+
50
+
51
+ @report_router.post('/{reportId}/changes')
52
+ async def change_report_changes(
53
+ reportId: str,
54
+ data: CreateMessageRequest
55
+ ) -> OcrResponseWrapper[ReportModel]:
56
+ report = await change_changes_report_obj(reportId, data)
57
+ return OcrResponseWrapper(data=report)
58
+
59
+
60
  @report_router.post('')
61
  async def create_report(
62
  file: UploadFile = File(...),