diff --git a/.gitignore b/.gitignore
index 64712ace..668cd9dc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,10 @@
.gradle
build/
+# Log Files
+nirc_ehr/resources/referenceStudy/etlLogs/
+nirc_ehr/resources/referenceStudy/*.log
+
# Ignore Gradle GUI config
gradle-app.setting
diff --git a/nirc_ehr/resources/data/reports.tsv b/nirc_ehr/resources/data/reports.tsv
index 6452836c..1876633f 100644
--- a/nirc_ehr/resources/data/reports.tsv
+++ b/nirc_ehr/resources/data/reports.tsv
@@ -11,6 +11,8 @@ currentBlood Clinical js Current Blood true study currentBlood date false fal
bloodDraws Clinical query Blood Draws TRUE study blood date FALSE FALSE qcstate/publicdata This report displays blood draw data for the selected animal
obs Clinical query Observations TRUE study obs date FALSE FALSE qcstate/publicdata This report displays observations for the selected animal
pairings Colony Management query Pairings TRUE study pairings date FALSE FALSE qcstate/publicdata This report displays pairings for the selected animal
+breeder Colony Management query Breeder TRUE study breeder date FALSE FALSE qcstate/publicdata This report displays breeding data for the selected animal
+clinremarks Clinical query Clinical Remarks true study Clinical Remarks date false false qcstate/publicdata This report contains the clinical remarks entered about each animal
serology ClinPath query Serology TRUE study serology date FALSE FALSE qcstate/publicdata This report displays serology data for the selected animal
vitals Clinical query Vital Signs TRUE study vitals date FALSE FALSE qcstate/publicdata This report displays vitals data for the selected animal
physicalExam Clinical query Physical Exam TRUE study physicalExam date FALSE FALSE qcstate/publicdata This report displays physical exam data for the selected animal
diff --git a/nirc_ehr/resources/etls/breeder.xml b/nirc_ehr/resources/etls/breeder.xml
new file mode 100644
index 00000000..170d2e05
--- /dev/null
+++ b/nirc_ehr/resources/etls/breeder.xml
@@ -0,0 +1,31 @@
+
+
+ Breeder
+ Breeder
+
+
+ Copy to breeder target
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/nirc_ehr/resources/etls/clinremarks.xml b/nirc_ehr/resources/etls/clinremarks.xml
new file mode 100644
index 00000000..54f227b6
--- /dev/null
+++ b/nirc_ehr/resources/etls/clinremarks.xml
@@ -0,0 +1,31 @@
+
+
+ Clinical Remarks
+ Comments/Clinical Remarks
+
+
+ Copy to clinremarks target
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/nirc_ehr/resources/queries/dbo/q_breeder.sql b/nirc_ehr/resources/queries/dbo/q_breeder.sql
new file mode 100644
index 00000000..0566ff18
--- /dev/null
+++ b/nirc_ehr/resources/queries/dbo/q_breeder.sql
@@ -0,0 +1,21 @@
+SELECT anmEvt.ANIMAL_EVENT_ID AS objectid,
+ anmEvt.ANIMAL_ID AS Id,
+ CAST(anmEvt.EVENT_DATETIME AS TIMESTAMP) AS administrationDate,
+ (CASE
+ WHEN anmEvt.STAFF_ID.EMAIL_ADDRESS IS NULL THEN 'unknown'
+ ELSE substr(anmEvt.STAFF_ID.EMAIL_ADDRESS, 1,
+ instr(anmEvt.STAFF_ID.EMAIL_ADDRESS, '@') - 1) END) AS performedby,
+ anmEvt.EVENT_ID.NAME AS type,
+ anmEvt.TEXT_RESULT AS result,
+ anmEvt.ATTACHMENT_PATH AS attachmentFile,
+ anmCmt.TEXT AS remark,
+ CAST(COALESCE(adt.CHANGE_DATETIME, anmEvt.CREATED_DATETIME) AS TIMESTAMP) AS modified
+FROM ANIMAL_EVENT anmEvt
+ LEFT JOIN ANIMAL_EVENT_COMMENT anmCmt ON anmEvt.ANIMAL_EVENT_ID = anmCmt.ANIMAL_EVENT_ID
+ LEFT JOIN EVENT_EVENT_GROUP evtEvtGrp ON evtEvtGrp.EVENT_ID = anmEvt.EVENT_ID
+ LEFT JOIN AUDIT_TRAIL adt
+ ON anmEvt.ANIMAL_EVENT_ID = substring(adt.PRIMARY_KEY_VALUES, length('ANIMAL_EVENT_ID = '))
+ AND adt.PRIMARY_KEY_VALUES LIKE '%ANIMAL_EVENT_ID%'
+
+WHERE evtEvtGrp.EVENT_GROUP_ID = 56
+-- 56 Breeder
\ No newline at end of file
diff --git a/nirc_ehr/resources/queries/dbo/q_breeder_delete.sql b/nirc_ehr/resources/queries/dbo/q_breeder_delete.sql
new file mode 100644
index 00000000..9007e5ce
--- /dev/null
+++ b/nirc_ehr/resources/queries/dbo/q_breeder_delete.sql
@@ -0,0 +1,9 @@
+SELECT substring(adt.PRIMARY_KEY_VALUES, length('ANIMAL_EVENT_ID = ')) AS objectid,
+ CAST(adt.CHANGE_DATETIME AS TIMESTAMP) AS modified,
+ adt.REFERENCE
+FROM AUDIT_TRAIL adt
+WHERE adt.PRIMARY_KEY_VALUES LIKE '%ANIMAL_EVENT_ID%' AND
+ (adt.REFERENCE LIKE '%Multiple Sires%' OR
+ adt.REFERENCE LIKE '%Multiple Dams%' OR
+ adt.REFERENCE LIKE '%Mating Event%') AND
+ adt.COLUMN_NAME = 'DELETE'
\ No newline at end of file
diff --git a/nirc_ehr/resources/queries/dbo/q_clinremarks.sql b/nirc_ehr/resources/queries/dbo/q_clinremarks.sql
new file mode 100644
index 00000000..21c3bad6
--- /dev/null
+++ b/nirc_ehr/resources/queries/dbo/q_clinremarks.sql
@@ -0,0 +1,20 @@
+SELECT anmEvt.ANIMAL_EVENT_ID AS objectid,
+ anmEvt.ANIMAL_ID AS Id,
+ CAST(anmEvt.EVENT_DATETIME AS TIMESTAMP) AS administrationDate,
+ (CASE
+ WHEN anmEvt.STAFF_ID.EMAIL_ADDRESS IS NULL THEN 'unknown'
+ ELSE substr(anmEvt.STAFF_ID.EMAIL_ADDRESS, 1,
+ instr(anmEvt.STAFF_ID.EMAIL_ADDRESS, '@') - 1) END) AS performedby,
+ anmEvt.EVENT_ID.EVENT_ID AS category,
+ anmEvt.DIAGNOSIS AS hx,
+ anmCmt.TEXT AS remark,
+ CAST(COALESCE(adt.CHANGE_DATETIME, anmEvt.CREATED_DATETIME) AS TIMESTAMP) AS modified
+FROM ANIMAL_EVENT anmEvt
+ LEFT JOIN ANIMAL_EVENT_COMMENT anmCmt ON anmEvt.ANIMAL_EVENT_ID = anmCmt.ANIMAL_EVENT_ID
+ LEFT JOIN EVENT_EVENT_GROUP evtEvtGrp ON evtEvtGrp.EVENT_ID = anmEvt.EVENT_ID
+ LEFT JOIN AUDIT_TRAIL adt
+ ON anmEvt.ANIMAL_EVENT_ID = substring(adt.PRIMARY_KEY_VALUES, length('ANIMAL_EVENT_ID = '))
+ AND adt.PRIMARY_KEY_VALUES LIKE '%ANIMAL_EVENT_ID%'
+
+WHERE evtEvtGrp.EVENT_GROUP_ID = 53
+-- 53 Comments
\ No newline at end of file
diff --git a/nirc_ehr/resources/queries/dbo/q_clinremarks_delete.sql b/nirc_ehr/resources/queries/dbo/q_clinremarks_delete.sql
new file mode 100644
index 00000000..7e25d29f
--- /dev/null
+++ b/nirc_ehr/resources/queries/dbo/q_clinremarks_delete.sql
@@ -0,0 +1,26 @@
+SELECT substring(adt.PRIMARY_KEY_VALUES, length('ANIMAL_EVENT_ID = ')) AS objectid,
+ CAST(adt.CHANGE_DATETIME AS TIMESTAMP) AS modified,
+ adt.REFERENCE
+FROM AUDIT_TRAIL adt
+WHERE adt.PRIMARY_KEY_VALUES LIKE '%ANIMAL_EVENT_ID%' AND
+ (adt.REFERENCE LIKE '%Gross Pathology%' OR
+ adt.REFERENCE LIKE '%Cardiopulmonary Disorder%' OR
+ adt.REFERENCE LIKE '%Dermatological Disorder%' OR
+ adt.REFERENCE LIKE '%Endocrine Disorder%' OR
+ adt.REFERENCE LIKE '%Environmental Exposure%' OR
+ adt.REFERENCE LIKE '%Gastrointestinal Disorder%' OR
+ adt.REFERENCE LIKE '%Hematological Disorder%' OR
+ adt.REFERENCE LIKE '%Iatrogenic%' OR
+ adt.REFERENCE LIKE '%Immune Disorder%' OR
+ adt.REFERENCE LIKE '%Infectious Disease%' OR
+ adt.REFERENCE LIKE '%Metabolic Disorder%' OR
+ adt.REFERENCE LIKE '%Musculoskeletal Disorder%' OR
+ adt.REFERENCE LIKE '%Neoplasia%' OR
+ adt.REFERENCE LIKE '%Neurological Disorder%' OR
+ adt.REFERENCE LIKE '%No Post Mortem exam%' OR
+ adt.REFERENCE LIKE '%Opthalmologic Disorder%' OR
+ adt.REFERENCE LIKE '%Reproductive Disorder%' OR
+ adt.REFERENCE LIKE '%Autolysis%' OR
+ adt.REFERENCE LIKE '%No gross abnormalities%' OR
+ adt.REFERENCE LIKE '%General Comment%') AND
+ adt.COLUMN_NAME = 'DELETE'
\ No newline at end of file
diff --git a/nirc_ehr/resources/queries/dbo/q_lookups.sql b/nirc_ehr/resources/queries/dbo/q_lookups.sql
index cf34f512..216d178c 100644
--- a/nirc_ehr/resources/queries/dbo/q_lookups.sql
+++ b/nirc_ehr/resources/queries/dbo/q_lookups.sql
@@ -82,12 +82,12 @@ FROM PROTOCOL_CATEGORY
UNION
-SELECT 'PROTOCOL_STATE_' || STATE_ID AS objectid,
+SELECT 'PROTOCOL_STATE_' || ID AS objectid,
'protocol_state' AS set_name,
-STATE_ID AS "value",
-STATE_NAME AS description,
-STATE_NAME AS title,
-STATE_ID AS sort_order,
+ID AS "value",
+DESCRIPTION AS description,
+NAME AS title,
+ID AS sort_order,
NULL AS date_disabled,
NULL AS category,
FROM PROTOCOL_CATEGORY
@@ -105,4 +105,21 @@ WHEN 'Y' THEN NULL
WHEN 'N' THEN '1/1/1970'
END AS date_disabled,
NULL AS category,
-FROM QUESTIONNAIRE
\ No newline at end of file
+FROM QUESTIONNAIRE
+
+UNION
+
+SELECT
+'CLINREMARKS_CATEGORY' || EVENT_ID.EVENT_ID as objectid,
+'clinremarks_category' AS set_name,
+EVENT_ID.EVENT_ID AS "value",
+EVENT_ID.DESCRIPTION AS description,
+EVENT_ID.NAME AS title,
+EVENT_ID.EVENT_ID AS sort_order,
+CASE
+ WHEN EVENT_ID.ACTIVE_YN = 'Y' AND EVENT_GROUP_ID.ACTIVE_YN = 'Y' THEN NULL
+ ELSE '1/1/1970'
+ END AS date_disabled,
+NULL AS category,
+FROM EVENT_EVENT_GROUP
+WHERE EVENT_GROUP_ID.EVENT_GROUP_ID = 53
diff --git a/nirc_ehr/resources/queries/study/breeder/.qview.xml b/nirc_ehr/resources/queries/study/breeder/.qview.xml
new file mode 100644
index 00000000..2e2a0afc
--- /dev/null
+++ b/nirc_ehr/resources/queries/study/breeder/.qview.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/nirc_ehr/resources/queries/study/clinremarks.query.xml b/nirc_ehr/resources/queries/study/clinremarks.query.xml
new file mode 100644
index 00000000..df2963ca
--- /dev/null
+++ b/nirc_ehr/resources/queries/study/clinremarks.query.xml
@@ -0,0 +1,18 @@
+
+
+
+