Example #1
0
  private boolean specimenHasOptions(
      HashMap<PathSpecimenContainerDetailVo, OrderInvestigationVoCollection>
          specimenAlternateContainers) {
    Set<PathSpecimenContainerDetailVo> keys = specimenAlternateContainers.keySet();

    for (PathSpecimenContainerDetailVo specimenContainer : keys) {
      OrderInvestigationVoCollection values = specimenAlternateContainers.get(specimenContainer);

      if (values != null && values.size() > 1) {
        for (OrderInvestigationVo investigation : values) {
          PathInvDetailsVo pathologyDetails = null;

          if (investigation.getInvestigation().getParentInvestigationPathDetails() != null) {
            pathologyDetails = investigation.getInvestigation().getParentInvestigationPathDetails();
          } else {
            pathologyDetails = investigation.getInvestigation().getPathInvDetails();
          }

          SpecimenVo specimenVo = pathologyDetails.getSpecimens().get(0);

          if (specimenVo.getAlternativePaediatricContainers() != null) {
            for (SpecimenContainerVo container : specimenVo.getAlternativePaediatricContainers()) {
              if (container.getSpecContainer().equals(specimenContainer)) return true;
            }
          }
        }
      }
    }

    return false;
  }
Example #2
0
  private String getInvestigationDisplayText(
      OrderInvestigationVo investigation, PathInvDetailsVo pathologyDetails) {
    if (investigation == null || pathologyDetails == null)
      throw new CodingRuntimeException("Logical error - parameters can't be null");

    StringBuilder displayString = new StringBuilder();

    displayString.append(investigation.getInvestigation().getInvestigationIndex().getName());
    displayString.append(" - ");
    displayString.append(
        pathologyDetails
            .getSpecimens()
            .get(0)
            .getPaediatricContainers()
            .get(0)
            .getSpecContainer()
            .getName());
    displayString
        .append(" (")
        .append(
            pathologyDetails.getSpecimens().get(0).getPaediatricContainers().get(0).getVolume());
    displayString.append(" mls)");

    return displayString.toString();
  }
Example #3
0
  /**
   * Build a hash map with OderSpecimen as key, configured SpecimenContainer as secondary key, and
   * OrderInvestigation collection as values
   *
   * <p>Instead of comparing every specimen container from every investigation with every specimen
   * from other investigations, build a hash map with OrderSpecimen primary key, SpecimenContainer
   * secondary key and add all investigations from an OrderSpecimen that have SpecimenContainer
   * configured. If there are more than one investigation in the collection, then that
   * SpecimenContainer is common to more than one investigation for the OrderSpecimen
   */
  private HashMap<
          OrderSpecimenVo, HashMap<PathSpecimenContainerDetailVo, OrderInvestigationVoCollection>>
      buildHashMapOfAlternativeContainers(OrderSpecimenVoCollection myOrderPotentialSpecimens) {
    if (myOrderPotentialSpecimens == null || myOrderPotentialSpecimens.size() == 0) return null;

    HashMap<OrderSpecimenVo, HashMap<PathSpecimenContainerDetailVo, OrderInvestigationVoCollection>>
        generalAlternativeContainers =
            new HashMap<
                OrderSpecimenVo,
                HashMap<PathSpecimenContainerDetailVo, OrderInvestigationVoCollection>>();

    for (OrderSpecimenVo specimen : myOrderPotentialSpecimens) {
      HashMap<PathSpecimenContainerDetailVo, OrderInvestigationVoCollection>
          specimenAlternativeContainers =
              new HashMap<PathSpecimenContainerDetailVo, OrderInvestigationVoCollection>();

      for (int i = 0; i < specimen.getInvestigations().size(); i++) {
        OrderInvestigationVo investigation =
            (OrderInvestigationVo)
                specimen.getInvestigations().get(i); // Unsafe upcast due to performance reasons
        PathInvDetailsVo pathologyDetails = null;

        if (investigation.getInvestigation().getParentInvestigationPathDetails() != null) {
          pathologyDetails = investigation.getInvestigation().getParentInvestigationPathDetails();
        } else {
          pathologyDetails = investigation.getInvestigation().getPathInvDetails();
        }

        SpecimenVo specimenVo = pathologyDetails.getSpecimens().get(0);

        PathSpecimenContainerDetailVo pediatricContainer =
            specimenVo.getPaediatricContainers().get(0).getSpecContainer();
        addSpecimenInvestigationToMap(
            specimenAlternativeContainers, investigation, pediatricContainer);

        for (SpecimenContainerVo containers : specimenVo.getAlternativePaediatricContainers()) {
          addSpecimenInvestigationToMap(
              specimenAlternativeContainers, investigation, containers.getSpecContainer());
        }
      }

      generalAlternativeContainers.put(specimen, specimenAlternativeContainers);
    }

    return generalAlternativeContainers;
  }
Example #4
0
  private String getSpecimenDisplayText(OrderSpecimenVo specimen, float totalRequiredVolume) {
    // If the specimen doesn't have any investigations then display nothing
    if (specimen == null
        || specimen.getInvestigations() == null
        || specimen.getInvestigations().size() == 0) return "";

    StringBuilder displayText = new StringBuilder();

    // Get the first investigation
    OrderInvestigationVo firstInvestigation =
        (OrderInvestigationVo) specimen.getInvestigations().get(0);
    // Display the service name from first investigation
    displayText.append(
        firstInvestigation
            .getInvestigation()
            .getProviderService()
            .getLocationService()
            .getService()
            .getServiceName());
    // Display specimen type
    displayText
        .append(" (")
        .append(
            firstInvestigation
                .getInvestigation()
                .getPathInvDetails()
                .getSpecimens()
                .get(0)
                .getType()
                .getText())
        .append(") ");

    if (specimen.getSiteCd() != null) {
      displayText.append(specimen.getSiteCd().getText());
    }

    displayText.append(" - ").append(String.valueOf(totalRequiredVolume)).append(" mls");

    return displayText.toString();
  }
Example #5
0
  @Override
  protected void onBtnOkClick() throws ims.framework.exceptions.PresentationLogicException {
    boolean atLeastOneContainerNotSelected = false;

    // collect choices made and then repopulate back to the original investigations config and run
    // the container calculation again
    OrderInvestigationVoCollection voCollRewrittenConfig = new OrderInvestigationVoCollection();
    for (int i = 0; i < form.grdItems().getRows().size(); i++) {
      grdItemsRow row = form.grdItems().getRows().get(i);

      for (int p = 0; p < row.getRows().size(); p++) {
        grdItemsRow cRow = row.getRows().get(p);

        OrderInvestigationVo voOrderInv = cRow.getValue();
        PathInvDetailsVo pathInvDetails1 = null;
        if (voOrderInv.getInvestigation().getParentInvestigationPathDetailsIsNotNull())
          pathInvDetails1 = voOrderInv.getInvestigation().getParentInvestigationPathDetails();
        else pathInvDetails1 = voOrderInv.getInvestigation().getPathInvDetails();

        boolean isPaed = isUsePaedContainer();
        if (isPaed)
          voOrderInv.setChosenContainer((SpecimenContainerVo) cRow.getColContainer().getValue());
        //
        //	pathInvDetails1.getSpecimens().get(0).getPaediatricContainers().get(0).setSpecContainer((PathSpecimenContainerDetailVo) cRow.getColContainer().getValue());
        //				else - There are no more alternative containers to the adult
        //
        //	pathInvDetails1.getSpecimens().get(0).getAdultContainers().get(0).setSpecContainer((PathSpecimenContainerDetailVo) cRow.getColContainer().getValue());

        // WDEV-11730
        if (cRow.getColContainer().getValue() == null) {
          atLeastOneContainerNotSelected = true;
        }

        // modifying the config here
        if (voOrderInv.getInvestigation().getParentInvestigationPathDetailsIsNotNull())
          voOrderInv.getInvestigation().setParentInvestigationPathDetails(pathInvDetails1);
        else voOrderInv.getInvestigation().setPathInvDetails(pathInvDetails1);

        voCollRewrittenConfig.add(voOrderInv);
      }
    }

    // WDEV-11730
    if (atLeastOneContainerNotSelected) {
      engine.showMessage("Please select Alternative Containers for all Investigations");
      return;
    }

    form.getGlobalContext().OCRR.setReWrittenOrderInvestigations(voCollRewrittenConfig);
    engine.close(DialogResult.OK);
  }
Example #6
0
  private float addInvestigationsWithAlternates(
      OrderInvestigationRefVoCollection investigations,
      grdItemsRow specimenRow,
      HashMap<PathSpecimenContainerDetailVo, OrderInvestigationVoCollection>
          alternativeContainers) {
    if (investigations == null || investigations.size() == 0)
      throw new CodingRuntimeException(
          "Logical Error - can't choose alternative containers for specimens without investigations");

    float totalRequiedVolume = 0;

    for (OrderInvestigationRefVo investigationRef : investigations) {
      // Upcast - possible error, but done due to performance consideration
      OrderInvestigationVo investigation = (OrderInvestigationVo) investigationRef;

      // Get investigation pathology details
      // Favor parent investigation Pathology Details - this might indicate an add-on investigation
      PathInvDetailsVo pathologyDetails = null;
      if (investigation.getInvestigation().getParentInvestigationPathDetails() != null) {
        pathologyDetails = investigation.getInvestigation().getParentInvestigationPathDetails();
      } else {
        pathologyDetails = investigation.getInvestigation().getPathInvDetails();
      }

      // Create child row for OrderInvestigationVo
      grdItemsRow investigationRow = specimenRow.getRows().newRow();

      // Set investigation name and value to row
      investigationRow.setColText(getInvestigationDisplayText(investigation, pathologyDetails));
      investigationRow.setValue(investigation);

      boolean isPaed = isUsePaedContainer();

      if (isPaed) {
        // Get specimen from pathology details - implementation only for Simple Investigation
        // Revise code when implementing Complex investigations
        SpecimenVo specimen = pathologyDetails.getSpecimens().get(0);
        // Pediatric container - alternate containers can only be configured for investigations with
        // only one pediatric container; any investigation must contain at least one pediatric
        // container
        SpecimenContainerVo paediatricContainer = specimen.getPaediatricContainers().get(0);

        investigationRow
            .getColContainer()
            .newRow(paediatricContainer, paediatricContainer.getSpecContainer().getName());
        investigationRow.getColContainer().setValue(paediatricContainer);

        totalRequiedVolume +=
            pathologyDetails.getSpecimens().get(0).getPaediatricContainers().get(0).getVolume();

        if (specimen.getAlternativePaediatricContainers() != null) {
          int addedAlternatives = 0;

          for (SpecimenContainerVo alternatePaedContainer :
              specimen.getAlternativePaediatricContainers()) {
            OrderInvestigationVoCollection orderInvestigations =
                alternativeContainers.get(alternatePaedContainer.getSpecContainer());

            if (orderInvestigations != null
                && orderInvestigations.size() > 1
                && orderInvestigations.contains(investigation)) {
              alternatePaedContainer
                  .getSpecContainer()
                  .setAlternativeVol(alternatePaedContainer.getVolume());
              investigationRow
                  .getColContainer()
                  .newRow(
                      alternatePaedContainer, alternatePaedContainer.getSpecContainer().getName());

              addedAlternatives++;
            }
          }

          investigationRow.setColContainerReadOnly(addedAlternatives == 0);
        }
      }
    }

    return totalRequiedVolume;
  }