Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
CREATE TABLE onprc_ehr.TB_TestTemp_Historical (
rowid integer GENERATED BY DEFAULT AS IDENTITY (START WITH 100 INCREMENT BY 1) NOT NULL,
animalid varchar(200) NULL,
date timestamp NULL,
objectid ENTITYID NOT NULL,
created timestamp NULL,
createdby integer NULL,
performedby varchar(200) NULL,
modifiedby integer NULL,
date_posted timestamp(0) NULL,
CONSTRAINT PK_TB_TestTemp_Historical PRIMARY KEY (rowid)
);

CREATE TABLE onprc_ehr.Temp_Clinical_Observations_Historical (
rowid integer GENERATED BY DEFAULT AS IDENTITY (START WITH 100 INCREMENT BY 1) NOT NULL,
Id varchar(200) NULL,
date timestamp(0) NULL,
category varchar(500) NULL,
area varchar(500) NULL,
observation varchar(500) NULL,
createdby integer NULL,
performedby varchar(500) NULL,
taskid varchar(4000) NULL,
qcstate integer NULL,
modifiedby integer NULL,
CONSTRAINT PK_Temp_Clinical_Observations_Historical PRIMARY KEY (rowid)
);

CREATE TABLE onprc_ehr.Temp_Clinical_Observations_Historical_Master (
rowid integer GENERATED BY DEFAULT AS IDENTITY (START WITH 100 INCREMENT BY 1) NOT NULL,
searchid integer NULL,
Id varchar(200) NULL,
date timestamp(0) NULL,
category varchar(500) NULL,
area varchar(500) NULL,
observation varchar(500) NULL,
createdby integer NULL,
performedby varchar(500) NULL,
taskid varchar(4000) NULL,
qcstate smallint NULL,
modifiedby integer NULL, -- smalldatetime on SQL Server is clearly wrong
Posted_date timestamp(0) NULL,
CONSTRAINT PK_Temp_Clinical_Observations_Historical_Master PRIMARY KEY (rowid)
);

CREATE TABLE onprc_ehr.Observation_Historical_EHRTasks (
rowid integer GENERATED BY DEFAULT AS IDENTITY (START WITH 100 INCREMENT BY 1) NOT NULL,
taskid varchar(4000) NULL,
description varchar(500) NULL,
title varchar(500) NULL,
qcstate smallint NULL,
formtype varchar(500) NULL,
category varchar(500) NULL,
assignedto smallint NULL,
createdby smallint NULL,
modifiedby smallint NULL,
CONSTRAINT PK_Observation_Historical_EHRTasks PRIMARY KEY (rowid)
);

/*
**
** Created by
** R. Blasa 7-31-2026 A Program Process that reviews all TB Test Encounter entries on a current date, and creates a
** new TB Test Clinical Observation record based on
** having the same monkey id, date, and then to be assigned to a Data Admin for reviews.
**
*/

CREATE OR REPLACE FUNCTION onprc_ehr.p_Create_TB_Observation_Historical_records(
Start_Date TIMESTAMP,
End_Date TIMESTAMP
)
RETURNS integer
LANGUAGE plpgsql
AS $$
DECLARE
v_SearchKey integer;
v_TempSearchKey integer;
v_TaskId varchar(4000);
v_AnimalID varchar(100);
v_date timestamp(0);
v_performedby varchar(500);
v_FirstFlag integer;
BEGIN
-- Reset temp tables
TRUNCATE TABLE onprc_ehr.TB_TestTemp_Historical RESTART IDENTITY;
TRUNCATE TABLE onprc_ehr.Temp_Clinical_Observations_Historical RESTART IDENTITY;
TRUNCATE TABLE onprc_ehr.Observation_Historical_EHRTasks RESTART IDENTITY;

-- Generate a list of TB test monkeys
INSERT INTO onprc_ehr.TB_TestTemp_Historical (animalid, date, objectid, created, createdby, performedby, modifiedby, date_posted)
SELECT
a.participantid,
a.date::date,
a.objectid,
a.created,
a.createdBy,
a.performedby,
a.modifiedby,
CURRENT_TIMESTAMP
FROM studydataset.c6d214_encounters a
WHERE lower(a.type) IN (lower('Procedure'), lower('Surgery'))
AND a.qcstate = 18
AND a.procedureid = 802 -----'TB Test Intradermal'
AND a.date >= Start_Date
AND a.date < End_Date + INTERVAL '1 day'
AND a.participantid NOT IN (
SELECT j.participantid
FROM studydataset.c6d171_clinical_observations j
WHERE j.participantid = a.participantid
AND j.date::date = a.date::date + 3
AND lower(j.category) = lower('TB TST Score (72 hr)')
AND j.qcstate = 18
)
ORDER BY a.participantid, a.date DESC;

IF NOT EXISTS (SELECT 1 FROM onprc_ehr.TB_TestTemp_Historical) THEN
RETURN 0;
END IF;

v_TempSearchKey := 0;
v_TaskId := NULL;
v_FirstFlag := 0;

SELECT rowid INTO v_SearchKey
FROM onprc_ehr.TB_TestTemp_Historical
ORDER BY rowid
LIMIT 1;

-- Create a single task for each process run
WHILE v_TempSearchKey < v_SearchKey LOOP

SELECT animalid, date, performedby
INTO v_AnimalID, v_date, v_performedby
FROM onprc_ehr.TB_TestTemp_Historical
WHERE rowid = v_SearchKey;

IF NOT EXISTS (
SELECT 1 FROM studydataset.c6d171_clinical_observations j
WHERE j.participantid = v_AnimalID
AND j.date::date = v_date::date + 3
AND lower(j.category) = lower('TB TST Score (72 hr)')
) THEN

IF v_FirstFlag != 1 THEN
v_TaskId := gen_random_uuid()::text;

INSERT INTO onprc_ehr.Observation_Historical_EHRTasks (
taskid,
description,
title,
qcstate,
formtype,
category,
assignedto,
createdby,
modifiedby
) VALUES (
v_TaskId,
'TB TST Scores ' || COALESCE(v_date::text, ''),
'TB TST Scores',
20, --- Qc State (In Progress)
'TB TST Scores',
'task',
1822, ------- Assigned To Data Admins
1042, -------- Created By IS
1042 ----- Modified by IS
);

v_FirstFlag := 1;
END IF;

-- Add three days from TB Test date
v_date := v_date + INTERVAL '3 days';

INSERT INTO onprc_ehr.Temp_Clinical_Observations_Historical (
Id,
date,
category,
area,
observation,
createdby,
performedby,
taskid,
qcstate,
modifiedby
) VALUES (
v_AnimalID,
v_date,
'TB TST Score (72 hr)',
'Right Eyelid',
'Grade: Negative',
1042,
v_performedby,
v_TaskId,
20,
1042
);

END IF;

v_TempSearchKey := v_SearchKey;

SELECT rowid INTO v_SearchKey
FROM onprc_ehr.TB_TestTemp_Historical
WHERE rowid > v_TempSearchKey
ORDER BY rowid
LIMIT 1;

IF NOT FOUND OR v_SearchKey IS NULL THEN
EXIT;
END IF;

END LOOP;

-- Create a master copy of the completed transaction
INSERT INTO onprc_ehr.Temp_Clinical_Observations_Historical_Master (
searchid, Id, date, category, area, observation, createdby, performedby, taskid, qcstate, modifiedby, Posted_date
)
SELECT
rowid,
Id,
date,
category,
area,
observation,
createdby,
performedby,
taskid,
qcstate,
modifiedby,
CURRENT_TIMESTAMP
FROM onprc_ehr.Temp_Clinical_Observations_Historical;

RETURN 0;
END;
$$;
2 changes: 1 addition & 1 deletion onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ public String getName()
@Override
public @Nullable Double getSchemaVersion()
{
return 26.005;
return 26.006;
}

@Override
Expand Down
Loading