WITH pvt_cte AS (

    SELECT
        ct.ordernumber,
        ct."Special Observation Level",
        ct."Reason for Observation",
        ct."Milieu Location",
        ct."Observation Level Comment",
        ct."Milieu Location Comment"
    FROM mat.crosstab(

        '
        SELECT
            oqq.omordid,
            mqm.text AS name,
            oqq.queryresponse AS elementresponse
        FROM mat.omord_queries_queries oqq
        LEFT JOIN mat.misqry_main mqm
            ON mqm.misqryid = oqq.queryid
        WHERE oqq.queryid IN (
            ''OM.COMMENT.OBS'',
            ''OM.OBS.COMM.MIL''
        )

        UNION

        SELECT
            oqqm.omordid,
            mgrm.name,
            mgrge.elementresponse
        FROM mat.omord_queries_queriesmult oqqm
        LEFT JOIN mat.misgroupresp_main mgrm
            ON oqqm.querygroupresponse_misgrouprespid = mgrm.misgrouprespid
        LEFT JOIN mat.misgroupresp_groupelements mgrge
            ON oqqm.querygroupresponse_misgrouprespid = mgrge.misgrouprespid
           AND oqqm.queryresponse = mgrge.elementmnemonicid
        WHERE oqqm.querygroupresponse_misgrouprespid IN (
            ''OM.OBS.MILIEU'',
            ''OM.OBS.LEVEL'',
            ''OM.SPECOBSREAS''
        )
        ORDER BY 1, 2
        '::text,

        '
        SELECT *
        FROM (
            VALUES
                (''Special Observation Levels''),
                (''Reason for Observation''),
                (''Milieu Location''),
                (''Observation Level Comment''),
                (''Milieu Location Comment'')
        ) x(x)
        '::text

    ) AS ct (
        ordernumber                    varchar,
        "Special Observation Level"    varchar,
        "Reason for Observation"       varchar,
        "Milieu Location"              varchar,
        "Observation Level Comment"    varchar,
        "Milieu Location Comment"      varchar
    )

),

edits_cte AS (

    SELECT
        omordid,
        rowupdatedatetime AS "Edit Date",

        CASE activityevent
            WHEN 'Query Observation Level edited: '
                THEN 'Observation Level'
            WHEN 'Query Milieu Location edited: '
                THEN 'Milieu Location'
            WHEN 'Query Reason for Observation edited: '
                THEN 'Reason for Observation'
        END AS "Edit Field",

        REPLACE(
            REPLACE(
                REPLACE(activityoldvalue, '}', ''),
                '{', ''
            ),
            '|',
            ', '
        ) AS "Old Value",

        REPLACE(
            REPLACE(
                REPLACE(activitynewvalue, '}', ''),
                '{', ''
            ),
            '|',
            ', '
        ) AS "New Value"

    FROM mat.omord_activities

    WHERE activityevent IN (
        'Query Reason for Observation edited: ',
        'Query Milieu Location edited: ',
        'Query Observation Level edited: '
    )

)

SELECT
    ram.accountnumber                  AS "Account",
    ram.location_mislocid              AS "Program",
    hrmrn.prefixmedicalrecordnumber    AS "MRN",
    hrm.name                           AS "Patient Name",
    oom.omordid                        AS "Order Number",
    oom3.startdatetime                 AS "Order Start",
    oom3.status                        AS "Order Status",

    pvt."Special Observation Level",
    pvt."Reason for Observation",
    pvt."Milieu Location",
    pvt."Observation Level Comment",
    pvt."Milieu Location Comment",

    edits."Edit Date",
    edits."Edit Field",
    edits."Old Value",
    edits."New Value"

FROM mat.regacct_main ram

JOIN mat.himrec_main hrm
    ON hrm.sourceid = ram.sourceid
   AND hrm.patientid = ram.patientid

LEFT JOIN mat.misfac_main mfm
    ON ram.sourceid::text = mfm.sourceid::text
   AND ram.facility_misfacid::text = mfm.misfacid::text

LEFT JOIN mat.mishimdept_main mhdm
    ON mfm.sourceid::text = mhdm.sourceid::text
   AND mfm.himdepartment_mishimdeptid::text = mhdm.mishimdeptid::text

LEFT JOIN mat.himrec_medicalrecordnumbers hrmrn
    ON ram.sourceid = hrmrn.sourceid
   AND ram.patientid = hrmrn.patientid
   AND mhdm.medicalrecordnumberprefix = hrmrn.mrnprefixid

JOIN mat.omord_main oom
    ON ram.sourceid = oom.sourceid
   AND ram.visitid = oom.visitid

LEFT JOIN mat.omord_main2 oom2
    ON oom2.sourceid = oom.sourceid
   AND oom2.omordid = oom.omordid

LEFT JOIN mat.omorddict_main oodm
    ON oodm.sourceid = oom2.sourceid
   AND oodm.omorddictid = oom2.procedure_omorddictid

LEFT JOIN mat.omord_main3 oom3
    ON oom3.sourceid = oom.sourceid
   AND oom3.omordid = oom.omordid

JOIN pvt_cte pvt
    ON oom.omordid = pvt.ordernumber

LEFT JOIN edits_cte edits
    ON edits.omordid = oom.omordid
   AND (
        (
            edits."Edit Field" = 'Milieu Location'
            AND (
                edits."Old Value" LIKE '%LSA%'
                OR edits."New Value" LIKE '%LSA%'
            )
        )
        OR
        (
            edits."Edit Field" = 'Observation Level'
            AND (
                edits."Old Value" LIKE '%1%'
                OR edits."Old Value" LIKE '%CVO%'
                OR edits."New Value" LIKE '%1%'
                OR edits."New Value" LIKE '%CVO%'
            )
        )
    )

WHERE
    pvt."Special Observation Level" LIKE '%CVO%'
    OR pvt."Special Observation Level" LIKE '%1%'
    OR pvt."Milieu Location" LIKE '%LSA%'
    OR edits."Edit Field" IS NOT NULL

ORDER BY
    oom.omordid,
    oom3.startdatetime,
    edits."Edit Date";