From e05fe180dd6bf2b3bdcbab3936f3313d0acd1d9a Mon Sep 17 00:00:00 2001 From: jiangtd Date: Sun, 31 May 2026 14:11:31 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=8C=BB=E7=96=97=E7=A5=A8=E6=8D=AE=E6=96=87?= =?UTF-8?q?=E5=AD=97=E8=AF=86=E5=88=AB=E7=9A=84=E4=BB=A3=E7=A0=81=E6=94=B9?= =?UTF-8?q?=E9=80=A0=E5=92=8C=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handle/medical/BMedicalInvoiceHandle.java | 2 +- .../BMedicalReciptsClassifyHandle.java | 24 ++++ .../BMedicalReciptsClassifyHandle.java | 29 ---- .../BMedicalReciptsClassifyRequest.java | 8 ++ .../medical/MedicalDetailController.java | 59 +-------- .../medical/MedicalInvoiceController.java | 125 +----------------- .../MedicalPrescriptionController.java | 79 +---------- .../MedicalReciptsClassifyController.java | 27 ++++ .../medical/MedicalRecordController.java | 50 +------ .../MedicalReportDetectionController.java | 74 +---------- .../medical/MedicalStatementController.java | 51 +------ .../medical/MedicalSummaryController.java | 55 +------- .../MedicalSummaryDiagnosisController.java | 56 +------- 13 files changed, 104 insertions(+), 535 deletions(-) create mode 100644 api-third/src/main/java/com/heyu/api/baidu/handle/medical/BMedicalReciptsClassifyHandle.java delete mode 100644 api-third/src/main/java/com/heyu/api/baidu/request/medical/BMedicalReciptsClassifyHandle.java create mode 100644 api-third/src/main/java/com/heyu/api/baidu/request/medical/BMedicalReciptsClassifyRequest.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalReciptsClassifyController.java diff --git a/api-third/src/main/java/com/heyu/api/baidu/handle/medical/BMedicalInvoiceHandle.java b/api-third/src/main/java/com/heyu/api/baidu/handle/medical/BMedicalInvoiceHandle.java index 99daa1a..d918107 100644 --- a/api-third/src/main/java/com/heyu/api/baidu/handle/medical/BMedicalInvoiceHandle.java +++ b/api-third/src/main/java/com/heyu/api/baidu/handle/medical/BMedicalInvoiceHandle.java @@ -58,7 +58,7 @@ public class BMedicalInvoiceHandle extends BaiduBaseHandle { + @Override + public String getUri() { + return "/rest/2.0/ocr/v1/medical_recipts_classify"; + } + + @Override + public String check(BMedicalReciptsClassifyRequest request) { + return checkSimpleProbabilityLocation(request); + } + + @Override + public String getContent(BMedicalReciptsClassifyRequest request) { + return getSimpleProbabilityLocationContent(request).toString(); + } +} diff --git a/api-third/src/main/java/com/heyu/api/baidu/request/medical/BMedicalReciptsClassifyHandle.java b/api-third/src/main/java/com/heyu/api/baidu/request/medical/BMedicalReciptsClassifyHandle.java deleted file mode 100644 index d567e77..0000000 --- a/api-third/src/main/java/com/heyu/api/baidu/request/medical/BMedicalReciptsClassifyHandle.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.heyu.api.baidu.request.medical; - - -import com.heyu.api.baidu.BaiduBaseHandle; -import com.heyu.api.baidu.response.medical.BMedicalSurgeryResp; -import org.springframework.stereotype.Component; - -/** - * https://console.bce.baidu.com/support/?_=1740575657628×tamp=1740582858429#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8C%BB%E7%96%97%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fmedical_recipts_classify&method=post - *

- * 医疗票据类别检测 - */ -@Component -public class BMedicalReciptsClassifyHandle extends BaiduBaseHandle { - @Override - public String getUri() { - return "/rest/2.0/ocr/v1/medical_recipts_classify"; - } - - @Override - public String check(BMedicalSurgeryRequest bMedicalSurgeryRequest) { - return checkSimpleProbabilityLocation(bMedicalSurgeryRequest); - } - - @Override - public String getContent(BMedicalSurgeryRequest bMedicalSurgeryRequest) { - return getSimpleProbabilityLocationContent(bMedicalSurgeryRequest).toString(); - } -} diff --git a/api-third/src/main/java/com/heyu/api/baidu/request/medical/BMedicalReciptsClassifyRequest.java b/api-third/src/main/java/com/heyu/api/baidu/request/medical/BMedicalReciptsClassifyRequest.java new file mode 100644 index 0000000..4e9e485 --- /dev/null +++ b/api-third/src/main/java/com/heyu/api/baidu/request/medical/BMedicalReciptsClassifyRequest.java @@ -0,0 +1,8 @@ +package com.heyu.api.baidu.request.medical; + +import com.heyu.api.baidu.request.BSimpleProbabilityLocationRequest; +import lombok.Data; + +@Data +public class BMedicalReciptsClassifyRequest extends BSimpleProbabilityLocationRequest { +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalDetailController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalDetailController.java index 6c94eb3..d76dc18 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalDetailController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalDetailController.java @@ -2,75 +2,26 @@ package com.heyu.api.controller.medical; import com.heyu.api.baidu.handle.medical.BMedicalDetailHandle; import com.heyu.api.baidu.request.medical.BMedicalDetailRequest; -import com.heyu.api.baidu.response.medical.BMedicalDetailResp; import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.ocr.BaiduOcrResult; import com.heyu.api.data.annotation.CacheResult; import com.heyu.api.data.annotation.NotIntercept; -import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.R; -import com.heyu.api.resp.medical.MedicalDetailResp; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; - - -/** - * https://console.bce.baidu.com/support/?_=1740575657628×tamp=1740580669633#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8C%BB%E7%96%97%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fmedical_detail&method=post - * 医疗费用明细识别 - *

- *

- * 接口描述 - * 支持识别全国医疗费用明细的姓名、日期、病人ID、总金额等关键字段,支持识别费用明细项目清单,包含项目类型、项目名称、单价、数量、规格、金额,其中北京地区识别效果最佳。 - */ -@Slf4j @RestController -@RequestMapping("/medical") +@RequestMapping("/medical/detail") @NotIntercept public class MedicalDetailController extends BaseController { @Autowired private BMedicalDetailHandle bMedicalDetailHandle; - - @RequestMapping("/detail") + @RequestMapping("/recognize") @CacheResult - public R detail(BMedicalDetailRequest req) { - - - MedicalDetailResp resp = new MedicalDetailResp(); - ApiR bR = bMedicalDetailHandle.handle(req); - if (bR.isSuccess()) { - BMedicalDetailResp bMedicalDetailResp = bR.getData(); - BMedicalDetailResp.WordsResultDTO wordsResultDTO = bMedicalDetailResp.getWordsResult(); - - - resp.setPatient(wordsResultDTO.getPatientID().getWord()); //病人ID - resp.setTotalAmount(wordsResultDTO.getTotalAmount().getWord()); //总金额 - resp.setDate(wordsResultDTO.getDate().getWord()); //日期 - resp.setName(wordsResultDTO.getName().getWord()); //姓名 - - if (CollectionUtils.isNotEmpty(wordsResultDTO.getCostDetail())) { - List> list = new ArrayList<>(); - for (List costDetailDTOS : wordsResultDTO.getCostDetail()) { - List list1 = new ArrayList<>(); - for (BMedicalDetailResp.WordsResultDTO.CostDetailDTO costDetailDTO : costDetailDTOS) { - MedicalDetailResp.CostDetailDTO cost = new MedicalDetailResp.CostDetailDTO(); - cost.setWord(costDetailDTO.getWord()); - cost.setWordName(costDetailDTO.getWordName()); - list1.add(cost); - } - list.add(list1); - } - resp.setCostDetail(list); - } - } - return R.error(); + public R recognize(BMedicalDetailRequest request) { + return BaiduOcrResult.raw(bMedicalDetailHandle.handle(request)); } - - } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalInvoiceController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalInvoiceController.java index af6ffb0..de868e1 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalInvoiceController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalInvoiceController.java @@ -1,142 +1,27 @@ package com.heyu.api.controller.medical; - import com.heyu.api.baidu.handle.medical.BMedicalInvoiceHandle; import com.heyu.api.baidu.request.medical.BMedicalInvoiceRequest; -import com.heyu.api.baidu.response.medical.BMedicalInvoiceResp; import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.ocr.BaiduOcrResult; import com.heyu.api.data.annotation.CacheResult; import com.heyu.api.data.annotation.NotIntercept; -import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.R; -import com.heyu.api.resp.medical.MedicalInvoiceResp; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; - - -/*** - * https://console.bce.baidu.com/support/?_=1740575657628×tamp=1740580001377#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8C%BB%E7%96%97%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fmedical_invoice&method=post - * - *医疗发票识别 - * - * - * 接口描述 - * 支持识别全国各地门诊/住院发票的全字段信息,包括业务流水号、发票号、姓名、性别、社保卡号、金额大/小写、收款单位、省市、医保统筹支付、个人账户支付等关键字段,及收费项目明细、各省直辖市的专有信息, - * 其中北京/广东/河北/河南/江苏/山东/上海/天津/浙江等地区票据识别效果较佳。 - * 支持识别收费项目明细,并可根据不同省市地区返回对应的识别信息,同时支持收费项目信息的医保三目录信息核验,支持包括北京、上海、广州、深圳等21 个城市的医保三目录信息核验。 - */ - - -@Slf4j @RestController -@RequestMapping("/medical") +@RequestMapping("/medical/invoice") @NotIntercept public class MedicalInvoiceController extends BaseController { - @Autowired private BMedicalInvoiceHandle bMedicalInvoiceHandle; - @RequestMapping("/invoice") + @RequestMapping("/recognize") @CacheResult - public R invoice(BMedicalInvoiceRequest req) { - MedicalInvoiceResp resp = new MedicalInvoiceResp(); - - ApiR bR = bMedicalInvoiceHandle.handle(req); - if (bR.isSuccess()) { - BMedicalInvoiceResp bMedicalInvoiceResp = bR.getData(); - BMedicalInvoiceResp.WordsResultDTO wordsResultDTO = bMedicalInvoiceResp.getWordsResult(); - - resp.setProvince(bMedicalInvoiceResp.getProvince()); // 省市:支持返回以下省市 , n北京/广东/河北/河南/江苏/山东/上海/天津/浙江等 - resp.setInvoiceType(bMedicalInvoiceResp.getInvoiceType()); //票据种类 - resp.setAmountInWords(wordsResultDTO.getAmountInWords().getWord()); //大写合计金额 - resp.setSex(wordsResultDTO.getAmountInWords().getWord()); //性别 - resp.setInsuranceType(wordsResultDTO.getInsuranceType().getWord()); //医保类型 - resp.setName(wordsResultDTO.getName().getWord()); //姓名 - resp.setSocialSecurityNum(wordsResultDTO.getSocialSecurityNum().getWord()); //社保卡号 - resp.setDischargeDate(wordsResultDTO.getDischargeDate().getWord()); //出院时间 - resp.setHospitalNum(wordsResultDTO.getHospitalNum().getWord()); // 住院号 - resp.setHospitalName(wordsResultDTO.getHospitalName().getWord()); //医院名称 - //地区字段:根据省市返回改地区特有的字段 - resp.setClinicNum(wordsResultDTO.getClinicNum().getWord()); // 门诊号 - resp.setAmountInFiguers(wordsResultDTO.getAmountInFiguers().getWord()); //小写合计金额 - resp.setAdmissionDate(wordsResultDTO.getAdmissionDate().getWord()); // 入院时间 - resp.setHospitalType(wordsResultDTO.getHospitalType().getWord()); //医疗机构类型 - resp.setRefundAmount(wordsResultDTO.getRefundAmount().getWord()); //退费金额 - resp.setDate(wordsResultDTO.getDate().getWord()); //开票日期 - resp.setChargingUnit(wordsResultDTO.getChargingUnit().getWord()); //收款单位 - resp.setPaymentAmount(wordsResultDTO.getPaymentAmount().getWord()); //补缴金额 - resp.setPrepayAmount(wordsResultDTO.getPaymentAmount().getWord()); // 预缴金额 - resp.setPersonalPayment(wordsResultDTO.getPersonalPayment().getWord()); //个人账户支付 - resp.setHospitalDay(wordsResultDTO.getHospitalDay().getWord()); //住院天数 - resp.setBusinessNum(wordsResultDTO.getBusinessNum().getWord()); //业务流水号 - resp.setInsurancePayment(wordsResultDTO.getInsurancePayment().getWord()); //医保统筹支付 - resp.setPayee(wordsResultDTO.getPayee().getWord()); //收款人 - resp.setRecordNum(wordsResultDTO.getRecordNum().getWord()); //病例号 - resp.setInvoiceNum(wordsResultDTO.getInvoiceNum().getWord()); //发票号码 - - List< List> costCategories = new ArrayList<>(); - if(CollectionUtils.isNotEmpty(wordsResultDTO.getCostCategories())){ - for (List costCategory : wordsResultDTO.getCostCategories()) { - List cost = new ArrayList<>(); - for (BMedicalInvoiceResp.WordsResultDTO.CostCategoriesDTO costCategoriesDTO : costCategory) { - MedicalInvoiceResp.CostDTO costDTO = new MedicalInvoiceResp.CostDTO(); - costDTO.setName(costCategoriesDTO.getName()); //字段名,包括:收费项目、金额 - costDTO.setWord(costCategoriesDTO.getWord()); //name字段对应的识别结果 - costDTO.setMediInfo(costCategoriesDTO.getMediInfo()); //医保目录查询结果,**当 medi_query 参数存在时,仅在「收费项目」的数组里返回,**以下参数同此说明 - costDTO.setMediCheck(costCategoriesDTO.getMediCheck()); //查询是否成功,“1”表示成功,“0”表示不成功 - costDTO.setMediName(costCategoriesDTO.getMediName()); //药品名 - costDTO.setMediType(costCategoriesDTO.getMediType()); //医保类别 - costDTO.setMediRegion(costCategoriesDTO.getMediRegion()); //医保目录的城市 - costDTO.setMediCode(costCategoriesDTO.getMediCode()); // 药品编码 - costDTO.setMediRegister(costCategoriesDTO.getMediRegister()); // 药品注册号 - cost.add(costDTO); - } - costCategories.add(cost); - } - } - - - resp.setCostCategories(costCategories); //项目大类:治疗费、检查费等项目大类 - List regionSupplement = new ArrayList<>(); //地区字段:根据省市返回改地区特有的字段 - if(CollectionUtils.isNotEmpty(wordsResultDTO.getRegionSupplement())){ - for (BMedicalInvoiceResp.WordsResultDTO.RegionSupplementDTO regionSupplementDTO : wordsResultDTO.getRegionSupplement()) { - MedicalInvoiceResp.CostDTO costDTO = new MedicalInvoiceResp.CostDTO(); - costDTO.setName(regionSupplementDTO.getName()); - costDTO.setWord(regionSupplementDTO.getWord()); - } - } - resp.setRegionSupplement(regionSupplement); - List> costDetail = new ArrayList<>(); //明细类别:药物/检查的明细类别 - - if(CollectionUtils.isNotEmpty(wordsResultDTO.getCostDetail())){ - for (List costDetailList : wordsResultDTO.getCostDetail()) { - List cost = new ArrayList<>(); - for (BMedicalInvoiceResp.WordsResultDTO.CostDetailDTO costCategoriesDTO : costDetailList) { - MedicalInvoiceResp.CostDTO costDTO = new MedicalInvoiceResp.CostDTO(); - costDTO.setName(costCategoriesDTO.getName()); //字段名,包括:收费项目、金额 - costDTO.setWord(costCategoriesDTO.getWord()); //name字段对应的识别结果 - costDTO.setMediInfo(costCategoriesDTO.getMediInfo()); //医保目录查询结果,**当 medi_query 参数存在时,仅在「收费项目」的数组里返回,**以下参数同此说明 - costDTO.setMediCheck(costCategoriesDTO.getMediCheck()); //查询是否成功,“1”表示成功,“0”表示不成功 - costDTO.setMediName(costCategoriesDTO.getMediName()); //药品名 - costDTO.setMediType(costCategoriesDTO.getMediType()); //医保类别 - costDTO.setMediRegion(costCategoriesDTO.getMediRegion()); //医保目录的城市 - costDTO.setMediCode(costCategoriesDTO.getMediCode()); // 药品编码 - costDTO.setMediRegister(costCategoriesDTO.getMediRegister()); // 药品注册号 - cost.add(costDTO); - } - costDetail.add(cost); - } - } - resp.setCostDetail(costDetail); //明细类别:药物/检查的明细类别 - - } - return R.error(); + public R recognize(BMedicalInvoiceRequest request) { + return BaiduOcrResult.raw(bMedicalInvoiceHandle.handle(request)); } } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalPrescriptionController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalPrescriptionController.java index c868261..29914b5 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalPrescriptionController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalPrescriptionController.java @@ -1,94 +1,27 @@ package com.heyu.api.controller.medical; - import com.heyu.api.baidu.handle.medical.BMedicalPrescriptionHandle; import com.heyu.api.baidu.request.medical.BMedicalPrescriptionRequest; -import com.heyu.api.baidu.response.medical.BMedicalPrescriptionResp; import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.ocr.BaiduOcrResult; import com.heyu.api.data.annotation.CacheResult; import com.heyu.api.data.annotation.NotIntercept; -import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.R; -import com.heyu.api.resp.medical.MedicalOutpatientResp; -import com.heyu.api.resp.medical.MedicalPrescriptionResp; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; - -/*** - * - * - * - * https://console.bce.baidu.com/support/?_=1740575657628×tamp=1740582532897#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8C%BB%E7%96%97%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fmedical_prescription&method=post - * - *处方笺识别 - * - * - * 接口描述 - * 支持识别全国各地各医院处方笺的姓名、日期、病人ID、科别 4个关键字段,及表格区清单项目名称、规格、单价、数量、金额、频率、用量、用法等字段。 - * - */ - -@Slf4j @RestController -@RequestMapping("/medical") +@RequestMapping("/medical/prescription") @NotIntercept public class MedicalPrescriptionController extends BaseController { - @Autowired private BMedicalPrescriptionHandle bMedicalPrescriptionHandle; - - @RequestMapping("/prescription") + @RequestMapping("/recognize") @CacheResult - public R prescription(BMedicalPrescriptionRequest req) { - MedicalPrescriptionResp resp = new MedicalPrescriptionResp(); - - ApiR bR = bMedicalPrescriptionHandle.handle(req); - if (bR.isSuccess()) { - - BMedicalPrescriptionResp bMedicalPrescriptionResp = bR.getData(); - BMedicalPrescriptionResp.WordsResultDTO wordsResultDTO = bMedicalPrescriptionResp.getWordsResult(); - - - List commonData = new ArrayList<>(); - - if (CollectionUtils.isNotEmpty(wordsResultDTO.getCommonData())) { - for (BMedicalPrescriptionResp.WordsResultDTO.CommonDataDTO commonDatum : wordsResultDTO.getCommonData()) { - MedicalOutpatientResp.DataDTO dataDTO = new MedicalOutpatientResp.DataDTO(); - dataDTO.setWordName(commonDatum.getWordName()); - dataDTO.setWord(commonDatum.getWord()); - commonData.add(dataDTO); - } - } - resp.setCommonData(commonData); - - List> costDetail = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(wordsResultDTO.getCostDetail())) { - - for (List costDetailDTOS : wordsResultDTO.getCostDetail()) { - - List dataDTO = new ArrayList<>(); - for (BMedicalPrescriptionResp.WordsResultDTO.CostDetailDTO costDetailDTO : costDetailDTOS) { - MedicalOutpatientResp.DataDTO dataDTO1 = new MedicalOutpatientResp.DataDTO(); - dataDTO1.setWordName(costDetailDTO.getWordName()); - dataDTO1.setWord(costDetailDTO.getWord()); - dataDTO.add(dataDTO1); - } - costDetail.add(dataDTO); - } - } - resp.setCostDetail(costDetail); - } - - - return R.error(bR.getErrorMsg()); - + public R recognize(BMedicalPrescriptionRequest request) { + return BaiduOcrResult.raw(bMedicalPrescriptionHandle.handle(request)); } -} \ No newline at end of file +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalReciptsClassifyController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalReciptsClassifyController.java new file mode 100644 index 0000000..57c579b --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalReciptsClassifyController.java @@ -0,0 +1,27 @@ +package com.heyu.api.controller.medical; + +import com.heyu.api.baidu.handle.medical.BMedicalReciptsClassifyHandle; +import com.heyu.api.baidu.request.medical.BMedicalReciptsClassifyRequest; +import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.ocr.BaiduOcrResult; +import com.heyu.api.data.annotation.CacheResult; +import com.heyu.api.data.annotation.NotIntercept; +import com.heyu.api.data.utils.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/medical/receipts/classify") +@NotIntercept +public class MedicalReciptsClassifyController extends BaseController { + + @Autowired + private BMedicalReciptsClassifyHandle bMedicalReciptsClassifyHandle; + + @RequestMapping("/recognize") + @CacheResult + public R recognize(BMedicalReciptsClassifyRequest request) { + return BaiduOcrResult.raw(bMedicalReciptsClassifyHandle.handle(request)); + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalRecordController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalRecordController.java index 9265519..e4f3c3b 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalRecordController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalRecordController.java @@ -1,67 +1,27 @@ package com.heyu.api.controller.medical; - import com.heyu.api.baidu.handle.medical.BMedicalRecordHandle; import com.heyu.api.baidu.request.medical.BMedicalRecordRequest; -import com.heyu.api.baidu.response.medical.BMedicalRecordResp; import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.ocr.BaiduOcrResult; import com.heyu.api.data.annotation.CacheResult; import com.heyu.api.data.annotation.NotIntercept; -import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.R; -import com.heyu.api.resp.medical.MedicalRecordResp; -import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; - - -/** - * https://console.bce.baidu.com/support/?_=1740575657628×tamp=1740581634871#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8C%BB%E7%96%97%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fmedical_record&method=post - * - * 病案首页识别 - * - *接口描述 - * 支持识别全国各地病案首页的病案号、姓名、性别、出生日期、身份证号、出/入院科别、住院次数、药物过敏情况等 15 个关键字段,其中北京地区票据识别效果最佳 - * - */ -@Slf4j @RestController -@RequestMapping("/medical") +@RequestMapping("/medical/record") @NotIntercept public class MedicalRecordController extends BaseController { - @Autowired private BMedicalRecordHandle bMedicalRecordHandle; - - @RequestMapping("/record") + @RequestMapping("/recognize") @CacheResult - public R record(BMedicalRecordRequest req) { - MedicalRecordResp resp = new MedicalRecordResp(); - ApiR bR = bMedicalRecordHandle.handle(req); - if (bR.isSuccess()) { - BMedicalRecordResp bMedicalRecordResp = bR.getData(); - BMedicalRecordResp.WordsResultDTO wordsResultDTO = bMedicalRecordResp.getWordsResult(); - resp.setNation(wordsResultDTO.getNation().getWord()); //民族 - resp.setAllergy(wordsResultDTO.getAllergy().getWord()); //药物过敏 - resp.setSex(wordsResultDTO.getSex().getWord()); // 性别 - resp.setBirthday(wordsResultDTO.getBirthday().getWord()); //出生日期 - resp.setNationality(wordsResultDTO.getNationality().getWord()); //国籍 - resp.setName(wordsResultDTO.getName().getWord()); //姓名 - resp.setMaritalStatus(wordsResultDTO.getMaritalStatus().getWord()); //婚姻 - resp.setHospitalDay(wordsResultDTO.getHospitalDay().getWord()); //住院次数 - resp.setAdmissionDepartment(wordsResultDTO.getAdmissionDepartment().getWord()); // 入院科别 - resp.setId(wordsResultDTO.getId().getWord()); //身份证号 - resp.setDischargeDepartment(wordsResultDTO.getDischargeDepartment().getWord()); //出院科别 - resp.setCareer(wordsResultDTO.getCareer().getWord()); // 职业 - resp.setAge(wordsResultDTO.getAge().getWord()); //年龄 - resp.setBloodType(wordsResultDTO.getAge().getWord()); //血型、Rh血型、ABO血型 - resp.setRecordNum(wordsResultDTO.getRecordNum().getWord()); // 病案号 - return R.ok().setData(resp); - } - return R.error(bR.getErrorMsg()); + public R recognize(BMedicalRecordRequest request) { + return BaiduOcrResult.raw(bMedicalRecordHandle.handle(request)); } } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalReportDetectionController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalReportDetectionController.java index 01cf57a..9cc72f8 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalReportDetectionController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalReportDetectionController.java @@ -1,87 +1,27 @@ package com.heyu.api.controller.medical; - import com.heyu.api.baidu.handle.medical.BMedicalReportDetectionHandle; import com.heyu.api.baidu.request.medical.BMedicalReportDetectionRequest; -import com.heyu.api.baidu.response.medical.BMedicalReportDetectionResp; +import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.ocr.BaiduOcrResult; import com.heyu.api.data.annotation.CacheResult; import com.heyu.api.data.annotation.NotIntercept; -import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.R; -import com.heyu.api.resp.medical.MedicalReportDetectionResp; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; - - -/** - * https://console.bce.baidu.com/support/?_=1740575657628×tamp=1740581217710#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8C%BB%E7%96%97%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fmedical_report_detection&method=post - *

- *

- * 医疗检验报告单识别 - * - *接口描述 - * 支持识别全国各地医疗检验报告单的姓名、性别、医院名称、报告单名称等关键字段,支持识别检查具体项目的项目名称、结果、单位、参考区间、结果提示等明细字段。 - * - */ -@Slf4j @RestController -@RequestMapping("/medical") +@RequestMapping("/medical/report/detection") @NotIntercept -public class MedicalReportDetectionController { +public class MedicalReportDetectionController extends BaseController { @Autowired private BMedicalReportDetectionHandle bMedicalReportDetectionHandle; - - @RequestMapping("/reportDetection") + @RequestMapping("/recognize") @CacheResult - public R reportDetection(BMedicalReportDetectionRequest req) { - MedicalReportDetectionResp resp = new MedicalReportDetectionResp(); - - ApiR bR = bMedicalReportDetectionHandle.handle(req); - if (bR.isSuccess()) { - BMedicalReportDetectionResp bMedicalReportDetectionResp = bR.getData(); - BMedicalReportDetectionResp.WordsResultDTO wordsResultDTO = bMedicalReportDetectionResp.getWordsResult(); - - - List> item = new ArrayList<>(); // 检查项目 - - if (CollectionUtils.isNotEmpty(wordsResultDTO.getItem())) { - for (List itemDTOS : wordsResultDTO.getItem()) { - List dataDTOS = new ArrayList<>(); - for (BMedicalReportDetectionResp.WordsResultDTO.ItemDTO itemDTO : itemDTOS) { - MedicalReportDetectionResp.DataDTO tempDataDTO = new MedicalReportDetectionResp.DataDTO(); - tempDataDTO.setWord(itemDTO.getWord()); - tempDataDTO.setWordName(itemDTO.getWordName()); - dataDTOS.add(tempDataDTO); - } - item.add(dataDTOS); - } - } - List commonData = new ArrayList<>(); // 患者具体信息 - - if (CollectionUtils.isNotEmpty(wordsResultDTO.getCommonData())) { - for (BMedicalReportDetectionResp.WordsResultDTO.CommonDataDTO commonDatum : wordsResultDTO.getCommonData()) { - MedicalReportDetectionResp.DataDTO tempDataDTO = new MedicalReportDetectionResp.DataDTO(); - tempDataDTO.setWord(commonDatum.getWord()); - tempDataDTO.setWordName(commonDatum.getWordName()); - commonData.add(tempDataDTO); - - } - } - - resp.setItem(item); - resp.setCommonData(commonData); - - - } - - return R.error(bR.getErrorMsg()); + public R recognize(BMedicalReportDetectionRequest request) { + return BaiduOcrResult.raw(bMedicalReportDetectionHandle.handle(request)); } } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalStatementController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalStatementController.java index e91f8ed..a6ed1df 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalStatementController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalStatementController.java @@ -2,67 +2,26 @@ package com.heyu.api.controller.medical; import com.heyu.api.baidu.handle.medical.BMedicalStatementHandle; import com.heyu.api.baidu.request.medical.BMedicalStatementRequest; -import com.heyu.api.baidu.response.medical.BMedicalStatementResp; import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.ocr.BaiduOcrResult; import com.heyu.api.data.annotation.CacheResult; import com.heyu.api.data.annotation.NotIntercept; -import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.R; -import com.heyu.api.resp.medical.MedicalStatementResp; -import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; - - -/** - * https://console.bce.baidu.com/support/?_=1740575657628×tamp=1740581091562#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8C%BB%E7%96%97%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fmedical_statement&method=post - *

- * 医疗费用结算单识别 - * - * - * 接口描述 - * 支持识别全国医疗费用结算单的姓名、出/入院时间、发票总金额、自费金额、医保支付金额等 6 个关键字段,其中北京地区票据识别效果最佳。 - */ -@Slf4j @RestController -@RequestMapping("/medical") +@RequestMapping("/medical/statement") @NotIntercept public class MedicalStatementController extends BaseController { - @Autowired private BMedicalStatementHandle bMedicalStatementHandle; - - @RequestMapping("/statement") + @RequestMapping("/recognize") @CacheResult - public R statement(BMedicalStatementRequest req) { - - MedicalStatementResp resp = new MedicalStatementResp(); - - ApiR bR = bMedicalStatementHandle.handle(req); - - - if (bR.isSuccess()) { - - BMedicalStatementResp bMedicalStatementResp = bR.getData(); - BMedicalStatementResp.WordResultDTO wordResultDTO = bMedicalStatementResp.getWordResult(); - - - resp.setAmountInFiguers(wordResultDTO.getAmountInFiguers().getWord()); //发票总金额 - resp.setMedicalInsuranceAmount(wordResultDTO.getMedicalInsuranceAmount().getWord()); // 医保支付 - resp.setSelfPaymentAmount(wordResultDTO.getSelfPaymentAmount().getWord()); // 全自费 - resp.setAdmissionDate(wordResultDTO.getAdmissionDate().getWord()); //入院时间 - resp.setDischargeDate(wordResultDTO.getDischargeDate().getWord()); //出院时间 - resp.setName(wordResultDTO.getName().getWord()); //姓名 - - return R.ok().setData(resp); - - - } - - return R.error(bR.getErrorMsg()); + public R recognize(BMedicalStatementRequest request) { + return BaiduOcrResult.raw(bMedicalStatementHandle.handle(request)); } } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalSummaryController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalSummaryController.java index 34b0b3a..76b44f1 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalSummaryController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalSummaryController.java @@ -1,72 +1,27 @@ package com.heyu.api.controller.medical; - import com.heyu.api.baidu.handle.medical.BMedicalSummaryHandle; import com.heyu.api.baidu.request.medical.BMedicalSummaryRequest; -import com.heyu.api.baidu.response.medical.BMedicalSummaryResp; import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.ocr.BaiduOcrResult; import com.heyu.api.data.annotation.CacheResult; import com.heyu.api.data.annotation.NotIntercept; -import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.R; -import com.heyu.api.resp.medical.MedicalSummaryResp; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; - - -/*** - * - * https://console.bce.baidu.com/support/?_=1740575657628×tamp=1740581767882#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8C%BB%E7%96%97%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fmedical_summary&method=post - * - * - *出院小结识别 - *接口描述 - * 支持识别全国各地各医院诊断证明的姓名、性别、年龄、科室、入院时间、出院时间、住院号、出院诊断、出院医嘱 9个关键字段。 - * - * - * - */ -@Slf4j @RestController -@RequestMapping("/medical") +@RequestMapping("/medical/summary") @NotIntercept public class MedicalSummaryController extends BaseController { @Autowired private BMedicalSummaryHandle bMedicalSummaryHandle; - - @RequestMapping("/summary") + @RequestMapping("/recognize") @CacheResult - public R statement(BMedicalSummaryRequest req) { - List respList = new ArrayList<>(); - - ApiR bR = bMedicalSummaryHandle.handle(req); - if (bR.isSuccess()) { - BMedicalSummaryResp bMedicalSummaryResp = bR.getData(); - List wordsResultDTOS = bMedicalSummaryResp.getWordsResult(); - - if(CollectionUtils.isNotEmpty(wordsResultDTOS)){ - for (BMedicalSummaryResp.WordsResultDTO wordsResultDTO : wordsResultDTOS) { - - MedicalSummaryResp medicalSummaryResp = new MedicalSummaryResp(); - medicalSummaryResp.setWordName(wordsResultDTO.getWordName()); - medicalSummaryResp.setWord(wordsResultDTO.getWord()); - respList.add(medicalSummaryResp); - } - - } - return R.ok().setData(respList); - } - return R.error(bR.getErrorMsg()); - + public R recognize(BMedicalSummaryRequest request) { + return BaiduOcrResult.raw(bMedicalSummaryHandle.handle(request)); } - - } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalSummaryDiagnosisController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalSummaryDiagnosisController.java index ba0ea36..95e1b5a 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalSummaryDiagnosisController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalSummaryDiagnosisController.java @@ -2,70 +2,26 @@ package com.heyu.api.controller.medical; import com.heyu.api.baidu.handle.medical.BMedicalSummaryDiagnosisHandle; import com.heyu.api.baidu.request.medical.BMedicalSummaryDiagnosisRequest; -import com.heyu.api.baidu.response.medical.BMedicalSummaryDiagnosisResp; import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.ocr.BaiduOcrResult; import com.heyu.api.data.annotation.CacheResult; import com.heyu.api.data.annotation.NotIntercept; -import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.R; -import com.heyu.api.resp.medical.MedicalSummaryDiagnosisResp; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; - - - -/*** - * https://console.bce.baidu.com/support/?_=1740575657628×tamp=1740582137426#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8C%BB%E7%96%97%E7%A5%A8%E6%8D%AEOCR&api=%2Frest%2F2.0%2Focr%2Fv1%2Fmedical_summary_diagnosis&method=post - * - * - * 诊断证明识别 - * - *接口描述 - * 支持识别全国各地各医院诊断证明的姓名、性别、年龄 - * - */ -@Slf4j @RestController -@RequestMapping("/medical") +@RequestMapping("/medical/summary/diagnosis") @NotIntercept public class MedicalSummaryDiagnosisController extends BaseController { - @Autowired private BMedicalSummaryDiagnosisHandle bMedicalSummaryDiagnosisHandle; - - @RequestMapping("/summaryDiagnosis") + @RequestMapping("/recognize") @CacheResult - public R summaryDiagnosis(BMedicalSummaryDiagnosisRequest req) { - - List respList = new ArrayList<>(); - - ApiR bR = bMedicalSummaryDiagnosisHandle.handle(req); - if (bR.isSuccess()) { - BMedicalSummaryDiagnosisResp bMedicalSummaryDiagnosisResp = bR.getData(); - List wordsResult = bMedicalSummaryDiagnosisResp.getWordsResult(); - - if (CollectionUtils.isNotEmpty(wordsResult)) { - for (BMedicalSummaryDiagnosisResp.WordsResultDTO resultDTO : wordsResult) { - MedicalSummaryDiagnosisResp medicalSummaryDiagnosisResp = new MedicalSummaryDiagnosisResp(); - medicalSummaryDiagnosisResp.setWord(resultDTO.getWord()); - medicalSummaryDiagnosisResp.setWordName(resultDTO.getWordName()); - respList.add(medicalSummaryDiagnosisResp); - } - - } - - return R.ok().setData(respList); - - } - - return R.error(bR.getErrorMsg()); + public R recognize(BMedicalSummaryDiagnosisRequest request) { + return BaiduOcrResult.raw(bMedicalSummaryDiagnosisHandle.handle(request)); } -} \ No newline at end of file +}