1.医疗票据文字识别的代码改造和优化
This commit is contained in:
parent
80857d6b62
commit
e05fe180dd
@ -58,7 +58,7 @@ public class BMedicalInvoiceHandle extends BaiduBaseHandle<BMedicalInvoiceReques
|
|||||||
if (checkNotTrueFalse(bMedicalInvoiceRequest.getProbability())) {
|
if (checkNotTrueFalse(bMedicalInvoiceRequest.getProbability())) {
|
||||||
return "probability 必须为" + trueOrFalse + ",是否返回字段识别结果的置信度";
|
return "probability 必须为" + trueOrFalse + ",是否返回字段识别结果的置信度";
|
||||||
}
|
}
|
||||||
if (!suport.containsKey(bMedicalInvoiceRequest.getMediQuery())) {
|
if (StringUtils.isNotBlank(bMedicalInvoiceRequest.getMediQuery()) && !suport.containsKey(bMedicalInvoiceRequest.getMediQuery())) {
|
||||||
return "mediQuery必须为" + StringUtils.printMap(suport) + ",医保三目录查询,可选值为对应城市代码,可缺省,当此参数的输入值不为对应城市编码时,即进行全量查询,默认进行全量查询,如不需要进行医保三目录查询,无需添加此参数 ";
|
return "mediQuery必须为" + StringUtils.printMap(suport) + ",医保三目录查询,可选值为对应城市代码,可缺省,当此参数的输入值不为对应城市编码时,即进行全量查询,默认进行全量查询,如不需要进行医保三目录查询,无需添加此参数 ";
|
||||||
}
|
}
|
||||||
return checkImageUri(bMedicalInvoiceRequest);
|
return checkImageUri(bMedicalInvoiceRequest);
|
||||||
|
|||||||
@ -0,0 +1,24 @@
|
|||||||
|
package com.heyu.api.baidu.handle.medical;
|
||||||
|
|
||||||
|
import com.heyu.api.baidu.BaiduBaseHandle;
|
||||||
|
import com.heyu.api.baidu.request.medical.BMedicalReciptsClassifyRequest;
|
||||||
|
import com.heyu.api.baidu.response.medical.BMedicalReciptsClassifyResp;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class BMedicalReciptsClassifyHandle extends BaiduBaseHandle<BMedicalReciptsClassifyRequest, BMedicalReciptsClassifyResp> {
|
||||||
|
@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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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
|
|
||||||
* <p>
|
|
||||||
* 医疗票据类别检测
|
|
||||||
*/
|
|
||||||
@Component
|
|
||||||
public class BMedicalReciptsClassifyHandle extends BaiduBaseHandle<BMedicalSurgeryRequest, BMedicalSurgeryResp> {
|
|
||||||
@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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -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 {
|
||||||
|
}
|
||||||
@ -2,75 +2,26 @@ package com.heyu.api.controller.medical;
|
|||||||
|
|
||||||
import com.heyu.api.baidu.handle.medical.BMedicalDetailHandle;
|
import com.heyu.api.baidu.handle.medical.BMedicalDetailHandle;
|
||||||
import com.heyu.api.baidu.request.medical.BMedicalDetailRequest;
|
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.BaseController;
|
||||||
|
import com.heyu.api.controller.ocr.BaiduOcrResult;
|
||||||
import com.heyu.api.data.annotation.CacheResult;
|
import com.heyu.api.data.annotation.CacheResult;
|
||||||
import com.heyu.api.data.annotation.NotIntercept;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
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
|
|
||||||
* 医疗费用明细识别
|
|
||||||
* <p>
|
|
||||||
* <p>
|
|
||||||
* 接口描述
|
|
||||||
* 支持识别全国医疗费用明细的姓名、日期、病人ID、总金额等关键字段,支持识别费用明细项目清单,包含项目类型、项目名称、单价、数量、规格、金额,其中北京地区识别效果最佳。
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/medical")
|
@RequestMapping("/medical/detail")
|
||||||
@NotIntercept
|
@NotIntercept
|
||||||
public class MedicalDetailController extends BaseController {
|
public class MedicalDetailController extends BaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BMedicalDetailHandle bMedicalDetailHandle;
|
private BMedicalDetailHandle bMedicalDetailHandle;
|
||||||
|
|
||||||
|
@RequestMapping("/recognize")
|
||||||
@RequestMapping("/detail")
|
|
||||||
@CacheResult
|
@CacheResult
|
||||||
public R detail(BMedicalDetailRequest req) {
|
public R recognize(BMedicalDetailRequest request) {
|
||||||
|
return BaiduOcrResult.raw(bMedicalDetailHandle.handle(request));
|
||||||
|
|
||||||
MedicalDetailResp resp = new MedicalDetailResp();
|
|
||||||
ApiR<BMedicalDetailResp> 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<MedicalDetailResp.CostDetailDTO>> list = new ArrayList<>();
|
|
||||||
for (List<BMedicalDetailResp.WordsResultDTO.CostDetailDTO> costDetailDTOS : wordsResultDTO.getCostDetail()) {
|
|
||||||
List<MedicalDetailResp.CostDetailDTO> 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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,142 +1,27 @@
|
|||||||
package com.heyu.api.controller.medical;
|
package com.heyu.api.controller.medical;
|
||||||
|
|
||||||
|
|
||||||
import com.heyu.api.baidu.handle.medical.BMedicalInvoiceHandle;
|
import com.heyu.api.baidu.handle.medical.BMedicalInvoiceHandle;
|
||||||
import com.heyu.api.baidu.request.medical.BMedicalInvoiceRequest;
|
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.BaseController;
|
||||||
|
import com.heyu.api.controller.ocr.BaiduOcrResult;
|
||||||
import com.heyu.api.data.annotation.CacheResult;
|
import com.heyu.api.data.annotation.CacheResult;
|
||||||
import com.heyu.api.data.annotation.NotIntercept;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
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
|
@RestController
|
||||||
@RequestMapping("/medical")
|
@RequestMapping("/medical/invoice")
|
||||||
@NotIntercept
|
@NotIntercept
|
||||||
public class MedicalInvoiceController extends BaseController {
|
public class MedicalInvoiceController extends BaseController {
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BMedicalInvoiceHandle bMedicalInvoiceHandle;
|
private BMedicalInvoiceHandle bMedicalInvoiceHandle;
|
||||||
|
|
||||||
@RequestMapping("/invoice")
|
@RequestMapping("/recognize")
|
||||||
@CacheResult
|
@CacheResult
|
||||||
public R invoice(BMedicalInvoiceRequest req) {
|
public R recognize(BMedicalInvoiceRequest request) {
|
||||||
MedicalInvoiceResp resp = new MedicalInvoiceResp();
|
return BaiduOcrResult.raw(bMedicalInvoiceHandle.handle(request));
|
||||||
|
|
||||||
ApiR<BMedicalInvoiceResp> 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<MedicalInvoiceResp.CostDTO>> costCategories = new ArrayList<>();
|
|
||||||
if(CollectionUtils.isNotEmpty(wordsResultDTO.getCostCategories())){
|
|
||||||
for (List<BMedicalInvoiceResp.WordsResultDTO.CostCategoriesDTO> costCategory : wordsResultDTO.getCostCategories()) {
|
|
||||||
List<MedicalInvoiceResp.CostDTO> 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<MedicalInvoiceResp.CostDTO> 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<List<MedicalInvoiceResp.CostDTO>> costDetail = new ArrayList<>(); //明细类别:药物/检查的明细类别
|
|
||||||
|
|
||||||
if(CollectionUtils.isNotEmpty(wordsResultDTO.getCostDetail())){
|
|
||||||
for (List<BMedicalInvoiceResp.WordsResultDTO.CostDetailDTO> costDetailList : wordsResultDTO.getCostDetail()) {
|
|
||||||
List<MedicalInvoiceResp.CostDTO> 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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,94 +1,27 @@
|
|||||||
package com.heyu.api.controller.medical;
|
package com.heyu.api.controller.medical;
|
||||||
|
|
||||||
|
|
||||||
import com.heyu.api.baidu.handle.medical.BMedicalPrescriptionHandle;
|
import com.heyu.api.baidu.handle.medical.BMedicalPrescriptionHandle;
|
||||||
import com.heyu.api.baidu.request.medical.BMedicalPrescriptionRequest;
|
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.BaseController;
|
||||||
|
import com.heyu.api.controller.ocr.BaiduOcrResult;
|
||||||
import com.heyu.api.data.annotation.CacheResult;
|
import com.heyu.api.data.annotation.CacheResult;
|
||||||
import com.heyu.api.data.annotation.NotIntercept;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
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
|
@RestController
|
||||||
@RequestMapping("/medical")
|
@RequestMapping("/medical/prescription")
|
||||||
@NotIntercept
|
@NotIntercept
|
||||||
public class MedicalPrescriptionController extends BaseController {
|
public class MedicalPrescriptionController extends BaseController {
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BMedicalPrescriptionHandle bMedicalPrescriptionHandle;
|
private BMedicalPrescriptionHandle bMedicalPrescriptionHandle;
|
||||||
|
|
||||||
|
@RequestMapping("/recognize")
|
||||||
@RequestMapping("/prescription")
|
|
||||||
@CacheResult
|
@CacheResult
|
||||||
public R prescription(BMedicalPrescriptionRequest req) {
|
public R recognize(BMedicalPrescriptionRequest request) {
|
||||||
MedicalPrescriptionResp resp = new MedicalPrescriptionResp();
|
return BaiduOcrResult.raw(bMedicalPrescriptionHandle.handle(request));
|
||||||
|
|
||||||
ApiR<BMedicalPrescriptionResp> bR = bMedicalPrescriptionHandle.handle(req);
|
|
||||||
if (bR.isSuccess()) {
|
|
||||||
|
|
||||||
BMedicalPrescriptionResp bMedicalPrescriptionResp = bR.getData();
|
|
||||||
BMedicalPrescriptionResp.WordsResultDTO wordsResultDTO = bMedicalPrescriptionResp.getWordsResult();
|
|
||||||
|
|
||||||
|
|
||||||
List<MedicalOutpatientResp.DataDTO> 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<List<MedicalOutpatientResp.DataDTO>> costDetail = new ArrayList<>();
|
|
||||||
if (CollectionUtils.isNotEmpty(wordsResultDTO.getCostDetail())) {
|
|
||||||
|
|
||||||
for (List<BMedicalPrescriptionResp.WordsResultDTO.CostDetailDTO> costDetailDTOS : wordsResultDTO.getCostDetail()) {
|
|
||||||
|
|
||||||
List<MedicalOutpatientResp.DataDTO> 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());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,67 +1,27 @@
|
|||||||
package com.heyu.api.controller.medical;
|
package com.heyu.api.controller.medical;
|
||||||
|
|
||||||
|
|
||||||
import com.heyu.api.baidu.handle.medical.BMedicalRecordHandle;
|
import com.heyu.api.baidu.handle.medical.BMedicalRecordHandle;
|
||||||
import com.heyu.api.baidu.request.medical.BMedicalRecordRequest;
|
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.BaseController;
|
||||||
|
import com.heyu.api.controller.ocr.BaiduOcrResult;
|
||||||
import com.heyu.api.data.annotation.CacheResult;
|
import com.heyu.api.data.annotation.CacheResult;
|
||||||
import com.heyu.api.data.annotation.NotIntercept;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
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
|
@RestController
|
||||||
@RequestMapping("/medical")
|
@RequestMapping("/medical/record")
|
||||||
@NotIntercept
|
@NotIntercept
|
||||||
public class MedicalRecordController extends BaseController {
|
public class MedicalRecordController extends BaseController {
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BMedicalRecordHandle bMedicalRecordHandle;
|
private BMedicalRecordHandle bMedicalRecordHandle;
|
||||||
|
|
||||||
|
@RequestMapping("/recognize")
|
||||||
@RequestMapping("/record")
|
|
||||||
@CacheResult
|
@CacheResult
|
||||||
public R record(BMedicalRecordRequest req) {
|
public R recognize(BMedicalRecordRequest request) {
|
||||||
MedicalRecordResp resp = new MedicalRecordResp();
|
return BaiduOcrResult.raw(bMedicalRecordHandle.handle(request));
|
||||||
ApiR<BMedicalRecordResp> 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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,87 +1,27 @@
|
|||||||
package com.heyu.api.controller.medical;
|
package com.heyu.api.controller.medical;
|
||||||
|
|
||||||
|
|
||||||
import com.heyu.api.baidu.handle.medical.BMedicalReportDetectionHandle;
|
import com.heyu.api.baidu.handle.medical.BMedicalReportDetectionHandle;
|
||||||
import com.heyu.api.baidu.request.medical.BMedicalReportDetectionRequest;
|
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.CacheResult;
|
||||||
import com.heyu.api.data.annotation.NotIntercept;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
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
|
|
||||||
* <p>
|
|
||||||
* <p>
|
|
||||||
* 医疗检验报告单识别
|
|
||||||
*
|
|
||||||
*接口描述
|
|
||||||
* 支持识别全国各地医疗检验报告单的姓名、性别、医院名称、报告单名称等关键字段,支持识别检查具体项目的项目名称、结果、单位、参考区间、结果提示等明细字段。
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/medical")
|
@RequestMapping("/medical/report/detection")
|
||||||
@NotIntercept
|
@NotIntercept
|
||||||
public class MedicalReportDetectionController {
|
public class MedicalReportDetectionController extends BaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BMedicalReportDetectionHandle bMedicalReportDetectionHandle;
|
private BMedicalReportDetectionHandle bMedicalReportDetectionHandle;
|
||||||
|
|
||||||
|
@RequestMapping("/recognize")
|
||||||
@RequestMapping("/reportDetection")
|
|
||||||
@CacheResult
|
@CacheResult
|
||||||
public R reportDetection(BMedicalReportDetectionRequest req) {
|
public R recognize(BMedicalReportDetectionRequest request) {
|
||||||
MedicalReportDetectionResp resp = new MedicalReportDetectionResp();
|
return BaiduOcrResult.raw(bMedicalReportDetectionHandle.handle(request));
|
||||||
|
|
||||||
ApiR<BMedicalReportDetectionResp> bR = bMedicalReportDetectionHandle.handle(req);
|
|
||||||
if (bR.isSuccess()) {
|
|
||||||
BMedicalReportDetectionResp bMedicalReportDetectionResp = bR.getData();
|
|
||||||
BMedicalReportDetectionResp.WordsResultDTO wordsResultDTO = bMedicalReportDetectionResp.getWordsResult();
|
|
||||||
|
|
||||||
|
|
||||||
List<List<MedicalReportDetectionResp.DataDTO>> item = new ArrayList<>(); // 检查项目
|
|
||||||
|
|
||||||
if (CollectionUtils.isNotEmpty(wordsResultDTO.getItem())) {
|
|
||||||
for (List<BMedicalReportDetectionResp.WordsResultDTO.ItemDTO> itemDTOS : wordsResultDTO.getItem()) {
|
|
||||||
List<MedicalReportDetectionResp.DataDTO> 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<MedicalReportDetectionResp.DataDTO> 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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,67 +2,26 @@ package com.heyu.api.controller.medical;
|
|||||||
|
|
||||||
import com.heyu.api.baidu.handle.medical.BMedicalStatementHandle;
|
import com.heyu.api.baidu.handle.medical.BMedicalStatementHandle;
|
||||||
import com.heyu.api.baidu.request.medical.BMedicalStatementRequest;
|
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.BaseController;
|
||||||
|
import com.heyu.api.controller.ocr.BaiduOcrResult;
|
||||||
import com.heyu.api.data.annotation.CacheResult;
|
import com.heyu.api.data.annotation.CacheResult;
|
||||||
import com.heyu.api.data.annotation.NotIntercept;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
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
|
|
||||||
* <p>
|
|
||||||
* 医疗费用结算单识别
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* 接口描述
|
|
||||||
* 支持识别全国医疗费用结算单的姓名、出/入院时间、发票总金额、自费金额、医保支付金额等 6 个关键字段,其中北京地区票据识别效果最佳。
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/medical")
|
@RequestMapping("/medical/statement")
|
||||||
@NotIntercept
|
@NotIntercept
|
||||||
public class MedicalStatementController extends BaseController {
|
public class MedicalStatementController extends BaseController {
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BMedicalStatementHandle bMedicalStatementHandle;
|
private BMedicalStatementHandle bMedicalStatementHandle;
|
||||||
|
|
||||||
|
@RequestMapping("/recognize")
|
||||||
@RequestMapping("/statement")
|
|
||||||
@CacheResult
|
@CacheResult
|
||||||
public R statement(BMedicalStatementRequest req) {
|
public R recognize(BMedicalStatementRequest request) {
|
||||||
|
return BaiduOcrResult.raw(bMedicalStatementHandle.handle(request));
|
||||||
MedicalStatementResp resp = new MedicalStatementResp();
|
|
||||||
|
|
||||||
ApiR<BMedicalStatementResp> 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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,72 +1,27 @@
|
|||||||
package com.heyu.api.controller.medical;
|
package com.heyu.api.controller.medical;
|
||||||
|
|
||||||
|
|
||||||
import com.heyu.api.baidu.handle.medical.BMedicalSummaryHandle;
|
import com.heyu.api.baidu.handle.medical.BMedicalSummaryHandle;
|
||||||
import com.heyu.api.baidu.request.medical.BMedicalSummaryRequest;
|
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.BaseController;
|
||||||
|
import com.heyu.api.controller.ocr.BaiduOcrResult;
|
||||||
import com.heyu.api.data.annotation.CacheResult;
|
import com.heyu.api.data.annotation.CacheResult;
|
||||||
import com.heyu.api.data.annotation.NotIntercept;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
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
|
@RestController
|
||||||
@RequestMapping("/medical")
|
@RequestMapping("/medical/summary")
|
||||||
@NotIntercept
|
@NotIntercept
|
||||||
public class MedicalSummaryController extends BaseController {
|
public class MedicalSummaryController extends BaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BMedicalSummaryHandle bMedicalSummaryHandle;
|
private BMedicalSummaryHandle bMedicalSummaryHandle;
|
||||||
|
|
||||||
|
@RequestMapping("/recognize")
|
||||||
@RequestMapping("/summary")
|
|
||||||
@CacheResult
|
@CacheResult
|
||||||
public R statement(BMedicalSummaryRequest req) {
|
public R recognize(BMedicalSummaryRequest request) {
|
||||||
List<MedicalSummaryResp> respList = new ArrayList<>();
|
return BaiduOcrResult.raw(bMedicalSummaryHandle.handle(request));
|
||||||
|
|
||||||
ApiR<BMedicalSummaryResp> bR = bMedicalSummaryHandle.handle(req);
|
|
||||||
if (bR.isSuccess()) {
|
|
||||||
BMedicalSummaryResp bMedicalSummaryResp = bR.getData();
|
|
||||||
List<BMedicalSummaryResp.WordsResultDTO> 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());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,70 +2,26 @@ package com.heyu.api.controller.medical;
|
|||||||
|
|
||||||
import com.heyu.api.baidu.handle.medical.BMedicalSummaryDiagnosisHandle;
|
import com.heyu.api.baidu.handle.medical.BMedicalSummaryDiagnosisHandle;
|
||||||
import com.heyu.api.baidu.request.medical.BMedicalSummaryDiagnosisRequest;
|
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.BaseController;
|
||||||
|
import com.heyu.api.controller.ocr.BaiduOcrResult;
|
||||||
import com.heyu.api.data.annotation.CacheResult;
|
import com.heyu.api.data.annotation.CacheResult;
|
||||||
import com.heyu.api.data.annotation.NotIntercept;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
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
|
@RestController
|
||||||
@RequestMapping("/medical")
|
@RequestMapping("/medical/summary/diagnosis")
|
||||||
@NotIntercept
|
@NotIntercept
|
||||||
public class MedicalSummaryDiagnosisController extends BaseController {
|
public class MedicalSummaryDiagnosisController extends BaseController {
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private BMedicalSummaryDiagnosisHandle bMedicalSummaryDiagnosisHandle;
|
private BMedicalSummaryDiagnosisHandle bMedicalSummaryDiagnosisHandle;
|
||||||
|
|
||||||
|
@RequestMapping("/recognize")
|
||||||
@RequestMapping("/summaryDiagnosis")
|
|
||||||
@CacheResult
|
@CacheResult
|
||||||
public R summaryDiagnosis(BMedicalSummaryDiagnosisRequest req) {
|
public R recognize(BMedicalSummaryDiagnosisRequest request) {
|
||||||
|
return BaiduOcrResult.raw(bMedicalSummaryDiagnosisHandle.handle(request));
|
||||||
List<MedicalSummaryDiagnosisResp> respList = new ArrayList<>();
|
|
||||||
|
|
||||||
ApiR<BMedicalSummaryDiagnosisResp> bR = bMedicalSummaryDiagnosisHandle.handle(req);
|
|
||||||
if (bR.isSuccess()) {
|
|
||||||
BMedicalSummaryDiagnosisResp bMedicalSummaryDiagnosisResp = bR.getData();
|
|
||||||
List<BMedicalSummaryDiagnosisResp.WordsResultDTO> 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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user