--- a
+++ b/AICare-baselines/metrics/__init__.py
@@ -0,0 +1,45 @@
+import torch
+
+from .binary_classification_metrics import get_binary_metrics
+from .es import es_score
+from .osmae import osmae_score
+from .regression_metrics import get_regression_metrics
+from .utils import check_metric_is_better
+
+
+def reverse_los(y, los_info):
+    return y * los_info["los_std"] + los_info["los_mean"]
+
+def get_all_metrics(preds, labels, task, los_info):
+    threshold = los_info["threshold"]
+    large_los = los_info["large_los"]
+
+    # convert preds and labels to tensor if they are ndarray type
+    if isinstance(preds, torch.Tensor) == False:
+        preds = torch.tensor(preds)
+    if isinstance(labels, torch.Tensor) == False:
+        labels = torch.tensor(labels)
+
+    if task == "outcome":
+        y_true_los = reverse_los(labels[:,1], los_info)
+        return get_binary_metrics(preds, labels[:,0])
+    elif task == "los":
+        y_pred_los = reverse_los(preds, los_info)
+        y_true_los = reverse_los(labels[:,1], los_info)
+        return get_regression_metrics(y_pred_los, y_true_los)
+    elif task == "multitask":
+        if not isinstance(threshold, list):
+            y_pred_los = reverse_los(preds[:,1], los_info)
+            y_true_los = reverse_los(labels[:,1], los_info)
+            return get_binary_metrics(preds[:,0], labels[:,0]) | get_regression_metrics(y_pred_los, y_true_los) | osmae_score(labels[:,0], y_true_los, preds[:,0], y_pred_los, large_los, threshold) | es_score(labels[:,0], y_true_los, preds[:,0], threshold)
+        else:
+            y_pred_los = reverse_los(preds[:,1], los_info)
+            y_true_los = reverse_los(labels[:,1], los_info)
+            osmae_list = []
+            es_list = []
+            for thr in threshold:
+                osmae_list.append(osmae_score(labels[:,0], y_true_los, preds[:,0], y_pred_los, large_los, thr)['osmae'])
+                es_list.append(es_score(labels[:,0], y_true_los, preds[:,0], thr)['es'])
+            return {"osmae_list": osmae_list, "es_list": es_list}
+    else:
+        raise ValueError("Task not supported")
\ No newline at end of file