コード例 #1
0
    def submit_order(self, order: OrderIn) -> dict:
        self._fill_in_sample_verified_organism(order.samples)
        # submit samples to LIMS
        project_data, lims_map = process_lims(lims_api=self.lims,
                                              lims_order=order,
                                              new_samples=order.samples)
        # prepare order for status database
        status_data = self.order_to_status(order)
        self._fill_in_sample_ids(status_data["samples"],
                                 lims_map,
                                 id_key="internal_id")

        # submit samples to Status
        samples = self.store_items_in_status(
            customer=status_data["customer"],
            order=status_data["order"],
            ordered=project_data["date"]
            if project_data else dt.datetime.now(),
            ticket=order.ticket,
            items=status_data["samples"],
            comment=status_data["comment"],
            data_analysis=Pipeline(status_data["data_analysis"]),
            data_delivery=DataDelivery(status_data["data_delivery"]),
        )
        return {"project": project_data, "records": samples}
コード例 #2
0
    def _process_case_samples(self, order: OrderIn) -> dict:
        """Process samples to be analyzed."""
        project_data = lims_map = None

        # submit new samples to lims
        new_samples = [
            sample for sample in order.samples if sample.internal_id is None
        ]
        if new_samples:
            project_data, lims_map = process_lims(lims_api=self.lims,
                                                  lims_order=order,
                                                  new_samples=new_samples)

        status_data = self.order_to_status(order=order)
        samples = [
            sample for family in status_data["families"]
            for sample in family["samples"]
        ]
        if lims_map:
            self._fill_in_sample_ids(samples, lims_map)

        new_families = self.store_items_in_status(
            customer=status_data["customer"],
            order=status_data["order"],
            ordered=project_data["date"]
            if project_data else dt.datetime.now(),
            ticket=order.ticket,
            items=status_data["families"],
        )
        return {"project": project_data, "records": new_families}
コード例 #3
0
 def submit_order(self, order: OrderIn) -> dict:
     """Submit a batch of metagenome samples."""
     project_data, lims_map = process_lims(lims_api=self.lims,
                                           lims_order=order,
                                           new_samples=order.samples)
     status_data = self.order_to_status(order)
     self._fill_in_sample_ids(status_data["samples"], lims_map)
     new_samples = self.store_items_in_status(
         customer=status_data["customer"],
         order=status_data["order"],
         ordered=project_data["date"],
         ticket=order.ticket,
         items=status_data["samples"],
     )
     self._add_missing_reads(new_samples)
     return {"project": project_data, "records": new_samples}
コード例 #4
0
 def submit_order(self, order: OrderIn) -> dict:
     status_data = self.order_to_status(order)
     project_data, lims_map = process_lims(lims_api=self.lims,
                                           lims_order=order,
                                           new_samples=order.samples)
     samples = [
         sample for pool in status_data["pools"]
         for sample in pool["samples"]
     ]
     self._fill_in_sample_ids(samples, lims_map, id_key="internal_id")
     new_records = self.store_items_in_status(
         customer=status_data["customer"],
         order=status_data["order"],
         ordered=project_data["date"],
         ticket=order.ticket,
         items=status_data["pools"],
     )
     return {"project": project_data, "records": new_records}