code: def fill_slots_headers(self, items):
          
          prev_position = 0
          for item in items:
              item_position = item["Pos"]
              if item_position == prev_position:
                  item = self.skip_item_key(item, "Pos")
                  # head slot already filled
                  continue
              if item.get("disabled", False):
                  # empty slot
                  continue
  
              # This is the first analysis found for the given position, add the
              # slot info in there and apply a rowspan accordingly.
              rowspan = self.items_rowspans.get(item_position, 1)
              prev_position = item_position
              item["rowspan"] = {"Pos": rowspan}
              item["replace"]["Pos"] = self.get_slot_header(item)
docs: Generates the header cell for each slot. For each slot, the first
          cell displays information about the parent all analyses within that
          given slot have in common, such as the AR Id, SampleType, etc.
  
          :param items: dictionary with items to be rendered in the list