public String processRequest()

in clns-eTarget/src/main/java/org/digitalecmt/etarget/GetMutationSelection.java [68:196]


	public String processRequest() {
		if (!super.isUserPermittedEndpoint(userID, "GetMutationSelection")) {
			// Stop the request if user doesn't have permission for this API or web
			// component
			Map<String,String> response = new HashMap<>();
	    	response.put("success", "false");
	    	response.put("error", "User not permitted to access: GetMutationSelection");
	    	return new Gson().toJson(response);
		} else {
			// Process the request
			try {
				//get configured sources
				List<ConfigDataSources> addSources = (List<ConfigDataSources>)this.getContext().getBean("configuredDataSources");
				
				// new version
//				List<Map<String,String>> allGenes = new ArrayList<Map<String,String>>();
				List<Map<String,Object>> ctDNA = new ArrayList<Map<String,Object>>();
				List<Map<String,Object>> tumourNGS = new ArrayList<Map<String,Object>>();
				Map<String,List<Map<String,String>>> fmTumour = new HashMap<>();
				List<Map<String,String>> fmTumourSV = new ArrayList<Map<String,String>>();
				List<Map<String,String>> fmTumourR = new ArrayList<Map<String,String>>();
				List<Map<String,String>> fmTumourCNA = new ArrayList<Map<String,String>>();
				Map<String,List<Map<String,String>>> fmBlood = new HashMap<>();
				List<Map<String,String>> fmBloodSV = new ArrayList<Map<String,String>>();
				List<Map<String,String>> fmBloodR = new ArrayList<Map<String,String>>();
				List<Map<String,String>> fmBloodCNA = new ArrayList<Map<String,String>>();
				Map<String,Map<String,List<Map<String,String>>>> addSourcesMap = new HashMap<>();
				for(ConfigDataSources cds : addSources) {
					List<Map<String,String>> sv = new ArrayList<Map<String,String>>();
					List<Map<String,String>> r = new ArrayList<Map<String,String>>();
					List<Map<String,String>> cna = new ArrayList<Map<String,String>>();
					Map<String,List<Map<String,String>>> newSource = new HashMap<>();
					newSource.put("shortVariant", sv);
					newSource.put("copyNumberAlteration", cna);
					newSource.put("rearrangement", r);
					addSourcesMap.put(cds.getFront_end_name(), newSource);
				}
				
				MutationSelectionDAO mutationSelectionDao = this.getContext().getBean(MutationSelectionDAO.class);
				GeneSubsetDAO genesubset = this.getContext().getBean(GeneSubsetDAO.class);
				TumourNgsDAO tumourNgs = this.getContext().getBean(TumourNgsDAO.class);
				FoundationMedicineDAO fm = this.getContext().getBean(FoundationMedicineDAO.class);
				List<SelectedGeneVariant> resultSet = mutationSelectionDao
						.getSelectedMutationsByPersonID(personIDint);
				for(SelectedGeneVariant sgv : resultSet) {
					if(sgv.getType().compareTo("CTDNA")==0) {
						GeneSubsetExt result =GeneSubsetExt.getGeneSubsetExt(genesubset.findGeneSubsetByGeneVarientID(personIDint, sgv.getMeasurement_gene_variant_id()));
						ctDNA.add(Formater.formatCTDNA(result));
					} else if(sgv.getType().compareTo("NGS")==0) {
						TumourNgsExt result = TumourNgsExt.getTumourNgsExt(tumourNgs.findTumourNgsByGeneVarientID(personIDint, sgv.getMeasurement_gene_variant_id()));
						tumourNGS.add(Formater.formatTumourNgs(result));
					} else if(sgv.getType().compareTo("FMTumourSV")==0) {
						ShortVariant sv = fm.getTumourShortVariantByGeneVariantID(sgv.getMeasurement_gene_variant_id());
//						sv.setBaseline(fm.getTumourBaseline(sv.getMeasurement_gene_panel_id()));
						fmTumourSV.add(Formater.formatShortVariant(sv));
					} else if(sgv.getType().compareTo("FMTumourCNA")==0) {
						CopyNumberAlteration cna = fm.getTumourCopyNumberAlterationByGeneVariantID(sgv.getMeasurement_gene_variant_id());
//						cna.setBaseline(fm.getTumourBaseline(cna.getMeasurement_gene_panel_id()));
						fmTumourCNA.add(Formater.formatCopyNumberAlteration(cna));
					} else if(sgv.getType().compareTo("FMTumourR")==0) {
						Rearrangement r = fm.getTumourRearrangementByGeneVariantID(sgv.getMeasurement_gene_variant_id());
//						r.setBaseline(fm.getTumourBaseline(r.getMeasurement_gene_panel_id()));
						fmTumourR.add(Formater.formatRearrangement(r));
					} else if(sgv.getType().compareTo("FMBloodSV")==0) {
						ShortVariant sv = fm.getShortVariantByGeneVariantID(sgv.getMeasurement_gene_variant_id());
						log.info("FMBlood SV " + sv.getGene_name());
						fmBloodSV.add(Formater.formatShortVariant(sv));
					} else if(sgv.getType().compareTo("FMBloodCNA")==0) {
						CopyNumberAlteration cna = fm.getCopyNumberAlterationByGeneVariantID(sgv.getMeasurement_gene_variant_id());
						log.info("FMBlood CNA " + cna.getGene_name());
						fmBloodCNA.add(Formater.formatCopyNumberAlteration(cna));
					} else if(sgv.getType().compareTo("FMBloodR")==0) {
						Rearrangement r = fm.getRearrangementByGeneVariantID(sgv.getMeasurement_gene_variant_id());
						log.info("FMBlood R " + r.getRearr_gene_1_name());
						fmBloodR.add(Formater.formatRearrangement(r));
						log.info("size " + fmBloodR.size());
					}
					for(ConfigDataSources cds : addSources) {
						if(sgv.getType().compareTo(cds.getFront_end_name()+"SV")==0){
							ShortVariant sv = fm.getShortVariantByGeneVariantID(sgv.getMeasurement_gene_variant_id());
//							if(cds.getIsTumour()) {
//								sv.setBaseline(fm.getTumourBaseline(sv.getMeasurement_gene_panel_id()));
//							}
							log.info("addSource " + sv.getGene_name());
							addSourcesMap.get(cds.getFront_end_name()).get("shortVariant").add(Formater.formatShortVariant(sv));
						} else if(sgv.getType().compareTo(cds.getFront_end_name()+"CNA")==0){
							CopyNumberAlteration cna = fm.getCopyNumberAlterationByGeneVariantID(sgv.getMeasurement_gene_variant_id());
//							if(cds.getIsTumour()) {
//								cna.setBaseline(fm.getTumourBaseline(cna.getMeasurement_gene_panel_id()));
//							}
							log.info("addSource " + cna.getGene_name());
							addSourcesMap.get(cds.getFront_end_name()).get("copyNumberAlteration").add(Formater.formatCopyNumberAlteration(cna));
						} else if(sgv.getType().compareTo(cds.getFront_end_name()+"R")==0){
							Rearrangement r = fm.getRearrangementByGeneVariantID(sgv.getMeasurement_gene_variant_id());
//							if(cds.getIsTumour()) {
//								r.setBaseline(fm.getTumourBaseline(r.getMeasurement_gene_panel_id()));
//							}
							log.info("addSource " + r.getRearr_gene_1_name());
							addSourcesMap.get(cds.getFront_end_name()).get("rearrangement").add(Formater.formatRearrangement(r));
						}
					}
				}
				
				fmTumour.put("copyNumberAlteration", fmTumourCNA);
				fmTumour.put("rearrangement", fmTumourR);
				fmTumour.put("shortVariant", fmTumourSV);
				fmBlood.put("copyNumberAlteration", fmBloodCNA);
				fmBlood.put("rearrangement", fmBloodR);
				log.info("size end " + fmBloodR.size() + " " + fmBlood.get("rearrangement").size());
				fmBlood.put("shortVariant", fmBloodSV);
				Map<String,Object> mutationData=new HashMap<String,Object>();
				mutationData.put("tumourNGS", tumourNGS);
				mutationData.put("ctDNA", ctDNA);
				mutationData.put("fmTumour", fmTumour);
				mutationData.put("fmBlood", fmBlood);
				mutationData.put("genericGenomic", addSourcesMap);
				
				log.info(new Gson().toJson(mutationData));
				return new Gson().toJson(mutationData);

			} catch (Exception e) {
				log.log(Level.SEVERE, e.getMessage(),e);
				Map<String,String> response = new HashMap<>();
		    	response.put("success", "false");
		    	response.put("error", "Failed to get mutation selection.");
		    	return new Gson().toJson(response);
			}
		}
	}