diff --git a/nirc_ehr/resources/data/country.tsv b/nirc_ehr/resources/data/country.tsv new file mode 100644 index 00000000..97436eae --- /dev/null +++ b/nirc_ehr/resources/data/country.tsv @@ -0,0 +1,9 @@ +value title category +1 St. Kitts 2 +2 Italy 2 +3 Japan 2 +4 "U.S.A." 1 +5 Philippines 2 +6 Indonesia 2 +7 China 2 +8 Mauritius 2 \ No newline at end of file diff --git a/nirc_ehr/resources/data/country_category.tsv b/nirc_ehr/resources/data/country_category.tsv new file mode 100644 index 00000000..95b2d526 --- /dev/null +++ b/nirc_ehr/resources/data/country_category.tsv @@ -0,0 +1,3 @@ +value title +1 Domestic +2 Foreign diff --git a/nirc_ehr/resources/data/lookup_sets.tsv b/nirc_ehr/resources/data/lookup_sets.tsv new file mode 100644 index 00000000..c91be418 --- /dev/null +++ b/nirc_ehr/resources/data/lookup_sets.tsv @@ -0,0 +1,3 @@ +setname label keyfield titleColumn +country Country value title +country_category Country Category value title \ No newline at end of file diff --git a/nirc_ehr/resources/etls/birth.xml b/nirc_ehr/resources/etls/birth.xml index 700c9172..3d098559 100644 --- a/nirc_ehr/resources/etls/birth.xml +++ b/nirc_ehr/resources/etls/birth.xml @@ -15,6 +15,10 @@ + + + diff --git a/nirc_ehr/resources/etls/deaths.xml b/nirc_ehr/resources/etls/deaths.xml index 01f0ca00..9bea3324 100644 --- a/nirc_ehr/resources/etls/deaths.xml +++ b/nirc_ehr/resources/etls/deaths.xml @@ -15,6 +15,10 @@ + + + diff --git a/nirc_ehr/resources/queries/dbo/q_arrival.sql b/nirc_ehr/resources/queries/dbo/q_arrival.sql index 4d8ff817..95f58b70 100644 --- a/nirc_ehr/resources/queries/dbo/q_arrival.sql +++ b/nirc_ehr/resources/queries/dbo/q_arrival.sql @@ -1,32 +1,4 @@ - - SELECT 'ALT' || alt.ALTERNATE_ID AS objectid, - anm.ANIMAL_ID_NUMBER AS Id, - 'unknown' AS performedby, - COALESCE(MAX(CAST(adt.CHANGE_DATETIME AS TIMESTAMP)), to_date('01/01/1970' ,'MM/DD/YYYY')) AS modified, - anm.BIRTH_DATE AS birth, - anm.GENDER_ID AS gender, - anm.SSB_ID.SPECIES_ID AS species, - NULL AS eventDate, - alt.DESCRIPTION AS acqDateText, - 'Alternate' AS source - FROM ALTERNATE alt - LEFT JOIN ANIMAL anm ON alt.ANIMAL_ID = anm.ANIMAL_ID - LEFT JOIN AUDIT_TRAIL adt ON alt.ALTERNATE_ID = CAST(substring(PRIMARY_KEY_VALUES, length('Alternate_ID = ')) AS INTEGER) - AND adt.TABLE_NAME = 'ALTERNATE' - WHERE alt.ALTERNATE_TYPE_ID = 7 -- 'Dam/Sire/Acq' - AND anm.ANIMAL_ID_NUMBER NOT LIKE 'A%' -- Animal born in centers are pre-appended with A's (in animal Id) - AND alt.DESCRIPTION IS NOT NULL -GROUP BY alt.ALTERNATE_ID, - anm.ANIMAL_ID_NUMBER, - anm.BIRTH_DATE, - anm.GENDER_ID, - anm.SSB_ID.SPECIES_ID, - alt.NAME, - alt.DESCRIPTION - -UNION - -SELECT '' || anmEvt.ANIMAL_EVENT_ID AS objectid, +SELECT anmEvt.ANIMAL_EVENT_ID AS objectid, anm.ANIMAL_ID_NUMBER AS Id, (CASE WHEN (anmEvt.STAFF_ID.STAFF_FIRST_NAME IS NULL OR anmEvt.STAFF_ID.STAFF_LAST_NAME IS NULL) THEN 'unknown' diff --git a/nirc_ehr/resources/queries/dbo/q_arrival_delete.sql b/nirc_ehr/resources/queries/dbo/q_arrival_delete.sql index c8babc4c..203a2c74 100644 --- a/nirc_ehr/resources/queries/dbo/q_arrival_delete.sql +++ b/nirc_ehr/resources/queries/dbo/q_arrival_delete.sql @@ -1,12 +1,3 @@ -SELECT 'ALT' || substring(adt.PRIMARY_KEY_VALUES, length('Alternate_ID = ')) AS objectid, - CAST(adt.CHANGE_DATETIME AS TIMESTAMP) AS modified, - adt.REFERENCE -FROM AUDIT_TRAIL adt -WHERE adt.TABLE_NAME = 'ALTERNATE' AND - adt.COLUMN_NAME = 'DELETE' - -UNION - SELECT substring(adt.PRIMARY_KEY_VALUES, length('ANIMAL_EVENT_ID = ')) AS objectid, CAST(adt.CHANGE_DATETIME AS TIMESTAMP) AS modified, adt.REFERENCE diff --git a/nirc_ehr/resources/queries/dbo/q_births.sql b/nirc_ehr/resources/queries/dbo/q_births.sql index d1e0fa64..29abfbef 100644 --- a/nirc_ehr/resources/queries/dbo/q_births.sql +++ b/nirc_ehr/resources/queries/dbo/q_births.sql @@ -1,9 +1,16 @@ SELECT anm.ANIMAL_ID_NUMBER AS Id, anm.BIRTH_DATE AS birthDate, anm.GENDER_ID AS gender, - anm.SSB_ID.SPECIES_ID AS species + anm.SSB_ID.SPECIES_ID AS species, + COALESCE(MAX(CAST(adt.CHANGE_DATETIME AS TIMESTAMP)), to_date('01/01/1970' ,'MM/DD/YYYY')) AS modified FROM Animal anm LEFT JOIN ALTERNATE alt ON alt.ANIMAL_ID = anm.ANIMAL_ID +LEFT JOIN AUDIT_TRAIL adt ON anm.ANIMAL_ID_NUMBER = substring(PRIMARY_KEY_VALUES, length('ANIMAL_ID = ')) + AND adt.TABLE_NAME = 'ANIMAL' WHERE alt.ALTERNATE_TYPE_ID = 7 -- 'Dam/Sire/Acq' AND anm.ANIMAL_ID_NUMBER LIKE 'A%' -- Animal born in centers are pre-appended with A's (in animal Id) -AND alt.DESCRIPTION IS NOT NULL \ No newline at end of file +AND alt.DESCRIPTION IS NOT NULL +GROUP BY anm.ANIMAL_ID_NUMBER, + anm.BIRTH_DATE, + anm.GENDER_ID, + anm.SSB_ID.SPECIES_ID \ No newline at end of file diff --git a/nirc_ehr/resources/queries/dbo/q_births_delete.sql b/nirc_ehr/resources/queries/dbo/q_births_delete.sql new file mode 100644 index 00000000..a347a959 --- /dev/null +++ b/nirc_ehr/resources/queries/dbo/q_births_delete.sql @@ -0,0 +1,5 @@ +SELECT substring(adt.PRIMARY_KEY_VALUES, length('ANIMAL_ID = ')) AS Id, + CAST(adt.CHANGE_DATETIME AS TIMESTAMP) AS modified, + adt.REFERENCE +FROM AUDIT_TRAIL adt +WHERE adt.TABLE_NAME = 'ANIMAL' AND adt.COLUMN_NAME = 'DELETE' \ No newline at end of file diff --git a/nirc_ehr/resources/queries/dbo/q_deaths.sql b/nirc_ehr/resources/queries/dbo/q_deaths.sql index aed682d6..93f637c7 100644 --- a/nirc_ehr/resources/queries/dbo/q_deaths.sql +++ b/nirc_ehr/resources/queries/dbo/q_deaths.sql @@ -1,7 +1,13 @@ -SELECT ANIMAL_ID_NUMBER AS Id, - DEATH_DATE AS deathDate, - TERMINATION_REASON_ID as reason -FROM Animal -WHERE ANIMAL_DISPOSITION_ID = 4 -- died -AND TERMINATION_REASON_ID != 10 -- Invalid Id \ No newline at end of file +SELECT an.ANIMAL_ID_NUMBER AS Id, + an.DEATH_DATE AS deathDate, + an.TERMINATION_REASON_ID as reason, + COALESCE(MAX(CAST(adt.CHANGE_DATETIME AS TIMESTAMP)), to_date('01/01/1970' ,'MM/DD/YYYY')) AS modified +FROM Animal an +LEFT JOIN AUDIT_TRAIL adt ON an.ANIMAL_ID_NUMBER = substring(PRIMARY_KEY_VALUES, length('ANIMAL_ID = ')) + AND adt.TABLE_NAME = 'ANIMAL' +WHERE an.ANIMAL_DISPOSITION_ID = 4 -- died +AND an.TERMINATION_REASON_ID != 10 -- Invalid Id +GROUP BY an.ANIMAL_ID_NUMBER, + an.DEATH_DATE, + an.TERMINATION_REASON_ID \ No newline at end of file diff --git a/nirc_ehr/resources/queries/dbo/q_deaths_delete.sql b/nirc_ehr/resources/queries/dbo/q_deaths_delete.sql new file mode 100644 index 00000000..a347a959 --- /dev/null +++ b/nirc_ehr/resources/queries/dbo/q_deaths_delete.sql @@ -0,0 +1,5 @@ +SELECT substring(adt.PRIMARY_KEY_VALUES, length('ANIMAL_ID = ')) AS Id, + CAST(adt.CHANGE_DATETIME AS TIMESTAMP) AS modified, + adt.REFERENCE +FROM AUDIT_TRAIL adt +WHERE adt.TABLE_NAME = 'ANIMAL' AND adt.COLUMN_NAME = 'DELETE' \ No newline at end of file diff --git a/nirc_ehr/resources/queries/ehr_lookups/country.query.xml b/nirc_ehr/resources/queries/ehr_lookups/country.query.xml new file mode 100644 index 00000000..0cfb2c97 --- /dev/null +++ b/nirc_ehr/resources/queries/ehr_lookups/country.query.xml @@ -0,0 +1,20 @@ + + + + + Country + + + Category + + ehr_lookups + country_category + value + title + + + +
+
+
+
\ No newline at end of file diff --git a/nirc_ehr/resources/queries/study/arrival.js b/nirc_ehr/resources/queries/study/arrival.js index 168a3b54..71106823 100644 --- a/nirc_ehr/resources/queries/study/arrival.js +++ b/nirc_ehr/resources/queries/study/arrival.js @@ -4,26 +4,7 @@ EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Even // if born at center acq date and birth date is same (row.description contains ACQ date) // if brought from outside aqc date and birth date may differ - if (row.source === 'Alternate' ) { - if (row.acqDateText) { - let acqDateText = row.acqDateText.split(':')[1]; // format - ACQ: 24 Sep 2008 - if (!acqDateText) { - acqDateText = row.acqDateText.split(';')[1]; // at least one value is there with ';' - } - if (acqDateText) { - let acqDate = new Date(acqDateText.trim()); - if (acqDate !== row.birth) { - row.date = acqDate; - } - else { - // investigate to see if any row exists - console.log("born at center - ", row.Id); - row.date = row.birth; - } - } - } - } - else if (row.source === 'Animal Event' && row.eventDate) { + if (row.eventDate) { row.date = row.eventDate; } }); \ No newline at end of file diff --git a/nirc_ehr/resources/schemas/dbscripts/postgresql/nirc_ehr-22.001-22.002.sql b/nirc_ehr/resources/schemas/dbscripts/postgresql/nirc_ehr-22.001-22.002.sql new file mode 100644 index 00000000..62b1a75d --- /dev/null +++ b/nirc_ehr/resources/schemas/dbscripts/postgresql/nirc_ehr-22.001-22.002.sql @@ -0,0 +1,3 @@ +SELECT core.executeJavaUpgradeCode('etl;{NIRC_EHR}/arrival;truncate'); +SELECT core.executeJavaUpgradeCode('etl;{NIRC_EHR}/birth;truncate'); +SELECT core.executeJavaUpgradeCode('etl;{NIRC_EHR}/deaths;truncate'); \ No newline at end of file diff --git a/nirc_ehr/resources/views/populateData.html b/nirc_ehr/resources/views/populateData.html index 86eefcdc..f378fea9 100644 --- a/nirc_ehr/resources/views/populateData.html +++ b/nirc_ehr/resources/views/populateData.html @@ -36,12 +36,33 @@ schemaName: 'ehr_lookups', queryName: 'ageclass', pk: 'value' + }, { + label: 'Country', + populateFn: 'populateFromFile', + schemaName: 'ehr_lookups', + queryName: 'country', + pk: 'value' + }, { + label: 'Country Category', + populateFn: 'populateFromFile', + schemaName: 'ehr_lookups', + queryName: 'country_category', + pk: 'value' }]; tables.sort(function(a, b) { return a.label.toLowerCase() < b.label.toLowerCase() ? -1 : 1; }); + // Keep lookup sets as the first item + tables.splice(0, 0, { + label: 'Lookup Sets', + doSkip: true, + populateFn: 'populateLookupSets', + schemaName: 'ehr_lookups', + queryName: 'lookup_sets' + }); + var webpart = <%=webpartContext%>; Ext4.define('NIRC_EHR.panel.PopulateDataPanel', { extend: 'Ext.panel.Panel', @@ -229,7 +250,27 @@ if (this.pendingInserts==0){ document.getElementById('msgbox').innerHTML += '
Populate Complete
'; } - } + }, + + populateLookupSets: function () { + this.pendingInserts++; + + //records for reports: + var config = { + schemaName: 'ehr_lookups', + queryName: 'lookup_sets', + moduleResource: '/data/lookup_sets.tsv', + success: this.onSuccess, + failure: this.onError, + scope: this + }; + + config.success = function (results, xhr, c) { + console.log('lookup set records inserted'); + }; + + importFile(config); + }, }); Ext4.create('NIRC_EHR.panel.PopulateDataPanel').render(webpart.wrapperDivId); diff --git a/nirc_ehr/src/org/labkey/nirc_ehr/NIRC_EHRModule.java b/nirc_ehr/src/org/labkey/nirc_ehr/NIRC_EHRModule.java index 0b315cd5..766de9c8 100644 --- a/nirc_ehr/src/org/labkey/nirc_ehr/NIRC_EHRModule.java +++ b/nirc_ehr/src/org/labkey/nirc_ehr/NIRC_EHRModule.java @@ -51,7 +51,7 @@ public String getName() @Override public @Nullable Double getSchemaVersion() { - return 22.001; + return 22.002; } @Override