|
@@ -1,8 +1,5 @@
|
|
|
package com.diagbot.rule;
|
|
|
|
|
|
-import com.diagbot.biz.push.entity.Item;
|
|
|
-import com.diagbot.biz.push.entity.Lis;
|
|
|
-import com.diagbot.biz.push.entity.Pacs;
|
|
|
import com.diagbot.dto.BillMsg;
|
|
|
import com.diagbot.dto.BillNeoMaxDTO;
|
|
|
import com.diagbot.dto.NodeNeoDTO;
|
|
@@ -102,127 +99,13 @@ public class CommonRule {
|
|
|
* @param billMsgList
|
|
|
*/
|
|
|
public static void repeat24Bill(WordCrfDTO wordCrfDTO, List<BillMsg> billMsgList) {
|
|
|
- repeat24BillWithLisType(billMsgList, wordCrfDTO.getLisOrder(), TypeEnum.lis.getName()); // 化验重复开单
|
|
|
- repeat24BillWithPacsType(billMsgList, wordCrfDTO.getPacsOrder(), TypeEnum.pacs.getName()); // 辅检重复开单
|
|
|
+ repeat24BillWithType(billMsgList, wordCrfDTO.getLisOrder(), TypeEnum.lis.getName()); // 化验重复开单
|
|
|
+ repeat24BillWithType(billMsgList, wordCrfDTO.getPacsOrder(), TypeEnum.pacs.getName()); // 辅检重复开单
|
|
|
repeat24BillWithType(billMsgList, wordCrfDTO.getDrugOrder(), TypeEnum.drug.getName()); // 药品重复开单
|
|
|
repeat24BillWithType(billMsgList, wordCrfDTO.getOperationOrder(), TypeEnum.operation.getName()); // 手术重复开单
|
|
|
+ repeat24BillWithType(billMsgList, wordCrfDTO.getTransfusionOrder(), TypeEnum.transfusion.getName()); // 输血重复开单
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 24小时重复开单入口(化验)
|
|
|
- *
|
|
|
- * @param billMsgList
|
|
|
- * @param itemList
|
|
|
- * @param type
|
|
|
- */
|
|
|
- public static <T> void repeat24BillWithPacsType(List<BillMsg> billMsgList, List<Pacs> itemList, String type) {
|
|
|
- if (ListUtil.isEmpty(itemList)) {
|
|
|
- return ;
|
|
|
- }
|
|
|
- Map<String, List<Pacs>> map = EntityUtil.makeEntityListMap(itemList, "uniqueName");
|
|
|
- for (String key : map.keySet()) {
|
|
|
- List<Pacs> items = map.get(key);
|
|
|
-
|
|
|
- // 个数大于2个才比较
|
|
|
- if (ListUtil.isNotEmpty(items) && items.size() > 1) {
|
|
|
- // items 按照时间排序
|
|
|
- Collections.sort(items, new Comparator<Pacs>() {
|
|
|
- @Override
|
|
|
- public int compare(Pacs o1, Pacs o2) {
|
|
|
- if (StringUtil.isBlank(o1.getDateValue()) || StringUtil.isBlank(o2.getDateValue())) {
|
|
|
- return -1;
|
|
|
- } else {
|
|
|
- return o1.getDateValue().compareTo(o2.getDateValue());
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- // 比较时间是否在24小时内
|
|
|
- List<Date> dateList = new ArrayList<>();
|
|
|
- for (Pacs it : items) {
|
|
|
- if (StringUtil.isNotBlank(it.getDateValue())) {
|
|
|
- Date cur = CatalogueUtil.parseStringDate(it.getDateValue());
|
|
|
- // 如果为null,说明日期格式出错,不比较
|
|
|
- if (cur != null) {
|
|
|
- if (ListUtil.isNotEmpty(dateList)) {
|
|
|
- Date last = dateList.get(dateList.size() - 1);
|
|
|
- if (!CatalogueUtil.compareTime(last, cur, 60L * 24)) {
|
|
|
- BillMsg commonBillMsg = CoreUtil.getBillMsg24Repeat(
|
|
|
- it.getName(), it.getUniqueName(),
|
|
|
- it.getName(), type);
|
|
|
- billMsgList.add(commonBillMsg);
|
|
|
- break;
|
|
|
- } else {
|
|
|
- dateList.add(cur);
|
|
|
- }
|
|
|
- } else {
|
|
|
- dateList.add(cur);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 24小时重复开单入口(化验)
|
|
|
- *
|
|
|
- * @param billMsgList
|
|
|
- * @param itemList
|
|
|
- * @param type
|
|
|
- */
|
|
|
- public static <T> void repeat24BillWithLisType(List<BillMsg> billMsgList, List<Lis> itemList, String type) {
|
|
|
- if (ListUtil.isEmpty(itemList)) {
|
|
|
- return ;
|
|
|
- }
|
|
|
- Map<String, List<Lis>> map = EntityUtil.makeEntityListMap(itemList, "uniqueName");
|
|
|
- for (String key : map.keySet()) {
|
|
|
- List<Lis> items = map.get(key);
|
|
|
-
|
|
|
- // 个数大于2个才比较
|
|
|
- if (ListUtil.isNotEmpty(items) && items.size() > 1) {
|
|
|
- // items 按照时间排序
|
|
|
- Collections.sort(items, new Comparator<Lis>() {
|
|
|
- @Override
|
|
|
- public int compare(Lis o1, Lis o2) {
|
|
|
- if (StringUtil.isBlank(o1.getDateValue()) || StringUtil.isBlank(o2.getDateValue())) {
|
|
|
- return -1;
|
|
|
- } else {
|
|
|
- return o1.getDateValue().compareTo(o2.getDateValue());
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- // 比较时间是否在24小时内
|
|
|
- List<Date> dateList = new ArrayList<>();
|
|
|
- for (Lis it : items) {
|
|
|
- if (StringUtil.isNotBlank(it.getDateValue())) {
|
|
|
- Date cur = CatalogueUtil.parseStringDate(it.getDateValue());
|
|
|
- // 如果为null,说明日期格式出错,不比较
|
|
|
- if (cur != null) {
|
|
|
- if (ListUtil.isNotEmpty(dateList)) {
|
|
|
- Date last = dateList.get(dateList.size() - 1);
|
|
|
- if (!CatalogueUtil.compareTime(last, cur, 60L * 24)) {
|
|
|
- BillMsg commonBillMsg = CoreUtil.getBillMsg24Repeat(
|
|
|
- it.getName(), it.getUniqueName(),
|
|
|
- it.getName(), type);
|
|
|
- billMsgList.add(commonBillMsg);
|
|
|
- break;
|
|
|
- } else {
|
|
|
- dateList.add(cur);
|
|
|
- }
|
|
|
- } else {
|
|
|
- dateList.add(cur);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 24小时重复开单入口
|
|
|
*
|
|
@@ -230,41 +113,45 @@ public class CommonRule {
|
|
|
* @param itemList
|
|
|
* @param type
|
|
|
*/
|
|
|
- public static void repeat24BillWithType(List<BillMsg> billMsgList, List<Item> itemList, String type) {
|
|
|
+ public static <T> void repeat24BillWithType(List<BillMsg> billMsgList, List<T> itemList, String type) {
|
|
|
if (ListUtil.isEmpty(itemList)) {
|
|
|
return ;
|
|
|
}
|
|
|
- Map<String, List<Item>> map = EntityUtil.makeEntityListMap(itemList, "uniqueName");
|
|
|
+ Map<String, List<T>> map = EntityUtil.makeEntityListMap(itemList, "uniqueName");
|
|
|
for (String key : map.keySet()) {
|
|
|
- List<Item> items = map.get(key);
|
|
|
+ List<T> items = map.get(key);
|
|
|
|
|
|
// 个数大于2个才比较
|
|
|
if (ListUtil.isNotEmpty(items) && items.size() > 1) {
|
|
|
// items 按照时间排序
|
|
|
- Collections.sort(items, new Comparator<Item>() {
|
|
|
+ Collections.sort(items, new Comparator<T>() {
|
|
|
@Override
|
|
|
- public int compare(Item o1, Item o2) {
|
|
|
- if (StringUtil.isBlank(o1.getDateValue()) || StringUtil.isBlank(o2.getDateValue())) {
|
|
|
+ public int compare(T o1, T o2) {
|
|
|
+ String o1Str = (String)CoreUtil.getFieldValue(o1, "dateValue");
|
|
|
+ String o2Str = (String)CoreUtil.getFieldValue(o2, "dateValue");
|
|
|
+ if (StringUtil.isBlank(o1Str) || StringUtil.isBlank(o2Str)) {
|
|
|
return -1;
|
|
|
} else {
|
|
|
- return o1.getDateValue().compareTo(o2.getDateValue());
|
|
|
+ return o1Str.compareTo(o2Str);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// 比较时间是否在24小时内
|
|
|
List<Date> dateList = new ArrayList<>();
|
|
|
- for (Item it : items) {
|
|
|
- if (StringUtil.isNotBlank(it.getDateValue())) {
|
|
|
- Date cur = CatalogueUtil.parseStringDate(it.getDateValue());
|
|
|
+ for (T it : items) {
|
|
|
+ String dateValue = (String)CoreUtil.getFieldValue(it, "dateValue");
|
|
|
+ if (StringUtil.isNotBlank(dateValue)) {
|
|
|
+ Date cur = CatalogueUtil.parseStringDate(dateValue);
|
|
|
// 如果为null,说明日期格式出错,不比较
|
|
|
if (cur != null) {
|
|
|
if (ListUtil.isNotEmpty(dateList)) {
|
|
|
Date last = dateList.get(dateList.size() - 1);
|
|
|
if (!CatalogueUtil.compareTime(last, cur, 60L * 24)) {
|
|
|
+ String name = (String)CoreUtil.getFieldValue(it, "name");
|
|
|
+ String uniqueName = (String)CoreUtil.getFieldValue(it, "uniqueName");
|
|
|
BillMsg commonBillMsg = CoreUtil.getBillMsg24Repeat(
|
|
|
- it.getName(), it.getUniqueName(),
|
|
|
- it.getName(), type);
|
|
|
+ name, uniqueName, name, type);
|
|
|
billMsgList.add(commonBillMsg);
|
|
|
break;
|
|
|
} else {
|