diff --git a/api-third/src/main/java/com/heyu/api/baidu/handle/medical/BHealthReportHandle.java b/api-third/src/main/java/com/heyu/api/baidu/handle/medical/BHealthReportHandle.java index f13c81b..66c565b 100644 --- a/api-third/src/main/java/com/heyu/api/baidu/handle/medical/BHealthReportHandle.java +++ b/api-third/src/main/java/com/heyu/api/baidu/handle/medical/BHealthReportHandle.java @@ -2,8 +2,8 @@ package com.heyu.api.baidu.handle.medical; import com.heyu.api.baidu.BaiduBaseHandle; -import com.heyu.api.baidu.request.medical.BMedicalReportDetectionRequest; -import com.heyu.api.baidu.response.medical.BMedicalReportDetectionResp; +import com.heyu.api.baidu.request.medical.BHealthReportRequest; +import com.heyu.api.baidu.response.medical.BHealthReportResp; import org.springframework.stereotype.Component; /*** @@ -13,19 +13,19 @@ import org.springframework.stereotype.Component; * */ @Component -public class BHealthReportHandle extends BaiduBaseHandle { +public class BHealthReportHandle extends BaiduBaseHandle { @Override public String getUri() { return "/rest/2.0/ocr/v1/health_report"; } @Override - public String check(BMedicalReportDetectionRequest bMedicalReportDetectionRequest) { + public String check(BHealthReportRequest bMedicalReportDetectionRequest) { return checkSimpleProbabilityLocation(bMedicalReportDetectionRequest); } @Override - public String getContent(BMedicalReportDetectionRequest bMedicalReportDetectionRequest) { + public String getContent(BHealthReportRequest bMedicalReportDetectionRequest) { return getSimpleProbabilityLocationContent(bMedicalReportDetectionRequest).toString(); } } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/HealthReportController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/HealthReportController.java new file mode 100644 index 0000000..1abf68b --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/HealthReportController.java @@ -0,0 +1,70 @@ +package com.heyu.api.controller.medical; + +import com.heyu.api.baidu.handle.medical.BHealthReportHandle; +import com.heyu.api.baidu.request.medical.BHealthReportRequest; +import com.heyu.api.baidu.response.medical.BHealthReportResp; +import com.heyu.api.controller.BaseController; +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.HealthReportResp; +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=1740581406549#/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%2Fhealth_report&method=post + *医疗诊断报告单识别 + * + * + * + 接口描述 + 支持识别全国各地各医院医疗诊断报告单,包括医院名称、报告名称、姓名、性别、年龄、科室、临床诊断、报告日期、检查部位、检查方法、检查所见、检查提示、建议、肉眼可见 14个字段。 + + + */ +@Slf4j +@RestController +@RequestMapping("/health") +@NotIntercept +public class HealthReportController extends BaseController { + + + @Autowired + private BHealthReportHandle bHealthReportHandle; + + + @RequestMapping("/report") + @CacheResult + public R report(BHealthReportRequest req) { + List respList = new ArrayList<>(); + ApiR bR = bHealthReportHandle.handle(req); + if (bR.isSuccess()) { + BHealthReportResp bMedicalReportDetectionResp = bR.getData(); + if (CollectionUtils.isNotEmpty(bMedicalReportDetectionResp.getWordsResult())) { + for (BHealthReportResp.WordsResultDTO wordsResultDTO : bMedicalReportDetectionResp.getWordsResult()) { + HealthReportResp healthReportResp = new HealthReportResp(); + + healthReportResp.setWord(wordsResultDTO.getWord()); + healthReportResp.setWordName(wordsResultDTO.getWordName()); + respList.add(healthReportResp); + } + } + return R.ok().setData(respList); + } + return R.error(bR.getErrorMsg()); + + } + + +} 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 new file mode 100644 index 0000000..6c94eb3 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/medical/MedicalDetailController.java @@ -0,0 +1,76 @@ +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.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") +@NotIntercept +public class MedicalDetailController extends BaseController { + + @Autowired + private BMedicalDetailHandle bMedicalDetailHandle; + + + @RequestMapping("/detail") + @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(); + } + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/medical/HealthReportResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/medical/HealthReportResp.java new file mode 100644 index 0000000..e0175b6 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/medical/HealthReportResp.java @@ -0,0 +1,12 @@ +package com.heyu.api.resp.medical; + + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class HealthReportResp extends BaseResp { + + private String word; //字段名,包括:医院名称、报告名称、姓名、性别、年龄、科室、临床诊断、报告日期、检查部位、检查方法、检查所见、检查提示、建议、肉眼可见 + private String wordName; //word_name字段对应的识别结果 +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/medical/MedicalDetailResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/medical/MedicalDetailResp.java new file mode 100644 index 0000000..14da2e2 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/medical/MedicalDetailResp.java @@ -0,0 +1,34 @@ +package com.heyu.api.resp.medical; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + + +@Data +public class MedicalDetailResp extends BaseResp { + + private String patient; //病人ID + + private String totalAmount; //总金额 + + private String date; //日期 + + private String name; //姓名 + + + private List> costDetail; // 项目明细 + + + @NoArgsConstructor + @Data + public static class CostDetailDTO { + + private String wordName; // 字段名,包括:项目类型、项目名称、单价、数量、规格、金额 + + private String word; //word_name字段对应的识别结果 + } + +}