package entity.info;
import entity.system.Commontags;
import entity.system.CommontagsTools;
import op.OPDE;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.ArrayList;
import java.util.List;
/**
* Created by IntelliJ IDEA.
* User: tloehr
* Date: 24.10.11
* Time: 16:33
* To change this template use File | Settings | File Templates.
*/
public class ResInfoTypeTools {
public static final int MODE_INTERVAL_BYSECOND = 0;
public static final int MODE_INTERVAL_BYDAY = 1;
public static final int MODE_INTERVAL_NOCONSTRAINTS = 2;
public static final int MODE_INTERVAL_SINGLE_INCIDENTS = 3; // Das sind Ereignisse, bei denen von == bis gilt. Weitere Einschränkungen werden nicht gemacht.
public static final int STATUS_INACTIVE_NORMAL = -1;
public static final int STATUS_NORMAL = 0;
public static final int STATUS_SYSTEM = 10;
public static final int STATUS_INACTIVE_SYSTEM = -10;
public static final int TYPE_ABSENCE = 10;
public static final int TYPE_ROOM = 12;
public static final int TYPE_ALLERGY = 97;
public static final int TYPE_INFECTION = 99;
public static final int TYPE_DIABETES = 98;
public static final int TYPE_DIAGNOSIS = 50;
public static final int TYPE_FALL = 30; // Sturzprotokoll
public static final int TYPE_OLD = -1;
public static final int TYPE_WARNING = 96;
public static final int TYPE_WOUNDS = 20;
public static final int TYPE_STAY = 100;
public static final int TYPE_COMMS = 101;
public static final int TYPE_CONFIDANTS = 102;
public static final int TYPE_LEGALCUSTODIANS = 103;
public static final int TYPE_PERSONALS = 104;
public static final int TYPE_NURSING_INSURANCE = 105;
public static final int TYPE_HEALTH_INSURANCE = 106;
public static final int TYPE_MOUTHCARE = 107;
public static final int TYPE_CARE = 108;
public static final int TYPE_SKIN = 109;
public static final int TYPE_MOBILITY = 110;
public static final int TYPE_EXCRETIONS = 111;
public static final int TYPE_INCOAID = 112;
public static final int TYPE_INCO_PROFILE_DAY = 113;
public static final int TYPE_INCO_PROFILE_NIGHT = 114;
public static final int TYPE_INCO_FAECAL = 115;
public static final int TYPE_SCALE_BRADEN = 116;
public static final int TYPE_WOUND1 = 117;
public static final int TYPE_WOUND2 = 118;
public static final int TYPE_WOUND3 = 119;
public static final int TYPE_WOUND4 = 120;
public static final int TYPE_WOUND5 = 121;
public static final int TYPE_WOUND6 = 147;
public static final int TYPE_WOUND7 = 148;
public static final int TYPE_WOUND8 = 149;
public static final int TYPE_WOUND9 = 150;
public static final int TYPE_WOUND10 = 151;
// public static final int[] TYPE_ALL_WOUNDS = new int[]{TYPE_WOUND1, TYPE_WOUND2, TYPE_WOUND3, TYPE_WOUND4, TYPE_WOUND5};
public static final int[] TYPE_ALL_WOUNDS = new int[]{TYPE_WOUND1, TYPE_WOUND2, TYPE_WOUND3, TYPE_WOUND4, TYPE_WOUND5, TYPE_WOUND6, TYPE_WOUND7, TYPE_WOUND8, TYPE_WOUND9, TYPE_WOUND10};
public static final int TYPE_WOUNDHISTORY1 = 122;
public static final int TYPE_WOUNDHISTORY2 = 123;
public static final int TYPE_WOUNDHISTORY3 = 124;
public static final int TYPE_WOUNDHISTORY4 = 125;
public static final int TYPE_WOUNDHISTORY5 = 126;
public static final int TYPE_WOUNDHISTORY6 = 152;
public static final int TYPE_WOUNDHISTORY7 = 153;
public static final int TYPE_WOUNDHISTORY8 = 154;
public static final int TYPE_WOUNDHISTORY9 = 155;
public static final int TYPE_WOUNDHISTORY10 = 156;
public static final int TYPE_SLEEP = 127;
public static final int TYPE_FOOD = 128;
public static final int TYPE_ARTIFICIAL_NUTRTITION = 129;
public static final int TYPE_PACEMAKER = 130;
public static final int TYPE_CONSCIUOS = 131;
public static final int TYPE_ORIENTATION = 132;
public static final int TYPE_RESPIRATION = 133;
public static final int TYPE_MEDS = 134;
public static final int TYPE_MYCOSIS = 135;
public static final int TYPE_PSYCH = 136;
public static final int TYPE_PAIN = 137;
public static final int TYPE_FIXATION= 138;
public static final int TYPE_LIVINGWILL= 139;
public static final int TYPE_AMPUTATION = 140;
public static final int TYPE_SPECIALIST = 141;
public static final int TYPE_HOSPITAL_STAY = 142;
public static final int TYPE_ANTIBIOTICS = 143;
public static final int TYPE_VACCINE = 144;
public static final int TYPE_SURGERY = 145;
public static final int TYPE_VESSEL_CATHETER = 146;
// find new max type via sql: SELECT MAX(equiv), MAX(TYPE) FROM resinfotype
public static final String TYPE_ABSENCE_HOSPITAL = "HOSPITAL";
public static final String TYPE_ABSENCE_HOLLIDAY = "HOLLIDAY";
public static final String TYPE_ABSENCE_OTHER = "OTHER";
public static final String STAY_KEY = "stay";
public static final String STAY_VALUE_PRESENT = "";
public static final String STAY_VALUE_DEAD = "dead";
public static final String STAY_VALUE_LEFT = "left";
public static ResInfoType getByID(String id) {
EntityManager em = OPDE.createEM();
Query query = em.createQuery("SELECT b FROM ResInfoType b WHERE b.bwinftyp = :bwinftyp");
query.setParameter("bwinftyp", id);
List<ResInfoType> resInfoTypes = query.getResultList();
em.close();
return resInfoTypes.isEmpty() ? null : resInfoTypes.get(0);
}
public static ResInfoType getByType(int type) {
EntityManager em = OPDE.createEM();
Query query = em.createQuery("SELECT b FROM ResInfoType b WHERE b.type = :type");
query.setParameter("type", type);
List<ResInfoType> resInfoTypes = query.getResultList();
em.close();
return resInfoTypes.isEmpty() ? null : resInfoTypes.get(0);
}
public static List<ResInfoType> getByCat(ResInfoCategory category) {
EntityManager em = OPDE.createEM();
Query query = em.createQuery("SELECT b FROM ResInfoType b WHERE b.resInfoCat = :cat ORDER BY b.bWInfoKurz, b.bwinftyp"); // AND b.type >= 0
query.setParameter("cat", category);
List<ResInfoType> resInfoTypen = query.getResultList();
em.close();
return resInfoTypen;
}
public static List<ResInfoType> getAllActive() {
EntityManager em = OPDE.createEM();
Query query = em.createQuery("SELECT b FROM ResInfoType b WHERE b.type >= 0 ORDER BY b.bWInfoKurz ");
// query.setParameter("type", TYPE_DIAGNOSIS);
List<ResInfoType> resInfoTypen = query.getResultList();
em.close();
return resInfoTypen;
}
public static boolean containsOnlyClosedInfos(ArrayList<ResInfo> listInfos) {
boolean containsOnlyClosedInfos = true;
for (ResInfo info : listInfos) {
containsOnlyClosedInfos = info.isClosed();
if (!containsOnlyClosedInfos) {
break;
}
}
return containsOnlyClosedInfos;
}
public static ResInfoType getResInfoType4Annotation(Commontags tag){
if (tag.getType() == CommontagsTools.TYPE_SYS_ANTIBIOTICS){
return getByType(TYPE_ANTIBIOTICS);
}
return null;
}
public static boolean is4Annotations(ResInfoType resInfoType){
if (resInfoType.getType() == TYPE_ANTIBIOTICS){
return true;
}
return false;
}
public static boolean containsOneActiveObsoleteInfo(ArrayList<ResInfo> listInfos) {
boolean containsOneActiveObsoleteInfo = false;
for (ResInfo info : listInfos) {
containsOneActiveObsoleteInfo = info.getResInfoType().isObsolete() && !info.isClosed();
if (containsOneActiveObsoleteInfo) {
break;
}
}
return containsOneActiveObsoleteInfo;
}
// /**
// * if you hand over an obsolete infotype to this method it returns an
// * active version for it, using the equiv attribute. If the type is not
// * obsolete, you will get it back.
// * If there is no active version you will get NULL instead.
// * Infotypes without replacements have either none active one withing their
// * equiv domain or equiv is 0.
// *
// * @param resInfoType
// * @return
// */
// public static ResInfoType getActiveVersion4(ResInfoType resInfoType) {
// if (!resInfoType.isObsolete()) {
// return resInfoType;
// }
// if (resInfoType.getEquiv().intValue() == 0) {
// return null;
// }
// EntityManager em = OPDE.createEM();
// Query query = em.createQuery("SELECT b FROM ResInfoType b WHERE b.equiv = :equiv AND b.type >= 0 ");
// query.setParameter("equiv", resInfoType.getEquiv());
// List<ResInfoType> resInfoTypes = query.getResultList();
// em.close();
// if (resInfoTypes.isEmpty()) {
// return null;
// }
// return resInfoTypes.get(0); // there should never be more than one active resinfotype.
// }
}