Exemplo n.º 1
0
  private void populateSpecimensWithAlternateContainers(
      OrderSpecimenVoCollection potentialSpecimens,
      HashMap<
              OrderSpecimenVo,
              HashMap<PathSpecimenContainerDetailVo, OrderInvestigationVoCollection>>
          alternativeContainers) {
    // Clear grid
    form.grdItems().getRows().clear();

    if (potentialSpecimens == null) return;

    for (OrderSpecimenVo specimen : potentialSpecimens) {
      HashMap<PathSpecimenContainerDetailVo, OrderInvestigationVoCollection>
          specimenAlternateContainers = alternativeContainers.get(specimen);

      if (specimenHasOptions(specimenAlternateContainers)) {
        // Create Specimen parent row
        grdItemsRow specimenRow = form.grdItems().getRows().newRow();

        // Add investigation rows
        float totalRequiredVolume =
            addInvestigationsWithAlternates(
                specimen.getInvestigations(), specimenRow, specimenAlternateContainers);

        // Set specimen text
        specimenRow.setColText(getSpecimenDisplayText(specimen, totalRequiredVolume));
        // Expand Specimen parent row
        specimenRow.setExpanded(true);
      }
    }
  }
Exemplo n.º 2
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);
  }
Exemplo n.º 3
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;
  }