diff --git a/iTrust/sql/data/deadPatient1.sql b/iTrust/sql/data/deadPatient1.sql
new file mode 100644
index 0000000000000000000000000000000000000000..cdd9eb006ba7eccacc2fcece03c7783f9d3ff37e
--- /dev/null
+++ b/iTrust/sql/data/deadPatient1.sql
@@ -0,0 +1,6 @@
+INSERT INTO patients (MID, Gender, DateOfDeath, CauseOfDeath) 
+VALUES (81,'Male','2019-07-01',84.50);
+
+
+INSERT INTO officevisits(id,HCPID,PatientID)
+VALUES (201,9000000000,81);
\ No newline at end of file
diff --git a/iTrust/sql/data/deadPatient10.sql b/iTrust/sql/data/deadPatient10.sql
new file mode 100644
index 0000000000000000000000000000000000000000..2660e9b5bea0dca612d5c66319375190ab77e842
--- /dev/null
+++ b/iTrust/sql/data/deadPatient10.sql
@@ -0,0 +1,6 @@
+INSERT INTO patients (MID, Gender, DateOfDeath, CauseOfDeath) 
+VALUES (90,'Male','2019-01-01',487.00);
+
+
+INSERT INTO officevisits(id,HCPID,PatientID)
+VALUES (210,9000000001,90);
\ No newline at end of file
diff --git a/iTrust/sql/data/deadPatient2.sql b/iTrust/sql/data/deadPatient2.sql
new file mode 100644
index 0000000000000000000000000000000000000000..1e6152991dd62b2fe25b3d1c0a53cc3399309cee
--- /dev/null
+++ b/iTrust/sql/data/deadPatient2.sql
@@ -0,0 +1,6 @@
+INSERT INTO patients (MID, Gender, DateOfDeath, CauseOfDeath) 
+VALUES (82,'Male','2018-07-01',11.40);
+
+
+INSERT INTO officevisits(id,HCPID,PatientID)
+VALUES (202,9000000000,82);
\ No newline at end of file
diff --git a/iTrust/sql/data/deadPatient3.sql b/iTrust/sql/data/deadPatient3.sql
new file mode 100644
index 0000000000000000000000000000000000000000..65a41cda06b9ecfd684d321e7d0fe7fbd42916d3
--- /dev/null
+++ b/iTrust/sql/data/deadPatient3.sql
@@ -0,0 +1,6 @@
+INSERT INTO patients (MID, Gender, DateOfDeath, CauseOfDeath) 
+VALUES (83,'Female','2018-07-01',11.40);
+
+
+INSERT INTO officevisits(id,HCPID,PatientID)
+VALUES (203,9000000000,83);
\ No newline at end of file
diff --git a/iTrust/sql/data/deadPatient4.sql b/iTrust/sql/data/deadPatient4.sql
new file mode 100644
index 0000000000000000000000000000000000000000..a26c7808bfe5ee3479d30eabd6c3093ab2b5b60b
--- /dev/null
+++ b/iTrust/sql/data/deadPatient4.sql
@@ -0,0 +1,6 @@
+INSERT INTO patients (MID, Gender, DateOfDeath, CauseOfDeath) 
+VALUES (84,'Male','2018-12-01',11.40);
+
+
+INSERT INTO officevisits(id,HCPID,PatientID)
+VALUES (204,9000000000,84);
\ No newline at end of file
diff --git a/iTrust/sql/data/deadPatient5.sql b/iTrust/sql/data/deadPatient5.sql
new file mode 100644
index 0000000000000000000000000000000000000000..4affb62687146145ec098dd6c740d949ae95850e
--- /dev/null
+++ b/iTrust/sql/data/deadPatient5.sql
@@ -0,0 +1,6 @@
+INSERT INTO patients (MID, Gender, DateOfDeath, CauseOfDeath) 
+VALUES (85,'Male','2020-01-01',84.50);
+
+
+INSERT INTO officevisits(id,HCPID,PatientID)
+VALUES (205,9000000000,85);
\ No newline at end of file
diff --git a/iTrust/sql/data/deadPatient6.sql b/iTrust/sql/data/deadPatient6.sql
new file mode 100644
index 0000000000000000000000000000000000000000..f0bf0ef203a855fafa9f02d7854ca987277d0d73
--- /dev/null
+++ b/iTrust/sql/data/deadPatient6.sql
@@ -0,0 +1,6 @@
+INSERT INTO patients (MID, Gender, DateOfDeath, CauseOfDeath) 
+VALUES (86,'Male','2018-12-01',487.00);
+
+
+INSERT INTO officevisits(id,HCPID,PatientID)
+VALUES (206,9000000000,86);
\ No newline at end of file
diff --git a/iTrust/sql/data/deadPatient7.sql b/iTrust/sql/data/deadPatient7.sql
new file mode 100644
index 0000000000000000000000000000000000000000..8e86cd2d97284749d9c28fc460acf555b1d4e95c
--- /dev/null
+++ b/iTrust/sql/data/deadPatient7.sql
@@ -0,0 +1,6 @@
+INSERT INTO patients (MID, Gender, DateOfDeath, CauseOfDeath) 
+VALUES (87,'Female','2019-12-01',487.00);
+
+
+INSERT INTO officevisits(id,HCPID,PatientID)
+VALUES (207,9000000001,87);
\ No newline at end of file
diff --git a/iTrust/sql/data/deadPatient8.sql b/iTrust/sql/data/deadPatient8.sql
new file mode 100644
index 0000000000000000000000000000000000000000..d2d67890dea4238ea0bc10268957fd23e3c6c3fb
--- /dev/null
+++ b/iTrust/sql/data/deadPatient8.sql
@@ -0,0 +1,6 @@
+INSERT INTO patients (MID, Gender, DateOfDeath, CauseOfDeath) 
+VALUES (88,'Female','2020-07-01',487.00);
+
+
+INSERT INTO officevisits(id,HCPID,PatientID)
+VALUES (208,9000000001,88);
\ No newline at end of file
diff --git a/iTrust/sql/data/deadPatient9.sql b/iTrust/sql/data/deadPatient9.sql
new file mode 100644
index 0000000000000000000000000000000000000000..84f08ea8683856d6fdf4f5d13d755d576ce8f744
--- /dev/null
+++ b/iTrust/sql/data/deadPatient9.sql
@@ -0,0 +1,6 @@
+INSERT INTO patients (MID, Gender, DateOfDeath, CauseOfDeath) 
+VALUES (89,'Male','2020-01-01',487.00);
+
+
+INSERT INTO officevisits(id,HCPID,PatientID)
+VALUES (209,9000000001,89);
\ No newline at end of file
diff --git a/iTrust/test/edu/ncsu/csc/itrust/unit/dao/deaths/CauseOfDeathTrendsReportTest.java b/iTrust/test/edu/ncsu/csc/itrust/unit/dao/deaths/CauseOfDeathTrendsReportTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b79acefbba8163ef0203a59510b62d5fbd86da6b
--- /dev/null
+++ b/iTrust/test/edu/ncsu/csc/itrust/unit/dao/deaths/CauseOfDeathTrendsReportTest.java
@@ -0,0 +1,90 @@
+package edu.ncsu.csc.itrust.UC20;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.sql.Date;
+
+import junit.framework.TestCase;
+import edu.ncsu.csc.itrust.dao.mysql.CauseOfDeathTrendsReportDAO;
+import edu.ncsu.csc.itrust.unit.datagenerators.TestDataGenerator;
+import edu.ncsu.csc.itrust.unit.testutils.TestDAOFactory;
+import edu.ncsu.csc.itrust.exception.DBException;
+
+
+public class CauseOfDeathTrendsReportTest extends TestCase {
+    
+    private TestDataGenerator gen = new TestDataGenerator();
+    private CauseOfDeathTrendsReportDAO cod;
+    
+    @Override
+	protected void setUp() throws Exception {
+		gen = new TestDataGenerator();
+		gen.clearAllTables();
+		gen.deadpatient1();
+        gen.deadpatient2();
+        gen.deadpatient3();
+        gen.deadpatient4();
+        gen.deadpatient5();
+        gen.deadpatient6();
+        gen.deadpatient7();
+        gen.deadpatient8();
+        gen.deadpatient9();
+        gen.deadpatient10();
+        gen.icd9cmCodes();
+
+        cod = new CauseOfDeathTrendsReportDAO(TestDAOFactory.getTestInstance());
+    }
+    
+    public void testPatientsForHCPValid() throws Exception {
+        List<Long> deaths = cod.getPatientsForHCP(Long.parseLong("9000000000"));
+        assertEquals(6, deaths.size());
+        assertEquals(Long.valueOf(81), deaths.get(0));
+        assertEquals(Long.valueOf(82), deaths.get(1));
+        assertEquals(Long.valueOf(83), deaths.get(2));
+        assertEquals(Long.valueOf(84), deaths.get(3));
+        assertEquals(Long.valueOf(85), deaths.get(4));
+        assertEquals(Long.valueOf(86), deaths.get(5));
+    }
+
+    /*public void testPatientsForHCPInvalidID() throws Exception {
+		try {
+			cod.getPatientsForHCP(Long("0"));
+			fail("Should have failed but didn't");
+		} catch (FormValidationException e) {
+			assertEquals(1, e.getErrorList().size());
+			assertEquals("HCP ID must be valid!", e.getErrorList().get(0));
+		}
+    }
+    */
+
+    public void testTopTwoCorrectForHCPValid() throws Exception {
+        List<String> deaths = cod.getTopTwoDeathsForHCP(Long.parseLong("9000000000"), "All", Date.valueOf("2018-01-01"), Date.valueOf("2020-12-31"));
+        assertEquals(2, deaths.size());
+        assertEquals("Name: Tuberculosis of the lung, Code: 11.40, Deaths: 3", deaths.get(0));
+        assertEquals("Name: Malaria, Code: 84.50, Deaths: 2", deaths.get(1));
+    }
+
+    public void testTopTwoCorrectMaleForHCPValid() throws Exception {
+        List<String> deaths = cod.getTopTwoDeathsForHCP(Long.parseLong("9000000000"), "Male", Date.valueOf("2018-01-01"), Date.valueOf("2020-12-31"));
+        assertEquals(2, deaths.size());
+        assertEquals("Name: Malaria, Code: 84.50, Deaths: 2", deaths.get(0));
+        assertEquals("Name: Tuberculosis of the lung, Code: 11.40, Deaths: 2", deaths.get(1));
+    }
+
+    /*public void testTopTwoCorrectForAllValid() throws Exception {
+        List<String> deaths = cod.getTopTwoDeathsForAll("All", Date.valueOf("2018-01-01"), Date.valueOf("2020-12-31"));
+        assertEquals(2, deaths.size());
+        assertEquals("Name: Influenza, Code: 487.00, Deaths: 5", deaths.get(0));
+        assertEquals("Name: Tuberculosis of the lung, Code: 11.40, Deaths: 3", deaths.get(1));
+    }*/
+
+    public void testCodeNameExists() throws Exception {
+        String deaths = cod.getCodeName("84.50");
+        assertEquals("Malaria", deaths);
+    }
+
+    public void testCodeNameDoesNotExist() throws Exception {
+        String deaths = cod.getCodeName("8450");
+        assertEquals(null, deaths);
+    }
+}
\ No newline at end of file
diff --git a/iTrust/test/edu/ncsu/csc/itrust/unit/datagenerators/TestDataGenerator.java b/iTrust/test/edu/ncsu/csc/itrust/unit/datagenerators/TestDataGenerator.java
index 03037124a70bf63dceb07e8c4125466287497fdf..7b87da285e14337a936077abf901e73fdc154fb7 100644
--- a/iTrust/test/edu/ncsu/csc/itrust/unit/datagenerators/TestDataGenerator.java
+++ b/iTrust/test/edu/ncsu/csc/itrust/unit/datagenerators/TestDataGenerator.java
@@ -121,6 +121,46 @@ public class TestDataGenerator {
 				+ "/deadRecurringPatients.sql");
 	}
 
+	public void deadPatient1() throws FileNotFoundException, SQLException, IOException {
+		new DBBuilder(factory).executeSQLFile(DIR + "/deadPatient1.sql");
+	}
+	
+	public void deadPatient2() throws FileNotFoundException, SQLException, IOException {
+		new DBBuilder(factory).executeSQLFile(DIR + "/deadPatient2.sql");
+	}
+	
+	public void deadPatient3() throws FileNotFoundException, SQLException, IOException {
+		new DBBuilder(factory).executeSQLFile(DIR + "/deadPatient3.sql");
+	}
+	
+	public void deadPatient4() throws FileNotFoundException, SQLException, IOException {
+		new DBBuilder(factory).executeSQLFile(DIR + "/deadPatient4.sql");
+	}
+	
+	public void deadPatient5() throws FileNotFoundException, SQLException, IOException {
+		new DBBuilder(factory).executeSQLFile(DIR + "/deadPatient5.sql");
+	}
+	
+	public void deadPatient6() throws FileNotFoundException, SQLException, IOException {
+		new DBBuilder(factory).executeSQLFile(DIR + "/deadPatient6.sql");
+	}
+	
+	public void deadPatient7() throws FileNotFoundException, SQLException, IOException {
+		new DBBuilder(factory).executeSQLFile(DIR + "/deadPatient7.sql");
+	}
+	
+	public void deadPatient8() throws FileNotFoundException, SQLException, IOException {
+		new DBBuilder(factory).executeSQLFile(DIR + "/deadPatient8.sql");
+	}
+	
+	public void deadPatient9() throws FileNotFoundException, SQLException, IOException {
+		new DBBuilder(factory).executeSQLFile(DIR + "/deadPatient9.sql");
+	}
+	
+	public void deadPatient10() throws FileNotFoundException, SQLException, IOException {
+		new DBBuilder(factory).executeSQLFile(DIR + "/deadPatient10.sql");
+	}
+
 	public void diagnosedPatient_OldAndNewVisit() throws SQLException,
 			FileNotFoundException, IOException {
 		new DBBuilder(factory).executeSQLFile(DIR