diff --git a/apps/cases/migrations/0001_initial.py b/apps/cases/migrations/0001_initial.py
index fb5b76c99705555b2ebea1aed3105013c56297d1..092ed458a3c1248220cd14dcd95eb62483ac7ca6 100644
--- a/apps/cases/migrations/0001_initial.py
+++ b/apps/cases/migrations/0001_initial.py
@@ -1,3 +1,5 @@
+# Generated by Django 3.0.1 on 2020-03-04 22:17
+
 from django.db import migrations, models
 import django.db.models.deletion
 import uuid
@@ -38,54 +40,7 @@ class Migration(migrations.Migration):
             options={
                 "verbose_name_plural": "case subjects",
                 "db_table": "case_subject",
-            },
-        ),
-        migrations.CreateModel(
-            name="InvestigationCase",
-            fields=[
-                (
-                    "revision_id",
-                    models.UUIDField(
-                        default=uuid.uuid4,
-                        editable=False,
-                        primary_key=True,
-                        serialize=False,
-                    ),
-                ),
-                ("case_id", models.UUIDField(default=uuid.uuid4)),
-                ("case_relation", models.CharField(blank=True, max_length=128)),
-                ("medical_symptoms", models.TextField(default="{}")),
-                ("risk_factors", models.TextField(default="{}")),
-                ("is_referral_needed", models.BooleanField(db_index=True)),
-                (
-                    "medical_facility_reference",
-                    models.CharField(blank=True, max_length=128),
-                ),
-                ("deleted_at", models.DateTimeField(blank=True, null=True)),
-                ("created_at", models.DateTimeField(auto_now_add=True)),
-                ("is_active", models.BooleanField(db_index=True, default=True)),
-                (
-                    "author",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.DO_NOTHING,
-                        related_name="investigation_case",
-                        to="accounts.Account",
-                    ),
-                ),
-                (
-                    "case_subject",
-                    models.ForeignKey(
-                        on_delete=django.db.models.deletion.CASCADE,
-                        related_name="investigation_case",
-                        to="cases.CaseSubject",
-                    ),
-                ),
-            ],
-            options={
-                "verbose_name_plural": "investigation cases",
-                "db_table": "investigation_case",
+                "ordering": ["-created_at"],
             },
         ),
         migrations.CreateModel(
@@ -101,6 +56,7 @@ class Migration(migrations.Migration):
                     ),
                 ),
                 ("case_id", models.UUIDField(default=uuid.uuid4)),
+                ("case_subject_id", models.UUIDField(blank=True, null=True)),
                 ("outcome", models.CharField(max_length=256)),
                 ("deleted_at", models.DateTimeField(blank=True, null=True)),
                 ("created_at", models.DateTimeField(auto_now_add=True)),
@@ -115,18 +71,11 @@ class Migration(migrations.Migration):
                         to="accounts.Account",
                     ),
                 ),
-                (
-                    "case_subject",
-                    models.ForeignKey(
-                        on_delete=django.db.models.deletion.CASCADE,
-                        related_name="positive_case",
-                        to="cases.CaseSubject",
-                    ),
-                ),
             ],
             options={
                 "verbose_name_plural": "positive cases",
                 "db_table": "positive_case",
+                "ordering": ["-created_at"],
             },
         ),
         migrations.CreateModel(
@@ -142,6 +91,8 @@ class Migration(migrations.Migration):
                     ),
                 ),
                 ("case_id", models.UUIDField(default=uuid.uuid4)),
+                ("investigation_case_id", models.UUIDField(blank=True, null=True)),
+                ("positive_case_id", models.UUIDField(blank=True, null=True)),
                 (
                     "is_referred",
                     models.BooleanField(blank=True, db_index=True, null=True),
@@ -171,41 +122,54 @@ class Migration(migrations.Migration):
                         to="accounts.Account",
                     ),
                 ),
+            ],
+            options={
+                "verbose_name_plural": "monitoring cases",
+                "db_table": "monitoring_case",
+                "ordering": ["-created_at"],
+            },
+        ),
+        migrations.CreateModel(
+            name="InvestigationCase",
+            fields=[
                 (
-                    "investigation_case",
-                    models.ForeignKey(
-                        blank=True,
-                        null=True,
-                        on_delete=django.db.models.deletion.CASCADE,
-                        related_name="investigation_monitoring_case",
-                        to="cases.InvestigationCase",
+                    "revision_id",
+                    models.UUIDField(
+                        default=uuid.uuid4,
+                        editable=False,
+                        primary_key=True,
+                        serialize=False,
                     ),
                 ),
+                ("case_id", models.UUIDField(default=uuid.uuid4)),
+                ("case_subject_id", models.UUIDField(blank=True, null=True)),
+                ("reference_case_id", models.UUIDField(blank=True, null=True)),
+                ("case_relation", models.CharField(blank=True, max_length=128)),
+                ("medical_symptoms", models.TextField(default="{}")),
+                ("risk_factors", models.TextField(default="{}")),
+                ("is_referral_needed", models.BooleanField(db_index=True)),
+                (
+                    "medical_facility_reference",
+                    models.CharField(blank=True, max_length=128),
+                ),
+                ("deleted_at", models.DateTimeField(blank=True, null=True)),
+                ("created_at", models.DateTimeField(auto_now_add=True)),
+                ("is_active", models.BooleanField(db_index=True, default=True)),
                 (
-                    "positive_case",
+                    "author",
                     models.ForeignKey(
                         blank=True,
                         null=True,
-                        on_delete=django.db.models.deletion.CASCADE,
-                        related_name="positive_monitoring_case",
-                        to="cases.PositiveCase",
+                        on_delete=django.db.models.deletion.DO_NOTHING,
+                        related_name="investigation_case",
+                        to="accounts.Account",
                     ),
                 ),
             ],
             options={
-                "verbose_name_plural": "monitoring cases",
-                "db_table": "monitoring_case",
+                "verbose_name_plural": "investigation cases",
+                "db_table": "investigation_case",
+                "ordering": ["-created_at"],
             },
         ),
-        migrations.AddField(
-            model_name="investigationcase",
-            name="reference_case",
-            field=models.ForeignKey(
-                blank=True,
-                null=True,
-                on_delete=django.db.models.deletion.CASCADE,
-                related_name="investigation_case",
-                to="cases.PositiveCase",
-            ),
-        ),
     ]
diff --git a/apps/cases/models.py b/apps/cases/models.py
index 8e42cdc6d6303ecc06d0e2ecb4434ae222b797eb..c95528055ade6e503d193a367ee121ae1a23b888 100644
--- a/apps/cases/models.py
+++ b/apps/cases/models.py
@@ -26,20 +26,19 @@ class CaseSubject(models.Model):
     class Meta:
         db_table = "case_subject"
         verbose_name_plural = "case subjects"
+        ordering = ["-created_at"]
 
     def delete(self):
         if self.deleted_at is None:
             self.is_active = False
-            self.deleted_at = datetime.now(tz=pytz.UTC)
+            self.deleted_at = datetime.now(tz=pytz.timezone("Asia/Jakarta"))
             self.save()
 
 
 class PositiveCase(models.Model):
     revision_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
     case_id = models.UUIDField(default=uuid.uuid4)
-    case_subject = models.ForeignKey(
-        CaseSubject, on_delete=models.CASCADE, related_name="positive_case"
-    )
+    case_subject_id = models.UUIDField(blank=True, null=True)
     outcome = models.CharField(max_length=256)
     author = models.ForeignKey(
         Account,
@@ -57,27 +56,26 @@ class PositiveCase(models.Model):
     class Meta:
         db_table = "positive_case"
         verbose_name_plural = "positive cases"
+        ordering = ["-created_at"]
 
     def delete(self):
         if self.deleted_at is None:
             self.is_active = False
-            self.deleted_at = datetime.now(tz=pytz.UTC)
+            self.deleted_at = datetime.now(tz=pytz.timezone("Asia/Jakarta"))
             self.save()
 
+    @property
+    def case_subject(self):
+        return CaseSubject.objects.filter(
+            is_active=True, deleted_at__isnull=True, subject_id=self.case_subject_id
+        ).first()
+
 
 class InvestigationCase(models.Model):
     revision_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
     case_id = models.UUIDField(default=uuid.uuid4)
-    case_subject = models.ForeignKey(
-        CaseSubject, on_delete=models.CASCADE, related_name="investigation_case"
-    )
-    reference_case = models.ForeignKey(
-        PositiveCase,
-        blank=True,
-        null=True,
-        on_delete=models.CASCADE,
-        related_name="investigation_case",
-    )
+    case_subject_id = models.UUIDField(blank=True, null=True)
+    reference_case_id = models.UUIDField(blank=True, null=True)
     case_relation = models.CharField(max_length=128, blank=True)
     medical_symptoms = models.TextField(default="{}")
     risk_factors = models.TextField(default="{}")
@@ -99,31 +97,32 @@ class InvestigationCase(models.Model):
     class Meta:
         db_table = "investigation_case"
         verbose_name_plural = "investigation cases"
+        ordering = ["-created_at"]
 
     def delete(self):
         if self.deleted_at is None:
             self.is_active = False
-            self.deleted_at = datetime.now(tz=pytz.UTC)
+            self.deleted_at = datetime.now(tz=pytz.timezone("Asia/Jakarta"))
             self.save()
 
+    @property
+    def reference_case(self):
+        return PositiveCase.objects.filter(
+            is_active=True, deleted_at__isnull=True, case_id=self.reference_case_id
+        ).first()
+
+    @property
+    def case_subject(self):
+        return CaseSubject.objects.filter(
+            is_active=True, deleted_at__isnull=True, subject_id=self.case_subject_id
+        ).first()
+
 
 class MonitoringCase(models.Model):
     revision_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
     case_id = models.UUIDField(default=uuid.uuid4)
-    investigation_case = models.ForeignKey(
-        InvestigationCase,
-        blank=True,
-        null=True,
-        on_delete=models.CASCADE,
-        related_name="investigation_monitoring_case",
-    )
-    positive_case = models.ForeignKey(
-        PositiveCase,
-        blank=True,
-        null=True,
-        on_delete=models.CASCADE,
-        related_name="positive_monitoring_case",
-    )
+    investigation_case_id = models.UUIDField(blank=True, null=True)
+    positive_case_id = models.UUIDField(blank=True, null=True)
     is_referred = models.BooleanField(blank=True, null=True, db_index=True)
     is_checked = models.BooleanField(blank=True, null=True, db_index=True)
     checking_date = models.DateField(blank=True, null=True)
@@ -147,6 +146,7 @@ class MonitoringCase(models.Model):
     class Meta:
         db_table = "monitoring_case"
         verbose_name_plural = "monitoring cases"
+        ordering = ["-created_at"]
 
     def save(self, *args, **kwargs):
         self.clean()
@@ -155,7 +155,7 @@ class MonitoringCase(models.Model):
     def clean(self):
         super(MonitoringCase, self).clean()
 
-        reference_cases = [self.positive_case, self.investigation_case]
+        reference_cases = [self.positive_case_id, self.investigation_case_id]
         if sum([case is not None for case in reference_cases]) > 1:
             raise ValidationError(
                 "Monitoring Case should refer to only 1 type of case (Investigation|Positive)"
@@ -164,5 +164,17 @@ class MonitoringCase(models.Model):
     def delete(self):
         if self.deleted_at is None:
             self.is_active = False
-            self.deleted_at = datetime.now(tz=pytz.UTC)
+            self.deleted_at = datetime.now(tz=pytz.timezone("Asia/Jakarta"))
             self.save()
+
+    @property
+    def investigation_case(self):
+        return InvestigationCase.objects.filter(
+            is_active=True, deleted_at__isnull=True, case_id=self.investigation_case_id
+        ).first()
+
+    @property
+    def positive_case(self):
+        return PositiveCase.objects.filter(
+            is_active=True, deleted_at__isnull=True, case_id=self.positive_case_id
+        ).first()
diff --git a/apps/cases/serializers.py b/apps/cases/serializers.py
index 1fc692091e0eec8ae9e22e72a0714be2c739f81a..f671a6be58c256af8efd5b4c24371776f778cbc5 100644
--- a/apps/cases/serializers.py
+++ b/apps/cases/serializers.py
@@ -8,6 +8,8 @@ from apps.cases.models import (
 
 
 class CaseSubjectSerializer(serializers.ModelSerializer):
+    is_active = serializers.BooleanField(read_only=True)
+
     class Meta:
         model = CaseSubject
         fields = [
@@ -19,29 +21,71 @@ class CaseSubjectSerializer(serializers.ModelSerializer):
             "address",
             "district",
             "sub_district",
+            "is_active",
         ]
 
 
-class InvestigationCaseSummarySerializer(serializers.ModelSerializer):
-    case_subject = CaseSubjectSerializer(read_only=True)
+class PositiveCaseSerializer(serializers.ModelSerializer):
+    is_active = serializers.BooleanField(read_only=True)
 
     class Meta:
-        model = InvestigationCase
+        model = PositiveCase
+        fields = [
+            "revision_id",
+            "case_id",
+            "case_subject_id",
+            "outcome",
+            "author",
+            "is_active",
+        ]
+
+
+class PositiveCaseSummarySerializer(serializers.ModelSerializer):
+    case_subject = serializers.SerializerMethodField()
+    is_active = serializers.BooleanField(read_only=True)
+
+    class Meta:
+        model = PositiveCase
         fields = [
             "revision_id",
             "case_id",
             "case_subject",
-            "reference_case",
+            "outcome",
+            "author",
+            "is_active",
+        ]
+
+    def get_case_subject(self, instance):
+        case_subject = instance.case_subject
+        if case_subject:
+            return CaseSubjectSerializer(case_subject).data
+
+
+class InvestigationCaseSerializer(serializers.ModelSerializer):
+    is_active = serializers.BooleanField(read_only=True)
+
+    class Meta:
+        model = InvestigationCase
+        fields = [
+            "revision_id",
+            "case_id",
+            "case_subject_id",
+            "reference_case_id",
             "case_relation",
             "medical_symptoms",
             "risk_factors",
             "is_referral_needed",
             "medical_facility_reference",
             "author",
+            "is_active",
         ]
 
 
-class InvestigationCaseSerializer(serializers.ModelSerializer):
+class InvestigationCaseSummarySerializer(serializers.ModelSerializer):
+    case_subject = serializers.SerializerMethodField()
+    reference_case = serializers.SerializerMethodField()
+    is_active = serializers.BooleanField(read_only=True)
+
     class Meta:
         model = InvestigationCase
         fields = [
@@ -55,17 +99,30 @@ class InvestigationCaseSerializer(serializers.ModelSerializer):
             "is_referral_needed",
             "medical_facility_reference",
             "author",
+            "is_active",
         ]
 
+    def get_case_subject(self, instance):
+        case_subject = instance.case_subject
+        if case_subject:
+            return CaseSubjectSerializer(case_subject).data
+
+    def get_reference_case(self, instance):
+        reference_case = instance.reference_case
+        if reference_case:
+            return PositiveCaseSerializer(reference_case).data
+
+
+class MonitoringCaseSerializer(serializers.ModelSerializer):
+    is_active = serializers.BooleanField(read_only=True)
 
-class MonitoringCaseSummarySerializer(serializers.ModelSerializer):
     class Meta:
         model = MonitoringCase
         fields = [
             "revision_id",
             "case_id",
-            "investigation_case",
-            "positive_case",
+            "investigation_case_id",
+            "positive_case_id",
             "is_referred",
             "is_checked",
             "is_regularly_treated",
@@ -73,30 +130,38 @@ class MonitoringCaseSummarySerializer(serializers.ModelSerializer):
             "treatment_end_date",
             "outcome",
             "author",
+            "is_active",
         ]
 
 
-class PositiveCaseSummarySerializer(serializers.ModelSerializer):
-    case_subject = CaseSubjectSerializer(read_only=True)
+class MonitoringCaseSummarySerializer(serializers.ModelSerializer):
+    investigation_case = serializers.SerializerMethodField()
+    positive_case = serializers.SerializerMethodField()
+    is_active = serializers.BooleanField(read_only=True)
 
     class Meta:
-        model = PositiveCase
+        model = MonitoringCase
         fields = [
             "revision_id",
             "case_id",
-            "case_subject",
+            "investigation_case",
+            "positive_case",
+            "is_referred",
+            "is_checked",
+            "is_regularly_treated",
+            "treatment_start_date",
+            "treatment_end_date",
             "outcome",
             "author",
+            "is_active",
         ]
 
+    def get_investigation_case(self, instance):
+        investigation_case = instance.investigation_case
+        if investigation_case:
+            return InvestigationCaseSerializer(investigation_case).data
 
-class PositiveCaseSerializer(serializers.ModelSerializer):
-    class Meta:
-        model = PositiveCase
-        fields = [
-            "revision_id",
-            "case_id",
-            "case_subject",
-            "outcome",
-            "author",
-        ]
+    def get_positive_case(self, instance):
+        positive_case = instance.positive_case
+        if positive_case:
+            return PositiveCaseSerializer(positive_case).data
diff --git a/apps/cases/tests/test_units/test_case_subjects.py b/apps/cases/tests/test_units/test_case_subjects.py
index a0a4ee5cb6053db409a90d98cdc68369340719d3..640fb373470c95a63da99e3a3a9f4897528db1fe 100644
--- a/apps/cases/tests/test_units/test_case_subjects.py
+++ b/apps/cases/tests/test_units/test_case_subjects.py
@@ -12,7 +12,7 @@ class CaseSubjectViewTest(TestCase):
     def setUp(self):
         self.case_subject_1 = CaseSubjectFactory(is_active=True)
         self.case_subject_2 = CaseSubjectFactory(
-            is_active=True, deleted_at=datetime.now(tz=pytz.UTC)
+            is_active=True, deleted_at=datetime.now(tz=pytz.timezone("Asia/Jakarta"))
         )
         self.case_subject_3 = CaseSubjectFactory(is_active=False)
 
@@ -192,10 +192,6 @@ class CaseSubjectViewTest(TestCase):
         self.assertEqual(current_deleted_count, prev_deleted_count + 1)
 
     def test_delete_inactive_case_subject_fails(self):
-        url = (
-            "/cases/case-subjects/"
-            + str(self.case_subject_3.revision_id)
-            + "/"
-        )
+        url = "/cases/case-subjects/" + str(self.case_subject_3.revision_id) + "/"
         response = self.client.delete(url)
         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
diff --git a/apps/cases/tests/test_units/test_investigation_cases.py b/apps/cases/tests/test_units/test_investigation_cases.py
index 30d4ad0ada70c22a52101ed72137da371202444d..a550ca24742cb1477aa86d818f23740e36abbfd5 100644
--- a/apps/cases/tests/test_units/test_investigation_cases.py
+++ b/apps/cases/tests/test_units/test_investigation_cases.py
@@ -31,7 +31,7 @@ class InvestigationCaseViewTest(TestCase):
             author=self.author,
             case_subject_id=self.case_subject.subject_id,
             reference_case_id=self.reference_case.case_id,
-            deleted_at=datetime.now(tz=pytz.UTC),
+            deleted_at=datetime.now(tz=pytz.timezone("Asia/Jakarta")),
         )
         self.other_inactive_case = InvestigationCaseFactory(
             author=self.author,
@@ -149,9 +149,13 @@ class InvestigationCaseViewTest(TestCase):
             current_active_investigation_case_revision_count,
             prev_active_investigation_case_revision_count,
         )
-    
+
     def test_edit_inactive_investigation_case_fails(self):
-        url = "/cases/investigation-cases/" + str(self.other_inactive_case.revision_id) + "/"
+        url = (
+            "/cases/investigation-cases/"
+            + str(self.other_inactive_case.revision_id)
+            + "/"
+        )
         data = {
             "case_subject_id": str(self.other_inactive_case.case_subject_id),
             "reference_case_id": str(self.reference_case.case_id),
@@ -167,7 +171,6 @@ class InvestigationCaseViewTest(TestCase):
         )
         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
 
-
     def test_edit_investigation_case_fails_with_incomplete_data(self):
         url = "/cases/investigation-cases/" + str(self.case.revision_id) + "/"
 
diff --git a/apps/cases/tests/test_units/test_monitoring_cases.py b/apps/cases/tests/test_units/test_monitoring_cases.py
index faba464f4ee3a2a1cdef49ab2c879cf3946f1f1f..274122ff20da815b56607bde48f29e991a7274e2 100644
--- a/apps/cases/tests/test_units/test_monitoring_cases.py
+++ b/apps/cases/tests/test_units/test_monitoring_cases.py
@@ -38,13 +38,14 @@ class MonitoringCaseViewTest(TestCase):
         self.other_deleted_case = MonitoringCaseFactory(
             author=self.author,
             positive_case_id=self.positive_case.case_id,
-            deleted_at=datetime.now(tz=pytz.UTC),
+            deleted_at=datetime.now(tz=pytz.timezone("Asia/Jakarta")),
         )
         self.other_inactive_case = MonitoringCaseFactory(
-            author=self.author, positive_case_id=self.positive_case.case_id, is_active=False,
+            author=self.author,
+            positive_case_id=self.positive_case.case_id,
+            is_active=False,
         )
 
-
     def test_list_monitoring_cases_success(self):
         url = "/cases/monitoring-cases/"
 
@@ -121,9 +122,11 @@ class MonitoringCaseViewTest(TestCase):
             current_active_monitoring_case_revision_count,
             prev_active_monitoring_case_revision_count,
         )
-    
+
     def test_edit_inactive_monitoring_case_fails(self):
-        url = "/cases/monitoring-cases/" + str(self.other_inactive_case.revision_id) + "/"
+        url = (
+            "/cases/monitoring-cases/" + str(self.other_inactive_case.revision_id) + "/"
+        )
 
         data = {
             "positive_case_id": str(self.positive_case.revision_id),
@@ -163,9 +166,7 @@ class MonitoringCaseViewTest(TestCase):
 
     def test_delete_inactive_monitoring_case_fails(self):
         url = (
-            "/cases/monitoring-cases/"
-            + str(self.other_inactive_case.revision_id)
-            + "/"
+            "/cases/monitoring-cases/" + str(self.other_inactive_case.revision_id) + "/"
         )
         response = self.client.delete(url)
         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
diff --git a/apps/cases/tests/test_units/test_positive_cases.py b/apps/cases/tests/test_units/test_positive_cases.py
index c4b0d11ea4bea243c685d248ee26d23a0faf2472..07008548d5219e7b8aa036787a4663567e13317e 100644
--- a/apps/cases/tests/test_units/test_positive_cases.py
+++ b/apps/cases/tests/test_units/test_positive_cases.py
@@ -22,10 +22,12 @@ class PositiveCaseViewTest(TestCase):
         self.other_deleted_case = PositiveCaseFactory(
             author=self.author,
             case_subject_id=self.case_subject.subject_id,
-            deleted_at=datetime.now(tz=pytz.UTC),
+            deleted_at=datetime.now(tz=pytz.timezone("Asia/Jakarta")),
         )
         self.other_inactive_case = PositiveCaseFactory(
-            author=self.author, case_subject_id=self.case_subject.subject_id, is_active=False,
+            author=self.author,
+            case_subject_id=self.case_subject.subject_id,
+            is_active=False,
         )
 
     def test_list_positive_cases_success(self):
@@ -129,7 +131,6 @@ class PositiveCaseViewTest(TestCase):
         )
         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
 
-
     def test_edit_positive_case_fails_with_incomplete_data(self):
         url = "/cases/positive-cases/" + str(self.case.revision_id) + "/"
 
@@ -169,10 +170,6 @@ class PositiveCaseViewTest(TestCase):
         )
 
     def test_delete_inactive_positive_case_fails(self):
-        url = (
-            "/cases/positive-cases/"
-            + str(self.other_inactive_case.revision_id)
-            + "/"
-        )
+        url = "/cases/positive-cases/" + str(self.other_inactive_case.revision_id) + "/"
         response = self.client.delete(url)
         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
diff --git a/apps/cases/views.py b/apps/cases/views.py
index d6f09840bcf637dd812cb12f9fff09fc33c4d279..99338aabc061b62290e668d1721f34be6fd2f9df 100644
--- a/apps/cases/views.py
+++ b/apps/cases/views.py
@@ -16,18 +16,18 @@ from apps.cases.serializers import (
     InvestigationCaseSummarySerializer,
     InvestigationCaseSerializer,
     MonitoringCaseSummarySerializer,
+    MonitoringCaseSerializer,
     PositiveCaseSummarySerializer,
     PositiveCaseSerializer,
 )
 
 
 class CaseSubjectViewSet(viewsets.ViewSet):
-    queryset = CaseSubject.objects.active_revisions()
     serializer_class = CaseSubjectSerializer
+    queryset = CaseSubject.objects.active_revisions()
 
     def list(self, request):
-        queryset = self.queryset
-        serializer = self.serializer_class(queryset, many=True)
+        serializer = self.serializer_class(self.queryset, many=True)
         return Response(serializer.data, status=status.HTTP_200_OK)
 
     def retrieve(self, request, pk=None):
@@ -38,7 +38,7 @@ class CaseSubjectViewSet(viewsets.ViewSet):
     def create(self, request):
         serializer = self.serializer_class(data=request.data)
         serializer.is_valid(raise_exception=True)
-        CaseSubject.objects.create(**serializer.validated_data)
+        serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED,)
 
     def update(self, request, pk=None):
@@ -52,12 +52,10 @@ class CaseSubjectViewSet(viewsets.ViewSet):
             subject_id=previous_instance.subject_id,
             is_active=True,
         )
-
         previous_instance.is_active = False
         previous_instance.save()
 
         update_serializer = self.serializer_class(instance=new_instance)
-
         return Response(update_serializer.data, status=status.HTTP_200_OK)
 
     def destroy(self, request, pk=None):
@@ -68,13 +66,10 @@ class CaseSubjectViewSet(viewsets.ViewSet):
 
 
 class InvestigationCaseViewSet(viewsets.ViewSet):
-    queryset = InvestigationCase.objects.active_revisions().select_related(
-        "case_subject"
-    )
+    queryset = InvestigationCase.objects.active_revisions()
 
     def list(self, request):
-        queryset = self.queryset
-        serializer = InvestigationCaseSummarySerializer(queryset, many=True)
+        serializer = InvestigationCaseSummarySerializer(self.queryset, many=True)
         return Response(serializer.data, status=status.HTTP_200_OK)
 
     def retrieve(self, request, pk=None):
@@ -111,30 +106,26 @@ class InvestigationCaseViewSet(viewsets.ViewSet):
 
 
 class MonitoringCaseViewSet(viewsets.ViewSet):
-    queryset = MonitoringCase.objects.active_revisions().select_related(
-        "positive_case", "investigation_case",
-    )
-    serializer_class = MonitoringCaseSummarySerializer
+    queryset = MonitoringCase.objects.active_revisions()
 
     def list(self, request):
-        queryset = self.queryset
-        serializer = self.serializer_class(queryset, many=True)
+        serializer = MonitoringCaseSummarySerializer(self.queryset, many=True)
         return Response(serializer.data, status=status.HTTP_200_OK)
 
     def retrieve(self, request, pk=None):
         instance = get_object_or_404(self.queryset, pk=pk)
-        serializer = self.serializer_class(instance)
+        serializer = MonitoringCaseSummarySerializer(instance)
         return Response(serializer.data, status=status.HTTP_200_OK)
 
     def create(self, request):
-        serializer = self.serializer_class(data=request.data)
+        serializer = MonitoringCaseSerializer(data=request.data)
         serializer.is_valid(raise_exception=True)
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED,)
 
     def update(self, request, pk=None):
         previous_instance = get_object_or_404(self.queryset, pk=pk)
-        serializer = self.serializer_class(previous_instance, data=request.data)
+        serializer = MonitoringCaseSerializer(previous_instance, data=request.data)
         serializer.is_valid(raise_exception=True)
 
         serializer_data = serializer.validated_data
@@ -145,7 +136,7 @@ class MonitoringCaseViewSet(viewsets.ViewSet):
         previous_instance.is_active = False
         previous_instance.save()
 
-        update_serializer = self.serializer_class(instance=new_instance)
+        update_serializer = MonitoringCaseSummarySerializer(instance=new_instance)
         return Response(update_serializer.data, status=status.HTTP_200_OK)
 
     def destroy(self, request, pk=None):
@@ -156,11 +147,10 @@ class MonitoringCaseViewSet(viewsets.ViewSet):
 
 
 class PositiveCaseViewSet(viewsets.ViewSet):
-    queryset = PositiveCase.objects.active_revisions().select_related("case_subject")
+    queryset = PositiveCase.objects.active_revisions()
 
     def list(self, request):
-        queryset = self.queryset
-        serializer = PositiveCaseSummarySerializer(queryset, many=True)
+        serializer = PositiveCaseSummarySerializer(self.queryset, many=True)
         return Response(serializer.data, status=status.HTTP_200_OK)
 
     def retrieve(self, request, pk=None):
@@ -183,7 +173,6 @@ class PositiveCaseViewSet(viewsets.ViewSet):
             is_active=True,
             **serializer.validated_data,
         )
-
         previous_instance.is_active = False
         previous_instance.save()
 
diff --git a/apps/commons/managers.py b/apps/commons/managers.py
index d9b778a35f2e0d31fd153170f00c7aab546d4d38..9a9d212039d15f64f07d687c84e6524f4e41fa7f 100644
--- a/apps/commons/managers.py
+++ b/apps/commons/managers.py
@@ -2,16 +2,18 @@ from django.db import models
 
 
 class SoftObjectManager(models.Manager):
-    def all(self, with_deleted=False):
-        queryset = self.get_queryset()
+    def get_queryset(self, with_deleted=False):
         if with_deleted:
-            return queryset
-        return queryset.filter(deleted_at__isnull=True)
+            return super().get_queryset()
+        return super().get_queryset().filter(deleted_at__isnull=True)
+
+    def all(self, with_deleted=False):
+        return self.get_queryset(with_deleted=with_deleted)
 
     def deleted(self):
-        queryset = self.get_queryset()
+        queryset = self.get_queryset(with_deleted=True)
         return queryset.filter(deleted_at__isnull=False)
 
     def active_revisions(self):
         queryset = self.get_queryset()
-        return queryset.filter(deleted_at__isnull=True, is_active=True)
+        return queryset.filter(is_active=True)
diff --git a/project/settings.py b/project/settings.py
index 5c64c72445c286cca8e209fb1d19583b28ce33b1..1432f0cd4a31b71cef0b6a4aba57c6b0c58de4fb 100644
--- a/project/settings.py
+++ b/project/settings.py
@@ -127,7 +127,7 @@ REST_FRAMEWORK = {
 
 LANGUAGE_CODE = "en-us"
 
-TIME_ZONE = "UTC"
+TIME_ZONE = "Asia/Jakarta"
 
 USE_I18N = True