/******************************************************************************* * Copyright (c) 2006-2016, G. Weirich and Elexis * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * G. Weirich - initial implementation * office@medevit.at - extracted from ch.elexis.base.ch.diagnosecodes_schweiz *******************************************************************************/ package ch.elexis.base.ch.ticode; import java.util.Hashtable; /** * Copy of the ch.elexis.data.TICode class, but without PersistentObject dependencies. * * @author Gerry * @since 3.2.0 */ public class TessinerCode { public static final String CODESYSTEM_NAME = "TI-Code"; private static Hashtable<String, TessinerCode> hash = new Hashtable<String, TessinerCode>(); private String text; private String code; private TessinerCode(String code, String text){ this.code = code; this.text = text; } public String getText(){ return text; } public String getCode(){ return code; } public String getLabel(){ return code + " " + text; //$NON-NLS-1$ } public String getCodeSystemName(){ return CODESYSTEM_NAME; //$NON-NLS-1$ } public static TessinerCode load(String code){ return getFromCode(code); } public static TessinerCode[] getRootNodes(){ TessinerCode[] ret = new TessinerCode[ticode.length]; int i; for (i = 0; i < ticode.length; i++) { String[] line = ticode[i]; ret[i] = new TessinerCode(line[0], line[1]); } return ret; } public static TessinerCode getFromCode(String code){ TessinerCode ret = hash.get(code); if (ret == null && !code.isEmpty()) { String chapter = code.substring(0, 1); int subch = 0; if (code.length() == 2) { subch = Integer.parseInt(code.substring(1)); } for (int i = 0; i < ticode.length; i++) { if (ticode[i][0].startsWith(chapter)) { if (subch == 9) { subch = ticode[i].length - 2; ret = new TessinerCode(chapter + "9", ticode[i][subch + 1]); //$NON-NLS-1$ } else { ret = new TessinerCode(chapter + subch, ticode[i][subch + 1]); } hash.put(code, ret); return ret; } } } return ret; } public TessinerCode getParent(){ if (getCode().length() == 1) { return null; } return getFromCode(getCode().substring(0, 1)); } public boolean hasChildren(){ if (getCode().length() == 1) { return true; } return false; } public TessinerCode[] getChildren(){ if (getCode().length() > 1) { return null; } String chapter = getCode().substring(0, 1); for (int i = 0; i < ticode.length; i++) { if (ticode[i][0].equals(chapter)) { TessinerCode[] ret = new TessinerCode[ticode[i].length - 2]; for (int j = 2; j < ticode[i].length; j++) { String x; if (j == ticode[i].length - 1) { x = "9"; //$NON-NLS-1$ } else { x = Integer.toString(j - 1); } ret[j - 2] = new TessinerCode(chapter + x, ticode[i][j]); } return ret; } } return null; } public static final String[][] ticode = { { "A", Messages.TICode_Heart, //$NON-NLS-1$ Messages.TICode_valves, Messages.TICode_coronaria, Messages.TICode_rhythm, Messages.TICode_hypertonia, Messages.TICode_arteries, Messages.TICode_veins, Messages.TICode_lymphVessels, Messages.TICode_heartOther }, { "B", Messages.TICode_blood, //$NON-NLS-1$ Messages.TICode_anemia, Messages.TICode_coagulo, Messages.TICode_boneMarrow, Messages.TICode_spleen, Messages.TICode_bloodOther }, { "C", Messages.TICode_lung, //$NON-NLS-1$ Messages.TICode_asthma, Messages.TICode_cough, Messages.TICode_embolism, Messages.TICode_lungPleural, Messages.TICode_lungOther }, { "D", Messages.TICode_locomotion, //$NON-NLS-1$ Messages.TICode_muscle, Messages.TICode_joint, Messages.TICode_arthtiris, Messages.TICode_arthrosis, Messages.TICode_vertebral, Messages.TICode_locoOther }, { "E", Messages.TICode_digestive, //$NON-NLS-1$ Messages.TICode_esophagus, Messages.TICode_bowel, Messages.TICode_rectum, Messages.TICode_liver, Messages.TICode_pancreas, Messages.TICode_diaphragm, Messages.TICode_hernia, Messages.TICode_digestiveOther }, { "F", Messages.TICode_metabolic, //$NON-NLS-1$ Messages.TICode_diabetes, Messages.TICode_thyroid, Messages.TICode_metabolicOther }, { "G", Messages.TICode_infections, //$NON-NLS-1$ Messages.TICode_simpleInfection, Messages.TICode_tuberculosis, Messages.TICode_hepatitis, Messages.TICode_infectionOther }, { "H", Messages.TICode_urinary, //$NON-NLS-1$ Messages.TICode_kidney, Messages.TICode_stones, Messages.TICode_ureters, Messages.TICode_urinaryOther }, { "I", Messages.TICode_sexual, //$NON-NLS-1$ Messages.TICode_male, Messages.TICode_vaginal, Messages.TICode_uterus, Messages.TICode_adnexes, Messages.TICode_cycle, Messages.TICode_mammae, Messages.TICode_sterilisation, Messages.TICode_sexualOther }, { "K", Messages.TICode_reproduction, //$NON-NLS-1$ Messages.TICode_pregnancyNormal, Messages.TICode_pregnancyAbnormal, Messages.TICode_sterility, Messages.TICode_reproductionOther }, { "L", Messages.TICode_nervous, //$NON-NLS-1$ Messages.TICode_brain, Messages.TICode_nerves, Messages.TICode_palsy, Messages.TICode_migraine, Messages.TICode_epilepsy, Messages.TICode_nervousOther }, { "M", Messages.TICode_psyche, //$NON-NLS-1$ Messages.TICode_sleep, Messages.TICode_psychic, Messages.TICode_psychoorganic, Messages.TICode_psycheOther }, { "N", Messages.TICode_skin, //$NON-NLS-1$ Messages.TICode_allergic, Messages.TICode_inflammation, Messages.TICode_ekcema, Messages.TICode_vaskular, Messages.TICode_psoriasis, Messages.TICode_scars, Messages.TICode_skinOther }, { "O", Messages.TICode_orl, //$NON-NLS-1$ Messages.TICode_nose, Messages.TICode_sinuses, Messages.TICode_mouth, Messages.TICode_tonsil, Messages.TICode_larynx, Messages.TICode_earform, Messages.TICode_middleEar, Messages.TICode_innerEar, Messages.TICode_orlOther }, { "P", Messages.TICode_eye, //$NON-NLS-1$ Messages.TICode_lid, Messages.TICode_cornea, Messages.TICode_eyemuscles, Messages.TICode_iris, Messages.TICode_retina, Messages.TICode_eyeOther }, { "Q", Messages.TICode_jaw, //$NON-NLS-1$ Messages.TICode_cyst, Messages.TICode_toothabscess, Messages.TICode_fibroma, Messages.TICode_jawOther }, { "R", Messages.TICode_accidents, //$NON-NLS-1$ Messages.TICode_accidentHead, Messages.TICode_accisdentThorax, Messages.TICode_accidentAbdomen, Messages.TICode_accidentArm, Messages.TICode_accidentLeg, Messages.TICode_AccidentOther }, { "S", Messages.TICode_nonmust, //$NON-NLS-1$ Messages.TICode_nonmust }, { "T", Messages.TICode_prevention, //$NON-NLS-1$ Messages.TICode_preventionCheck, Messages.TICode_vaccination, Messages.TICode_other }, { "U", Messages.TICode_docInformed, Messages.TICode_docInformed //$NON-NLS-1$ }, { "0", Messages.TICode_accessory, //$NON-NLS-1$ Messages.TICode_right, Messages.TICode_left, Messages.TICode_acute, Messages.TICode_chronic, Messages.TICode_infectiuous, Messages.TICode_functional, Messages.TICode_neoplastic, Messages.TICode_professional } }; }