package ua.stu.scplib.data; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; import ua.stu.scplib.structure.SCPECG; /** * Класс вмещающий в себе прочую информацию * * @author ivan * */ public class OInfo { private SCPECG scpecg = null; private Map<String, String> mpADIN = null; int[] capabilitiesOfDevice = new int[8]; OInfo(SCPECG sc) { scpecg = sc; setCapabilitiesOfDevice(); } private void getAcquiringDeviceIdentificationNumber() { StringTokenizer st = null; // System.out.println(scpecg.getNamedField("AcquiringDeviceIdentificationNumber")); st = new StringTokenizer( scpecg.getNamedField("AcquiringDeviceIdentificationNumber"), ", "); mpADIN = new HashMap<String, String>(); while (st.hasMoreTokens()) { StringTokenizer token = new StringTokenizer(st.nextToken(), "="); if (token.countTokens() == 2) mpADIN.put(token.nextToken(), token.nextToken()); } } /** * * @return Object[] * <p>0 - Производитель </p> * <p>1 - Номер организации </p> * <p>2 - Номер отдела </p> * <p>3 - ID устройства </p> * <p>4 - Тип устройства </p> * <p>5 - Частота </p> * <p>6 - Модель </p> * <p>7 - Версии анализирующего и системного ПО </p> * <p>8 - Серийный номер </p> * <p>9 - ПО реализующее SCP протолок </p> * <p>10 - Возможность печати </p> * <p>11 - Возможность анализа </p> * <p>12 - Возможность хранения </p> * <p>13 - Возможность приема </p> * <p>14 - Учреждения записывающее ЕКГ </p> * <p>15 - Учереждения анализирующее ЕКГ </p> * <p>16 - Отдел принимавший ЕКГ </p> * <p>17 - Отдел анализировавший ЕКГ </p> * <p>18 - Направляющие врачи </p> * <p>19 - Подтверждающие врачи </p> * <p>20 - Медсестры </p> * <p>21 - Коментарии </p> * <p>22 - Дата получения ЕКГ </p> * <p>23 - Время получения ЕКГ </p> */ public Object[] getAllOInfo() { Object[] allOInfo = null; if (scpecg != null) { allOInfo = new Object[]{ getManufacturer(), getInstitutionNumber(), getDepartmentNumber(), getDeviceID(), getDeviceType(), getFrequency(), getModel(), getVersionPO(), getSerialNumber(), getPOSCP(), getPrint(), getAnalysis(), getStorage(), getReceive(), getAcquiringInstitutionDescription(), getAnalyzingInstitutionDescription(), getAcquiringDepartmentDescription(), getAnalyzingDepartmentDescription(), getReferringPhysician(), getLatestConfirmingPhysician(), getTechnicianDescription(), getFreeTextField(), getDateOfAcquisition(), getTimeOfAcquisition() }; } return allOInfo; } /** * Производитель * * @return String */ public String getManufacturer() { if (mpADIN == null) getAcquiringDeviceIdentificationNumber(); return scpecg.getSection1().getManufucture(); } /** * Номер организации * * @return String */ public String getInstitutionNumber() { if (mpADIN == null) getAcquiringDeviceIdentificationNumber(); return mpADIN.get("institutionNumber"); } /** * Номер отдела * * @return String */ public String getDepartmentNumber() { if (mpADIN == null) getAcquiringDeviceIdentificationNumber(); return mpADIN.get("departmentNumber"); } /** * ID устройства * * @return String */ public String getDeviceID() { if (mpADIN == null) getAcquiringDeviceIdentificationNumber(); return mpADIN.get("deviceID"); } /** * Тип устройства * * @return String */ public String getDeviceType() { if (mpADIN == null) getAcquiringDeviceIdentificationNumber(); int id = Integer.parseInt(mpADIN.get("deviceType")); String idS; switch (id) { case 1: idS = "Хост-система"; break; case 0: idS = "Перевозочное"; break; default: idS = "Неизвестно"; break; } return idS; } /** * Частота * * @return String */ public String getFrequency() { if (mpADIN == null) getAcquiringDeviceIdentificationNumber(); int id = Integer.parseInt(mpADIN.get("mainsFrequency")); String idS; switch (id) { case 1: idS = "50"; break; case 2: idS = "60"; break; default: idS = "Неизвестно"; break; } return idS; } /** * * Модель * * @return String */ public String getModel() { if (mpADIN == null) getAcquiringDeviceIdentificationNumber(); return mpADIN.get("modelDescription"); } /** * Версия анализирующего ПО и Системное ПО (Оно одинаковое плкрайне мере в * тех файлах что я тестил) * * @return String */ public String getVersionPO() { if (mpADIN == null) getAcquiringDeviceIdentificationNumber(); return scpecg.getSection1().getVerPO(); } /** * Серийный номер * * @return String */ public String getSerialNumber() { if (mpADIN == null) getAcquiringDeviceIdentificationNumber(); return scpecg.getSection1().getSerialnumber(); } /** * ПО,реализуещее протокол SCP * * @return String */ public String getPOSCP() { if (mpADIN == null) getAcquiringDeviceIdentificationNumber(); return scpecg.getSection1().getPOSCP(); } /** * Возвожности устройства * * @return String */ private void setCapabilitiesOfDevice() { if (mpADIN == null) getAcquiringDeviceIdentificationNumber(); String binput = Integer.toBinaryString(Integer.parseInt(mpADIN .get("capabilitiesCode"))); //init mas for(int i=0;i<8;i++) capabilitiesOfDevice[i]=0; int k=0; for (int i=binput.length()-1; i >=0 ; i--) { capabilitiesOfDevice[k] = Integer.valueOf(String.valueOf(binput .charAt(i))); k++; } } /** * Возможность печать * * @return boolean */ public boolean getPrint() { return capabilitiesOfDevice[4] != 0; } /** * Возможность анализа * * @return boolean */ public boolean getAnalysis() { return capabilitiesOfDevice[5] != 0; } /** * Возможность храниения * * @return boolean */ public boolean getStorage() { return capabilitiesOfDevice[6] != 0; } /** * Возможность приема * * @return boolean */ public boolean getReceive() { return capabilitiesOfDevice[7] != 0; } /** * Учреждение, записывавшее ЭКГ * * @return String */ public String getAcquiringInstitutionDescription() { return scpecg.getNamedField("AcquiringInstitutionDescription"); } /** * Учреждение, анализируещее ЭКГ * * @return String */ public String getAnalyzingInstitutionDescription() { return scpecg.getNamedField("AnalyzingInstitutionDescription"); } /** * Отдел, принимавший ЭКГ * * @return String */ public String getAcquiringDepartmentDescription() { return scpecg.getNamedField("AcquiringDepartmentDescription"); } /** * Отдел, анализировавший ЭКГ * * @return String */ public String getAnalyzingDepartmentDescription() { return scpecg.getNamedField("AnalyzingDepartmentDescription"); } /** * Направляющие врачи * * @return String */ public String getReferringPhysician() { return scpecg.getNamedField("ReferringPhysician"); } /** * Подтверждающие врачи * * @return String */ public String getLatestConfirmingPhysician() { return scpecg.getNamedField("LatestConfirmingPhysician"); } /** * Медсестры * * @return String */ public String getTechnicianDescription() { return scpecg.getNamedField("TechnicianDescription"); } /** * Комментарий * * @return String */ public String getFreeTextField() { return scpecg.getNamedField("FreeTextField"); } /** * Дата получения ЭКГ * * @return String */ public String getDateOfAcquisition() { return scpecg.getNamedField("DateOfAcquisition"); } /** * Время получения ЭКГ * * @return String */ public String getTimeOfAcquisition() { return scpecg.getNamedField("TimeOfAcquisition"); } }