예제 #1
0
  /** Populates ArrayList with labs attached to a consultation request */
  public ArrayList<LabResultData> populatePathnetResultsData(
      String demographicNo, String consultationId, boolean attached) {
    ArrayList<LabResultData> labResults = new ArrayList<LabResultData>();
    ArrayList<LabResultData> attachedLabs = new ArrayList<LabResultData>();
    try {
      ConsultDocsDao dao = SpringUtils.getBean(ConsultDocsDao.class);
      for (Object[] o : dao.findDocs(ConversionUtils.fromIntString(consultationId))) {
        ConsultDocs c = (ConsultDocs) o[0];

        LabResultData lbData = new LabResultData(LabResultData.EXCELLERIS);
        lbData.labPatientId = "" + c.getDocumentNo();
        attachedLabs.add(lbData);
      }

      LabResultData lbData = new LabResultData(LabResultData.EXCELLERIS);
      LabResultData.CompareId c = lbData.getComparatorId();

      Hl7MessageDao hmDao = SpringUtils.getBean(Hl7MessageDao.class);
      for (Object[] o :
          hmDao.findByDemographicAndLabType(ConversionUtils.fromIntString(demographicNo), "BCP")) {
        Hl7Message m = (Hl7Message) o[0];
        PatientLabRouting r = (PatientLabRouting) o[1];

        lbData.labType = LabResultData.EXCELLERIS;
        lbData.segmentID = "" + m.getId();
        lbData.labPatientId = "" + r.getId();
        lbData.dateTime = findPathnetObservationDate(lbData.segmentID);
        lbData.discipline = findPathnetDisipline(lbData.segmentID);

        if (attached && Collections.binarySearch(attachedLabs, lbData, c) >= 0)
          labResults.add(lbData);
        else if (!attached && Collections.binarySearch(attachedLabs, lbData, c) < 0)
          labResults.add(lbData);

        lbData = new LabResultData(LabResultData.EXCELLERIS);
      }
    } catch (Exception e) {
      logger.error("exception in CMLPopulate:", e);
    }
    return labResults;
  }