|
@@ -110,7 +110,7 @@ public class NeoFacade {
|
|
|
|
|
|
String med_type;
|
|
|
String med_name;
|
|
|
- String comma="::";
|
|
|
+ String comma = "::";
|
|
|
|
|
|
List<String> medClass = nodeRepository.getMedHuaXueClass();
|
|
|
medClass.addAll(nodeRepository.getMedYaoLiClass());
|
|
@@ -138,26 +138,27 @@ public class NeoFacade {
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
- public void diseasePropertyCache(){
|
|
|
+ public void diseasePropertyCache() {
|
|
|
List<DiseaseProperty> diseaseProperty = nodeRepository.getDiseaseProperty();
|
|
|
- if(ListUtil.isNotEmpty(diseaseProperty)){
|
|
|
+ if (ListUtil.isNotEmpty(diseaseProperty)) {
|
|
|
diseaseProperty.parallelStream().forEach(
|
|
|
- x ->{
|
|
|
+ x -> {
|
|
|
String name = x.getName();
|
|
|
String sex = x.getSex();
|
|
|
String age = x.getAge();
|
|
|
String fbl = x.getFbl();
|
|
|
- Map<String,String> desc = new HashMap<>();
|
|
|
- desc.put("name",name);
|
|
|
- desc.put("sex",sex);
|
|
|
- desc.put("age",age);
|
|
|
- desc.put("fbl",fbl);
|
|
|
- redisUtil.updateValue(desc,RedisEnum.diseaseType.getName() + name);
|
|
|
+ Map<String, String> desc = new HashMap<>();
|
|
|
+ desc.put("name", name);
|
|
|
+ desc.put("sex", sex);
|
|
|
+ desc.put("age", age);
|
|
|
+ desc.put("fbl", fbl);
|
|
|
+ redisUtil.updateValue(desc, RedisEnum.diseaseType.getName() + name);
|
|
|
}
|
|
|
);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 返回图谱中所有症状缓存信息
|
|
|
*
|
|
@@ -168,13 +169,14 @@ public class NeoFacade {
|
|
|
List<String> symptomClass = nodeRepository.getSymptomClass();
|
|
|
return symptomClass;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 返回图谱中所有疾病和性别信息
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
@Cacheable(value = "cache", key = "'disSexCache'")
|
|
|
- public Map<String,String> getDisSexCache() {
|
|
|
+ public Map<String, String> getDisSexCache() {
|
|
|
Map<String, String> disSexClass = Maps.newHashMap();
|
|
|
List<String> disSex = nodeRepository.getDisSexClass();
|
|
|
if (ListUtil.isNotEmpty(disSex)) {
|
|
@@ -185,37 +187,39 @@ public class NeoFacade {
|
|
|
}
|
|
|
return disSexClass;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 返回图谱中所有疾病和年龄信息
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
@Cacheable(value = "cache", key = "'disAgeCache'")
|
|
|
- public Map<String,String> getDisAgeCache() {
|
|
|
+ public Map<String, String> getDisAgeCache() {
|
|
|
Map<String, String> disAgeClass = Maps.newHashMap();
|
|
|
List<String> ageClass = nodeRepository.getDisAgeClass();
|
|
|
- if(ListUtil.isNotEmpty(ageClass)){
|
|
|
- ageClass.parallelStream().forEach(x ->{
|
|
|
+ if (ListUtil.isNotEmpty(ageClass)) {
|
|
|
+ ageClass.parallelStream().forEach(x -> {
|
|
|
String[] splits = x.split("&");
|
|
|
- disAgeClass.put(splits[0],splits[1]);
|
|
|
+ disAgeClass.put(splits[0], splits[1]);
|
|
|
});
|
|
|
}
|
|
|
return disAgeClass;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 返回图谱中所有疾病和发病率信息
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
@Cacheable(value = "cache", key = "'disdistributionCache'")
|
|
|
- public Map<String,Double> getDisdistributionCache() {
|
|
|
+ public Map<String, Double> getDisdistributionCache() {
|
|
|
DecimalFormat df = new DecimalFormat("0.######");
|
|
|
- Map<String,Double> disdistribution = new HashMap<>();
|
|
|
+ Map<String, Double> disdistribution = new HashMap<>();
|
|
|
List<String> disdistributionClass = nodeRepository.getDisdistributionClass();
|
|
|
- if(ListUtil.isNotEmpty(disdistributionClass)){
|
|
|
- disdistributionClass.parallelStream().forEach(x ->{
|
|
|
+ if (ListUtil.isNotEmpty(disdistributionClass)) {
|
|
|
+ disdistributionClass.parallelStream().forEach(x -> {
|
|
|
String[] splits = x.split("&");
|
|
|
- disdistribution.put(splits[0],Double.parseDouble(splits[1]));
|
|
|
+ disdistribution.put(splits[0], Double.parseDouble(splits[1]));
|
|
|
});
|
|
|
}
|
|
|
return disdistribution;
|
|
@@ -232,6 +236,7 @@ public class NeoFacade {
|
|
|
this.diseasePropertyCache();
|
|
|
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 图谱反推的数据
|
|
|
*
|
|
@@ -263,16 +268,16 @@ public class NeoFacade {
|
|
|
//如果化验有特异性就直接推送疾病
|
|
|
List<Lis> lises = null;
|
|
|
LisPushVo lisPushVo = pushVO.getLisPushVo();
|
|
|
- if(lisPushVo != null){
|
|
|
+ if (lisPushVo != null) {
|
|
|
lises = lisPushVo.getLises();
|
|
|
}
|
|
|
- if(ListUtil.isNotEmpty(lises)){
|
|
|
+ if (ListUtil.isNotEmpty(lises)) {
|
|
|
List<String> lis_dis = lises.parallelStream()
|
|
|
- .map(x -> nodeRepository.getDisByLis_Special(x.getName(), x.getUniqueName()+x.getResult()))
|
|
|
+ .map(x -> nodeRepository.getDisByLis_Special(x.getName(), x.getUniqueName() + x.getResult()))
|
|
|
.flatMap(List::stream).collect(Collectors.toList());
|
|
|
- if(ListUtil.isNotEmpty(lis_dis)){
|
|
|
- filterAndSort(neoPushDTOS,lis_dis,sex,age);
|
|
|
- if(ListUtil.isNotEmpty(neoPushDTOS)){
|
|
|
+ if (ListUtil.isNotEmpty(lis_dis)) {
|
|
|
+ filterAndSort(neoPushDTOS, lis_dis, sex, age);
|
|
|
+ if (ListUtil.isNotEmpty(neoPushDTOS)) {
|
|
|
return neoPushDTOS;
|
|
|
}
|
|
|
}
|
|
@@ -284,73 +289,69 @@ public class NeoFacade {
|
|
|
List<String> symptoms = new ArrayList<>();
|
|
|
List<String> symptom_chief = new ArrayList<>();
|
|
|
List<String> symptom_present = new ArrayList<>();
|
|
|
- if(chiefPushVo != null){
|
|
|
- if (ListUtil.isNotEmpty(chiefPushVo.getSymptoms())){
|
|
|
+ if (chiefPushVo != null) {
|
|
|
+ if (ListUtil.isNotEmpty(chiefPushVo.getSymptoms())) {
|
|
|
symptom_chief = chiefPushVo.getSymptoms().stream().map(x -> x.getName()).collect(Collectors.toList());
|
|
|
}
|
|
|
}
|
|
|
- if(presentPushVo != null){
|
|
|
- if (ListUtil.isNotEmpty(presentPushVo.getSymptoms())){
|
|
|
+ if (presentPushVo != null) {
|
|
|
+ if (ListUtil.isNotEmpty(presentPushVo.getSymptoms())) {
|
|
|
symptom_present = presentPushVo.getSymptoms().stream().map(x -> x.getName()).collect(Collectors.toList());
|
|
|
}
|
|
|
}
|
|
|
- symptoms = Stream.of(symptom_chief,symptom_present).flatMap(Collection::stream).distinct().collect(Collectors.toList());
|
|
|
+ symptoms = Stream.of(symptom_chief, symptom_present).flatMap(Collection::stream).distinct().collect(Collectors.toList());
|
|
|
//症状、体征推疾病
|
|
|
- List<String> allDis_bySymptom = getDisBySymptom(symptoms,age,sex);
|
|
|
+ List<String> allDis_bySymptom = getDisBySymptom(symptoms, age, sex);
|
|
|
allDis.addAll(allDis_bySymptom);
|
|
|
//化验推出的疾病
|
|
|
-
|
|
|
- if(ListUtil.isNotEmpty(lises)){
|
|
|
- /*List<String> lis_dis = lises.parallelStream()
|
|
|
- .map(x -> nodeRepository.getDisByLis(x.getUniqueName(), x.getDetailName()))
|
|
|
- .filter(z->z!=null && NeoUtil.matchBasic(z,sex,age)).map(z->z.getName())
|
|
|
- .collect(Collectors.toList());*/
|
|
|
- List<String> lis_dis = lises.parallelStream()
|
|
|
- .map(x -> nodeRepository.getDisByLis(x.getName(), x.getUniqueName()+x.getResult()))
|
|
|
- .flatMap(List::stream).collect(Collectors.toList());
|
|
|
- allDis.addAll(lis_dis);
|
|
|
- }
|
|
|
+ if (ListUtil.isNotEmpty(lises)) {
|
|
|
+ List<String> lis_dis = lises.parallelStream()
|
|
|
+ .map(x -> nodeRepository.getDisByLis(x.getName(), x.getUniqueName() + x.getResult()))
|
|
|
+ .flatMap(List::stream).collect(Collectors.toList());
|
|
|
+ allDis.addAll(lis_dis);
|
|
|
+ }
|
|
|
|
|
|
//辅检推出的疾病
|
|
|
PacsPushVo pacsPushVo = pushVO.getPacsPushVo();
|
|
|
- if(pacsPushVo !=null){
|
|
|
+ if (pacsPushVo != null) {
|
|
|
List<Item> pacs = pacsPushVo.getPacs();
|
|
|
- if(ListUtil.isNotEmpty(pacs)){
|
|
|
+ if (ListUtil.isNotEmpty(pacs)) {
|
|
|
List<String> pacsNames = pacs.stream().map(x -> x.getUniqueName()).collect(Collectors.toList());
|
|
|
List<String> allDis_byPacsResult = getDisByPacsResult(pacsNames, age, sex);
|
|
|
allDis.addAll(allDis_byPacsResult);
|
|
|
}
|
|
|
}
|
|
|
- filterAndSort(neoPushDTOS, allDis,sex,age);
|
|
|
+ filterAndSort(neoPushDTOS, allDis, sex, age);
|
|
|
|
|
|
return neoPushDTOS;
|
|
|
}
|
|
|
|
|
|
private void filterAndSort(List<NeoPushDTO> neoPushDTOS, List<String> allDis, int gender_code, double age) {
|
|
|
//推送出的所有疾病进行性别和年龄的过滤
|
|
|
- List<Map<String,String>> diseases = null;
|
|
|
- Map<String,Double> dis_fbl = new HashMap<>();
|
|
|
- if(ListUtil.isNotEmpty(allDis)){
|
|
|
- diseases = redisUtil.get(allDis);
|
|
|
- allDis = diseases.stream().filter(x -> NeoUtil.matchBasic(x,gender_code,age)).map(x -> x.get("name")).collect(Collectors.toList());
|
|
|
- diseases.forEach(x -> dis_fbl.put(x.get("name"),Double.parseDouble(x.get("fbl"))));
|
|
|
+ List<Map<String, String>> diseases = null;
|
|
|
+ Map<String, Double> dis_fbl = new HashMap<>();
|
|
|
+ if (ListUtil.isNotEmpty(allDis)) {
|
|
|
+// diseases = redisUtil.get(allDis);
|
|
|
+ diseases = redisUtil.geth(allDis);
|
|
|
+ allDis = diseases.stream().filter(x -> NeoUtil.matchBasic(x, gender_code, age)).map(x -> x.get("name")).collect(Collectors.toList());
|
|
|
+ diseases.forEach(x -> dis_fbl.put(x.get("name"), Double.parseDouble(x.get("fbl"))));
|
|
|
}
|
|
|
|
|
|
- Map<Long,List<String>> numberDiseasesMap = disCountSort(allDis);
|
|
|
+ Map<Long, List<String>> numberDiseasesMap = disCountSort(allDis);
|
|
|
//根据发病率排序
|
|
|
// Map<String, Double> disdistributionCache = self.getDisdistributionCache();
|
|
|
- Map<Long,Map<String,Double>> disPack = new LinkedHashMap<>();
|
|
|
- numberDiseasesMap.forEach((x,y)->{
|
|
|
+ Map<Long, Map<String, Double>> disPack = new LinkedHashMap<>();
|
|
|
+ numberDiseasesMap.forEach((x, y) -> {
|
|
|
Map<String, Double> collect = y.stream()
|
|
|
.collect(Collectors.toMap(v -> v, v -> dis_fbl.get(v), (e1, e2) -> e2));
|
|
|
- disPack.put(x,collect);
|
|
|
+ disPack.put(x, collect);
|
|
|
});
|
|
|
- disPack.forEach((x,y)->{
|
|
|
+ disPack.forEach((x, y) -> {
|
|
|
Map<String, Double> collect = y.entrySet().stream()
|
|
|
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
|
|
|
- .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2,LinkedHashMap::new));
|
|
|
- disPack.put(x,collect);
|
|
|
- collect.forEach((k,n)->{
|
|
|
+ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new));
|
|
|
+ disPack.put(x, collect);
|
|
|
+ collect.forEach((k, n) -> {
|
|
|
NeoPushDTO neoPushDTO = new NeoPushDTO();
|
|
|
PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
pushBaseDTO.setName(k);
|
|
@@ -360,17 +361,17 @@ public class NeoFacade {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- public List<String> getDisBySymptom(List<String> symptoms,Double age,Integer sex){
|
|
|
+ public List<String> getDisBySymptom(List<String> symptoms, Double age, Integer sex) {
|
|
|
List<String> symptomCache = getSymptomCache();
|
|
|
//取交集
|
|
|
symptoms.retainAll(symptomCache);
|
|
|
long start = System.currentTimeMillis();
|
|
|
- List<String> allDis_bySymptom = pushDisBySymptom(symptomNameRepository, symptoms,age,sex);
|
|
|
+ List<String> allDis_bySymptom = pushDisBySymptom(symptomNameRepository, symptoms, age, sex);
|
|
|
long end = System.currentTimeMillis();
|
|
|
return allDis_bySymptom;
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- public List<String> getDisByPacsResult(List<String> pacsResult,Double age,Integer sex){
|
|
|
+ public List<String> getDisByPacsResult(List<String> pacsResult, Double age, Integer sex) {
|
|
|
|
|
|
/*List<PacsResult> byNameIn = pacsResultRepository.findByNameIn(pacsResult);
|
|
|
List<String> allDis = byNameIn.stream()
|
|
@@ -381,14 +382,14 @@ public class NeoFacade {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 症状、体征、化验、辅检等其他推送疾病
|
|
|
+ *
|
|
|
* @param symptomNameRepository
|
|
|
* @param symptoms
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<String> pushDisBySymptom(SymptomNameRepository symptomNameRepository,List<String> symptoms,Double age,Integer sex){
|
|
|
+ public List<String> pushDisBySymptom(SymptomNameRepository symptomNameRepository, List<String> symptoms, Double age, Integer sex) {
|
|
|
List<String> allDis = Lists.newArrayList();
|
|
|
/*List<Symptom> byNameIn = symptomNameRepository.findByNameIn(symptoms);
|
|
|
allDis = byNameIn.parallelStream()
|
|
@@ -401,10 +402,11 @@ public class NeoFacade {
|
|
|
|
|
|
/**
|
|
|
* 推送的疾病计数排序
|
|
|
+ *
|
|
|
* @param allDis
|
|
|
* @return
|
|
|
*/
|
|
|
- public Map<Long,List<String>> disCountSort(List<String> allDis) {
|
|
|
+ public Map<Long, List<String>> disCountSort(List<String> allDis) {
|
|
|
Map<String, Long> dis_count = allDis.stream().collect(
|
|
|
|
|
|
Collectors.groupingBy(Function.identity(), Collectors.counting())
|
|
@@ -421,16 +423,16 @@ public class NeoFacade {
|
|
|
}).get();
|
|
|
|
|
|
}
|
|
|
- Map<Long,List<String>> number_diseases = new LinkedHashMap<>();
|
|
|
- dis_count.forEach((x,y)->{
|
|
|
- if(number_diseases.containsKey(y)){
|
|
|
+ Map<Long, List<String>> number_diseases = new LinkedHashMap<>();
|
|
|
+ dis_count.forEach((x, y) -> {
|
|
|
+ if (number_diseases.containsKey(y)) {
|
|
|
List<String> diseases = number_diseases.get(y);
|
|
|
diseases.add(x);
|
|
|
- number_diseases.put(y,diseases);
|
|
|
- }else {
|
|
|
+ number_diseases.put(y, diseases);
|
|
|
+ } else {
|
|
|
List<String> diseases = Lists.newArrayList();
|
|
|
diseases.add(x);
|
|
|
- number_diseases.put(y,diseases);
|
|
|
+ number_diseases.put(y, diseases);
|
|
|
}
|
|
|
});
|
|
|
return number_diseases;
|
|
@@ -454,8 +456,7 @@ public class NeoFacade {
|
|
|
billNeoDTOs.addAll(getOperationBill(billNeoVO.getOperationList()));
|
|
|
billNeoDTOs.addAll(getCombiOpBill(billNeoVO.getCombiopList()));
|
|
|
billNeoDTOs.addAll(getTransfusionBill(billNeoVO.getTransfusionList()));
|
|
|
- }
|
|
|
- catch (Exception ex) {
|
|
|
+ } catch (Exception ex) {
|
|
|
ex.printStackTrace();
|
|
|
}
|
|
|
|
|
@@ -524,21 +525,18 @@ public class NeoFacade {
|
|
|
unit = lis.getUnits();
|
|
|
for (LisRemind lisRemind : lrlist) {
|
|
|
if (lisRemind.getRange() == 0) { /*&& lisRemind.getUnit().equals(unit) &&*/
|
|
|
- if (null==lisRemind.getMinval() && val <= lisRemind.getMaxval()) {
|
|
|
+ if (null == lisRemind.getMinval() && val <= lisRemind.getMaxval()) {
|
|
|
otherTipNeoDTOS = updateTipNeoDTO(otherTipNeoDTOS, lis, lisRemind);
|
|
|
- }
|
|
|
- else if(null==lisRemind.getMaxval() && val >= lisRemind.getMinval()) {
|
|
|
+ } else if (null == lisRemind.getMaxval() && val >= lisRemind.getMinval()) {
|
|
|
otherTipNeoDTOS = updateTipNeoDTO(otherTipNeoDTOS, lis, lisRemind);
|
|
|
- }
|
|
|
- else if (null!=lisRemind.getMinval() && null!=lisRemind.getMaxval() &&
|
|
|
- val <= lisRemind.getMaxval() && val >= lisRemind.getMinval()) {
|
|
|
+ } else if (null != lisRemind.getMinval() && null != lisRemind.getMaxval() &&
|
|
|
+ val <= lisRemind.getMaxval() && val >= lisRemind.getMinval()) {
|
|
|
otherTipNeoDTOS = updateTipNeoDTO(otherTipNeoDTOS, lis, lisRemind);
|
|
|
}
|
|
|
} else if (lisRemind.getRange() == 1) { /*&& lisRemind.getUnit().equals(unit) &&*/
|
|
|
- if (null!=lisRemind.getMaxval() && val > lisRemind.getMaxval()) {
|
|
|
+ if (null != lisRemind.getMaxval() && val > lisRemind.getMaxval()) {
|
|
|
otherTipNeoDTOS = updateTipNeoDTO(otherTipNeoDTOS, lis, lisRemind);
|
|
|
- }
|
|
|
- else if (null!=lisRemind.getMinval() && val < lisRemind.getMinval()){
|
|
|
+ } else if (null != lisRemind.getMinval() && val < lisRemind.getMinval()) {
|
|
|
otherTipNeoDTOS = updateTipNeoDTO(otherTipNeoDTOS, lis, lisRemind);
|
|
|
}
|
|
|
}
|
|
@@ -557,8 +555,7 @@ public class NeoFacade {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- catch (Exception ex) {
|
|
|
+ } catch (Exception ex) {
|
|
|
ex.printStackTrace();
|
|
|
}
|
|
|
|
|
@@ -672,7 +669,6 @@ public class NeoFacade {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 处理手术开单合理性
|
|
|
*/
|
|
@@ -719,14 +715,14 @@ public class NeoFacade {
|
|
|
YiBaoDiseaseNode icdDiseaseNode = new YiBaoDiseaseNode();
|
|
|
String term;
|
|
|
term = neoPushVO.getDiagVo().getDiags().get(0).getName();
|
|
|
- List<YiBaoDiseaseName> yiBaoName = yiBaoDiseaseRepository.findByNameIs(term);
|
|
|
- YiBaoDiseaseName icdDisease = null;
|
|
|
- if(ListUtil.isNotEmpty(yiBaoName)){
|
|
|
- icdDisease = yiBaoName.get(0);
|
|
|
- }
|
|
|
- if (icdDisease != null) {
|
|
|
- pushDTO = icdDiseaseNode.YiBaoDiseasetoDiseaseDTO(icdDisease, neoPushVO);
|
|
|
- }
|
|
|
+ List<YiBaoDiseaseName> yiBaoName = yiBaoDiseaseRepository.findByNameIs(term);
|
|
|
+ YiBaoDiseaseName icdDisease = null;
|
|
|
+ if (ListUtil.isNotEmpty(yiBaoName)) {
|
|
|
+ icdDisease = yiBaoName.get(0);
|
|
|
+ }
|
|
|
+ if (icdDisease != null) {
|
|
|
+ pushDTO = icdDiseaseNode.YiBaoDiseasetoDiseaseDTO(icdDisease, neoPushVO);
|
|
|
+ }
|
|
|
|
|
|
return pushDTO;
|
|
|
}
|
|
@@ -813,7 +809,7 @@ public class NeoFacade {
|
|
|
* 类型,疾病: disease,症状: symptom,手术和操作:operation,药品: drug,实验室检查:lis,辅助检查:pacs, 辅助检查:vital"
|
|
|
*
|
|
|
* @param standConvert
|
|
|
- * @return Map<String , Map < String , String>> -->Map<类型, Map<原始词, 标准词>>
|
|
|
+ * @return Map<String, Map < String, String>> -->Map<类型, Map<原始词, 标准词>>
|
|
|
*/
|
|
|
public Map<String, Map<String, String>> standConvertCrf(StandConvert standConvert) {
|
|
|
Map<String, Map<String, String>> map = new LinkedHashMap<>();
|
|
@@ -867,7 +863,7 @@ public class NeoFacade {
|
|
|
|
|
|
if (ListUtil.isNotEmpty(wordList)) {
|
|
|
for (String s : wordList) {
|
|
|
- String value = redisUtil.getWithString(type + "Conv:" + s);
|
|
|
+ String value = redisUtil.getWithString(type + "Conv:" + s);
|
|
|
if (StringUtil.isBlank(value)) {
|
|
|
StandConvertCrfVO standConvertCrfVO = new StandConvertCrfVO();
|
|
|
standConvertCrfVO.setWord_type(type);
|