maintenance: title: TDAP and Tetanus Logic for ED patients;; mlmname: DOC_FUNC_TDAP_TETANUS_ED;; arden: version 5.0;; version: 2.00;; institution: St.Clair Hospital;; author: Don Warnick;; specialist: ;; date: 2012-04-02;; validation: testing;; library: purpose: ;; explanation: Change history 04.02.2012 DW CSR# 26307 - Created (copied from DOC_FUNC_TDAP) ;; keywords: ;; knowledge: type: data-driven;; data: // RS ADD Message box standard_libs := mlm {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}}; include standard_libs; using "ObjectsPlusXA.SCM.Forms"; using namespace "ObjectsPlusXA.SunriseClinicalManager.Forms"; // Recieve arguments from the structured note (thisDocumentCommunication) := argument; // Extract interesting parts of the object model (thisStructuredNoteDoc) := thisDocumentCommunication.DocumentConfigurationObj; (thisParameters) := thisStructuredNoteDoc.ParametersList; (thisObservations) := thisStructuredNoteDoc.ChartedObservationsList; // Create prototypes for the object types we{{{SINGLE-QUOTE}}}ll need to instantiate ObservationType := OBJECT [ObservationGUID, ClientDocumentGUID, ParameterGUID, DataType, ValueObj]; FreeTextValueType := OBJECT [Value]; DateValueType := OBJECT [Value]; ListValueType := OBJECT [ListGuid,ListItemsList, SuggestedTextValue]; ListValueListItemType := OBJECT [ListItemGUID, Value, IsSelected]; // Get the client and visit GUIDs clientGuid := thisDocumentCommunication.ClientGUID; visitGuid := thisDocumentCommunication.ClientVisitGUID; chartGuid := thisDocumentCommunication.ChartGUID; userGuid := thisDocumentCommunication.UserGUID; formattedTextReason := "N-0. TDAP/Tetanus risk was not determined. "; ordervaccine := "no"; // CHART OBSERVATION SECTION IF thisdocumentCommunication.EventType = "ChartObservation" then // Attain user{{{SINGLE-QUOTE}}}s ID (for use in override message) userId := read last {" SELECT IDCode FROM CV3User with (nolock) WHERE GUID = " || Sql(userGuid) || " AND Active = 1 "}; // CONTRAINDICATION BUTTON CHANGE SECTION // Using the prior value of the None box, determine if this is the first time a contraindication section box was clicked theParameter := first of (thisParameters where thisParameters.Name = "SCHCK_TDAP ED Details"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); SavedNoneContraValue := theObservation.ValueObj.Value; If SavedNoneContraValue is null then FirstTime := "true"; else FirstTime := "false"; endif; // Proceed if a Contraindication section box was clicked theParameter := first of (thisparameters where thisparameters.Name = "SCHCK_TDAP ED vac contra"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); if thisDocumentCommunication.CurrentObservationObj.parameterguid = theParameter.ParameterGUID then trigger := "A Contraindications Box was selected or deselected"; // If this is first contraindication section box clicked, assess what had been selected (NONE VS a Contraindication) if FirstTime = "true" then If true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "none") then contraboxchecked := "false"; MLMAction := "Retrieve and Reassess"; elseif true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value <> "none") then contraboxchecked := "true"; MLMAction := "No Assessment Required"; endif; endif; // Compare the prior value of the None box to the current value, to determine what was selected (NONE VS a Contraindication) if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "none") then NewNoneContraValue := "true"; else NewNoneContraValue := "false"; endif; If FirstTime = "false" then if NewNoneContraValue = SavedNoneContraValue then WhatWasClicked := "Other Button Was Clicked"; else WhatWasClicked := "None Button Was Clicked"; SavedNoneContraValue := NewNoneContraValue; endif; else // FirstTime = "true" SavedNoneContraValue := NewNoneContraValue; endif; // Determine if all boxes in the section are deselected (nonthing is selected) if true not in (theObservation.ValueObj.ListItemsList.IsSelected) then contraboxchecked := "unknown"; MLMAction := "No Assessment Required"; endif; // If this is not the first click and something is selected, reset the mutually exclusive contraindication boxes (None VS a Contraindiation) If (contraboxchecked = "unknown" or FirstTime = "true") then ResetOtherBoxes := "false"; else ResetOtherBoxes := "true"; endif; If ResetOtherBoxes = "true" then this_currentObj := NEW ObservationType; this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID; this_currentObj.ParameterGUID := theParameter.ParameterGUID; this_currentObj.DataType := "ListValue"; this_currentObj.ValueObj := New ListValueType; this_currentObj.ValueObj.ListGUID:= theParameter.ConfigurationObj.ListGUID; listItems := (); FOR item IN theParameter.ConfigurationObj.ListItemsList DO selectedItem := NEW ListValueListItemType; selectedItem.ListItemGUID := item.ListItemGUID; selectedItem.Value := item.Value; if WhatWasClicked = "Other Button Was Clicked" // One of the Containdications was selected then if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = selectedItem.Value) then selectedItem.IsSelected := true; else selectedItem.IsSelected := false; endif; if selectedItem.Value = "none" then selectedItem.IsSelected := false; endif; NewNoneContraValue := "false"; endif; if WhatWasClicked = "None Button Was Clicked" // The None box was selected then if selectedItem.Value = "none" then selectedItem.IsSelected := true; else selectedItem.IsSelected := false; endif; endif; listItems := (listItems, selectedItem); ENDDO; this_currentobj.ValueObj.ListItemsList := listItems; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); // After the boxes have been reset, assess what is now selected If WhatWasClicked = "None Button Was Clicked" and true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "none") then contraboxchecked := "false"; MLMAction := "Retrieve and Reassess"; elseif WhatWasClicked = "Other Button Was Clicked" and true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value <> "none") then contraboxchecked := "true"; MLMAction := "No Assessment Required"; endif; endif; // End of Reset mutually exclusive Contra section // If None is selcted , Unhide the Chronic Illness and Immunocompromised fields and buttons If contraboxchecked = "false" then this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_TDAP ED Unhide"); this_currentObj := NEW ObservationType; this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID; this_currentObj.ParameterGUID := this_parametername.ParameterGUID; this_currentObj.DataType := "ListValue"; this_currentObj.ValueObj := New ListValueType; this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID; listItems := (); FOR item IN this_parametername.ConfigurationObj.ListItemsList DO selectedItem := NEW ListValueListItemType; selectedItem.ListItemGUID := item.ListItemGUID; selectedItem.Value := item.Value; selectedItem.IsSelected := true; listItems := (listItems, selectedItem); ENDDO; this_currentobj.ValueObj.ListItemsList := listItems; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); endif; // Populate the "None" Contraindiated Selected Value Box this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_TDAP ED Details"); this_currentObj := NEW ObservationType; this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID; this_currentObj.ParameterGUID := this_parametername.ParameterGUID; this_currentObj.DataType := "FreeTextValue"; this_currentObj.ValueObj := New FreeTextValueType; this_currentObj.ValueObj.Value := NewNoneContraValue; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); endif; // End of Contraindication section // OTHER BUTTON CHANGE SECTION // Place Order button change to NO (affix ovverride message to assesement) theParameter := first of (thisparameters where thisparameters.Name = "SCHCK_TDAP vac order"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); if thisDocumentCommunication.CurrentObservationObj.parameterguid = theParameter.ParameterGUID and true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "no") then MLMAction := "Reassess Only"; trigger:= "Order Button NO was selected"; endif; // Place Order button change to YES (send message to user and reset to original assessment) theParameter := first of (thisparameters where thisparameters.Name = "SCHCK_TDAP vac order"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); if thisDocumentCommunication.CurrentObservationObj.parameterguid = theParameter.ParameterGUID and true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "yes") then MLMAction := "Reassess Only"; trigger:= "Order Button YES was selected"; endif; // Date has Changed theParameter := first of (thisParameters where thisParameters.Name = "SCHCK_Tdap date vacc rec ob"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); if thisDocumentCommunication.CurrentObservationObj.parameterguid = theParameter.ParameterGUID then trigger := "Date was changed"; If SavedNoneContraValue = "true" then MLMAction := "Reassess Only"; // No Contraindications were identified else MLMAction := "No Assessment Required"; // Patient has contraindications endif; endif; theParameter := first of (thisParameters where thisParameters.Name = "SCHCK_Tetanus date vacc rec"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); if thisDocumentCommunication.CurrentObservationObj.parameterguid = theParameter.ParameterGUID then trigger := "Date was changed"; If SavedNoneContraValue = "true" then MLMAction := "Reassess Only"; // No Contraindications were identified else MLMAction := "No Assessment Required"; // Patient has contraindications endif; endif; // RETRIEVE AND REASSESS (or REASSESS ONLY) SECTION if MLMAction = "Retrieve and Reassess" or MLMAction = "Reassess Only" then // RETRIEVE AND REASSESS SECTION If MLMAction = "Retrieve and Reassess" then // Gather date information related to the first of two vaccines (TDAP) // Date vaccine #1 was charted in the patient profile (vaccinecharteddate) := read last { " select " ||" case when LEN(o.valuetext) = 8 then " ||" case when (substring(o.valuetext, 7, 1)) in ({{{SINGLE-QUOTE}}}7{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}8{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}9{{{SINGLE-QUOTE}}}) then {{{SINGLE-QUOTE}}}19{{{SINGLE-QUOTE}}} else {{{SINGLE-QUOTE}}}20{{{SINGLE-QUOTE}}} end " || " + (substring(o.valuetext, 7, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + " || "(substring(o.valuetext, 1, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 4, 2)) +{{{SINGLE-QUOTE}}} 00:00:00.000{{{SINGLE-QUOTE}}} " || "else " || "(substring(o.valuetext, 7, 4)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 1, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 4, 2)) +{{{SINGLE-QUOTE}}} 00:00:00.000{{{SINGLE-QUOTE}}} " || " end " || " from CV3ClientDocument cd with (nolock) " || " join CV3ClientDocDetail cdd with (nolock) ON (cdd.ClientDocumentGUID = cd.GUID AND cdd.ClientGUID = " || ClientGuid || " and cdd.active = 1) " || " join CV3ObservationDocument od with (nolock)ON cdd.CLientDocumentGUID = od.OwnerGUID and od.active = 1 " || " join CV3Observation o with (nolock) ON o.GUID = od.ObservationGUID " || " join CV3ObsCatalogMasterItem ocmi with (nolock) on od.ObsMasterItemGUID = ocmi.GUID and ocmi.name = {{{SINGLE-QUOTE}}}SCHCK_Tdap date vacc rec ob{{{SINGLE-QUOTE}}} " || " where cd.clientguid = " || ClientGuid || " and cd.iscanceled = 0 and cd.documentname like {{{SINGLE-QUOTE}}}%patient profile%{{{SINGLE-QUOTE}}} " || " and " || " (select top 1 fslx.value " || " from CV3ClientDocument cdx with (nolock) " || " join CV3ClientDocDetail cddx with (nolock) ON (cddx.ClientDocumentGUID = cdx.GUID AND cddx.ClientGUID = " || ClientGuid || " and cddx.active = 1) " || " join CV3ObservationDocument odx with (nolock)ON cddx.CLientDocumentGUID = odx.OwnerGUID and odx.active = 1 " || " join CV3Observation ox with (nolock) ON ox.GUID = odx.ObservationGUID " || " join CV3ObsCatalogMasterItem ocmix with (nolock) on odx.ObsMasterItemGUID = ocmix.GUID and ocmix.name = {{{SINGLE-QUOTE}}}SCHCK_Tdap vaccine type rec ob{{{SINGLE-QUOTE}}} " || " left join SCMObsFSListValues fslx(nolock) ON (fslx.ParentGUID = odx.ObservationDocumentGUID AND fslx.ClientGUID = " || ClientGuid || " ) " || " where cdx.GUID = cd.guid ) " || " is null " || " order by (substring(o.valuetext, 7, 4)), (substring(o.valuetext, 1, 2)) , (substring(o.valuetext, 4, 2)) " }; vaccinechartedwhen := (vaccinecharteddate as time); // Date vaccine #1 was charted in the patient profile - old style (with tetanus radio button selected....not (vaccinecharteddateoldstyle) := read last { " select " ||" case when LEN(o.valuetext) = 8 then " ||" case when (substring(o.valuetext, 7, 1)) in ({{{SINGLE-QUOTE}}}7{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}8{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}9{{{SINGLE-QUOTE}}}) then {{{SINGLE-QUOTE}}}19{{{SINGLE-QUOTE}}} else {{{SINGLE-QUOTE}}}20{{{SINGLE-QUOTE}}} end " || " + (substring(o.valuetext, 7, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + " || "(substring(o.valuetext, 1, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 4, 2)) +{{{SINGLE-QUOTE}}} 00:00:00.000{{{SINGLE-QUOTE}}} " || "else " || "(substring(o.valuetext, 7, 4)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 1, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 4, 2)) +{{{SINGLE-QUOTE}}} 00:00:00.000{{{SINGLE-QUOTE}}} " || " end " || " from CV3ClientDocument cd with (nolock) " || " join CV3ClientDocDetail cdd with (nolock) ON (cdd.ClientDocumentGUID = cd.GUID AND cdd.ClientGUID = " || ClientGuid || " and cdd.active = 1) " || " join CV3ObservationDocument od with (nolock)ON cdd.CLientDocumentGUID = od.OwnerGUID and od.active = 1 " || " join CV3Observation o with (nolock) ON o.GUID = od.ObservationGUID " || " join CV3ObsCatalogMasterItem ocmi with (nolock) on od.ObsMasterItemGUID = ocmi.GUID and ocmi.name = {{{SINGLE-QUOTE}}}SCHCK_Tdap date vacc rec ob{{{SINGLE-QUOTE}}} " || " where cd.clientguid = " || ClientGuid || " and cd.iscanceled = 0 and cd.documentname like {{{SINGLE-QUOTE}}}%patient profile%{{{SINGLE-QUOTE}}} " || " and " || " (select top 1 fslx.value " || " from CV3ClientDocument cdx with (nolock) " || " join CV3ClientDocDetail cddx with (nolock) ON (cddx.ClientDocumentGUID = cdx.GUID AND cddx.ClientGUID = " || ClientGuid || " and cddx.active = 1) " || " join CV3ObservationDocument odx with (nolock)ON cddx.CLientDocumentGUID = odx.OwnerGUID and odx.active = 1 " || " join CV3Observation ox with (nolock) ON ox.GUID = odx.ObservationGUID " || " join CV3ObsCatalogMasterItem ocmix with (nolock) on odx.ObsMasterItemGUID = ocmix.GUID and ocmix.name = {{{SINGLE-QUOTE}}}SCHCK_Tdap vaccine type rec ob{{{SINGLE-QUOTE}}} " || " left join SCMObsFSListValues fslx(nolock) ON (fslx.ParentGUID = odx.ObservationDocumentGUID AND fslx.ClientGUID = " || ClientGuid || " ) " || " where cdx.GUID = cd.guid ) " || " = {{{SINGLE-QUOTE}}}TDAP{{{SINGLE-QUOTE}}} " || " order by (substring(o.valuetext, 7, 4)), (substring(o.valuetext, 1, 2)) , (substring(o.valuetext, 4, 2)) " }; vaccinechartedwhenoldstyle := (vaccinecharteddateoldstyle as time); // Date vaccine #1 was charted as given in the EMAR (vaccinegivenwhen) := read last { " select oto.performedfromdtm " || " from cv3ordercatalogmasteritem as ocmi with (nolock) " || " join cv3order as o with (nolock)on o.ordercatalogmasteritemguid = ocmi.guid " || " and o.ClientGUID = " || ClientGuid || " " || " and (o.name = {{{SINGLE-QUOTE}}}Diphtheria, Pertussis, Tetanus Vaccine{{{SINGLE-QUOTE}}}) " || " join cv3ordertask as ot with (nolock) on ot.clientguid = o.clientguid and ot.orderguid = o.guid " || " join cv3ordertaskoccurrence as oto with (nolock) on oto.clientguid = ot.clientguid and oto.orderguid = ot.orderguid " || " and oto.ordertaskguid = ot.guid and oto.taskstatuscode ={{{SINGLE-QUOTE}}}Performed{{{SINGLE-QUOTE}}} " }; // Date vaccine #1 was last charted as an active health issue (vaccinehealthissuedate) := read last { " select " || " case when onsetyearnum = 0 " || " then createdwhen " || " else " || " case when (onsetmonthnum >0 and onsetmonthnum <10) then {{{SINGLE-QUOTE}}}0{{{SINGLE-QUOTE}}} + cast (onsetmonthnum as varchar) " || " when onsetmonthnum = 0 then {{{SINGLE-QUOTE}}}01{{{SINGLE-QUOTE}}} else cast (onsetmonthnum as varchar) end + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + " || " case when (onsetdaynum >0 and onsetdaynum <10) then {{{SINGLE-QUOTE}}}0{{{SINGLE-QUOTE}}} + cast (onsetdaynum as varchar) " || " when onsetdaynum = 0 then {{{SINGLE-QUOTE}}}01{{{SINGLE-QUOTE}}} else cast (onsetdaynum as varchar) end " || " + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + cast (onsetyearnum as varchar) +{{{SINGLE-QUOTE}}} 00:00:00.000{{{SINGLE-QUOTE}}} " || " end {{{SINGLE-QUOTE}}}date returned to mlm{{{SINGLE-QUOTE}}} " || " from cv3healthissuedeclaration with (nolock) " || " where clientguid = " || ClientGuid || " and active = 1 and status = {{{SINGLE-QUOTE}}}active{{{SINGLE-QUOTE}}}" || " and (text like {{{SINGLE-QUOTE}}}%TDAP%{{{SINGLE-QUOTE}}} or shortname like {{{SINGLE-QUOTE}}}%TDAP%{{{SINGLE-QUOTE}}}) " || " order by createdwhen " }; vaccinehealthissue_found := count(vaccinehealthissue) As Number; // Gather date information related to the second of two vaccines (TETANUS) // Date vaccine #2 was charted in the patient profile (vaccinecharteddate_2) := read last { " select " ||" case when LEN(o.valuetext) = 8 then " ||" case when (substring(o.valuetext, 7, 1)) in ({{{SINGLE-QUOTE}}}7{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}8{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}9{{{SINGLE-QUOTE}}}) then {{{SINGLE-QUOTE}}}19{{{SINGLE-QUOTE}}} else {{{SINGLE-QUOTE}}}20{{{SINGLE-QUOTE}}} end " || " + (substring(o.valuetext, 7, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + " || "(substring(o.valuetext, 1, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 4, 2)) +{{{SINGLE-QUOTE}}} 00:00:00.000{{{SINGLE-QUOTE}}} " || "else " || "(substring(o.valuetext, 7, 4)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 1, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 4, 2)) +{{{SINGLE-QUOTE}}} 00:00:00.000{{{SINGLE-QUOTE}}} " || " end " || " from CV3ClientDocument cd with (nolock) " || " join CV3ClientDocDetail cdd with (nolock) ON (cdd.ClientDocumentGUID = cd.GUID AND cdd.ClientGUID = " || ClientGuid || " and cdd.active = 1) " || " join CV3ObservationDocument od with (nolock)ON cdd.CLientDocumentGUID = od.OwnerGUID and od.active = 1 " || " join CV3Observation o with (nolock) ON o.GUID = od.ObservationGUID " || " join CV3ObsCatalogMasterItem ocmi with (nolock) on od.ObsMasterItemGUID = ocmi.GUID and ocmi.name = {{{SINGLE-QUOTE}}}SCHCK_Tetanus date vacc rec{{{SINGLE-QUOTE}}} " || " where cd.clientguid = " || ClientGuid || " and cd.iscanceled = 0 and cd.documentname like {{{SINGLE-QUOTE}}}%patient profile%{{{SINGLE-QUOTE}}} " || " and " || " (select top 1 fslx.value " || " from CV3ClientDocument cdx with (nolock) " || " join CV3ClientDocDetail cddx with (nolock) ON (cddx.ClientDocumentGUID = cdx.GUID AND cddx.ClientGUID = " || ClientGuid || " and cddx.active = 1) " || " join CV3ObservationDocument odx with (nolock)ON cddx.CLientDocumentGUID = odx.OwnerGUID and odx.active = 1 " || " join CV3Observation ox with (nolock) ON ox.GUID = odx.ObservationGUID " || " join CV3ObsCatalogMasterItem ocmix with (nolock) on odx.ObsMasterItemGUID = ocmix.GUID and ocmix.name = {{{SINGLE-QUOTE}}}SCHCK_Tdap vaccine type rec ob{{{SINGLE-QUOTE}}} " || " left join SCMObsFSListValues fslx(nolock) ON (fslx.ParentGUID = odx.ObservationDocumentGUID AND fslx.ClientGUID = " || ClientGuid || " ) " || " where cdx.GUID = cd.guid ) " || " is null " || " order by (substring(o.valuetext, 7, 4)), (substring(o.valuetext, 1, 2)) , (substring(o.valuetext, 4, 2)) " }; vaccinechartedwhen_2 := (vaccinecharteddate_2 as time); // Date vaccine #2 was charted in the patient profile - old style (with tetanus radio button selected....not (vaccinecharteddateoldstyle_2) := read last { " select " ||" case when LEN(o.valuetext) = 8 then " ||" case when (substring(o.valuetext, 7, 1)) in ({{{SINGLE-QUOTE}}}7{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}8{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}9{{{SINGLE-QUOTE}}}) then {{{SINGLE-QUOTE}}}19{{{SINGLE-QUOTE}}} else {{{SINGLE-QUOTE}}}20{{{SINGLE-QUOTE}}} end " || " + (substring(o.valuetext, 7, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + " || "(substring(o.valuetext, 1, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 4, 2)) +{{{SINGLE-QUOTE}}} 00:00:00.000{{{SINGLE-QUOTE}}} " || "else " || "(substring(o.valuetext, 7, 4)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 1, 2)) + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + (substring(o.valuetext, 4, 2)) +{{{SINGLE-QUOTE}}} 00:00:00.000{{{SINGLE-QUOTE}}} " || " end " || " from CV3ClientDocument cd with (nolock) " || " join CV3ClientDocDetail cdd with (nolock) ON (cdd.ClientDocumentGUID = cd.GUID AND cdd.ClientGUID = " || ClientGuid || " and cdd.active = 1) " || " join CV3ObservationDocument od with (nolock)ON cdd.CLientDocumentGUID = od.OwnerGUID and od.active = 1 " || " join CV3Observation o with (nolock) ON o.GUID = od.ObservationGUID " || " join CV3ObsCatalogMasterItem ocmi with (nolock) on od.ObsMasterItemGUID = ocmi.GUID and ocmi.name = {{{SINGLE-QUOTE}}}SCHCK_Tdap date vacc rec ob{{{SINGLE-QUOTE}}} " || " where cd.clientguid = " || ClientGuid || " and cd.iscanceled = 0 and cd.documentname like {{{SINGLE-QUOTE}}}%patient profile%{{{SINGLE-QUOTE}}} " || " and " || " (select top 1 fslx.value " || " from CV3ClientDocument cdx with (nolock) " || " join CV3ClientDocDetail cddx with (nolock) ON (cddx.ClientDocumentGUID = cdx.GUID AND cddx.ClientGUID = " || ClientGuid || " and cddx.active = 1) " || " join CV3ObservationDocument odx with (nolock)ON cddx.CLientDocumentGUID = odx.OwnerGUID and odx.active = 1 " || " join CV3Observation ox with (nolock) ON ox.GUID = odx.ObservationGUID " || " join CV3ObsCatalogMasterItem ocmix with (nolock) on odx.ObsMasterItemGUID = ocmix.GUID and ocmix.name = {{{SINGLE-QUOTE}}}SCHCK_Tdap vaccine type rec ob{{{SINGLE-QUOTE}}} " || " left join SCMObsFSListValues fslx(nolock) ON (fslx.ParentGUID = odx.ObservationDocumentGUID AND fslx.ClientGUID = " || ClientGuid || " ) " || " where cdx.GUID = cd.guid ) " || " = {{{SINGLE-QUOTE}}}Tetanus{{{SINGLE-QUOTE}}} " || " order by (substring(o.valuetext, 7, 4)), (substring(o.valuetext, 1, 2)) , (substring(o.valuetext, 4, 2)) " }; vaccinechartedwhenoldstyle_2 := (vaccinecharteddateoldstyle_2 as time); // Date vaccine #2 was charted as given in the EMAR (vaccinegivenwhen_2) := read last { " select oto.performedfromdtm " || " from cv3ordercatalogmasteritem as ocmi with (nolock) " || " join cv3order as o with (nolock)on o.ordercatalogmasteritemguid = ocmi.guid " || " and o.ClientGUID = " || ClientGuid || " " || " and (o.name in ({{{SINGLE-QUOTE}}}Tetanus Toxoid Adsorbed Inj{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}Diphtheria/Tetanus Toxoid{{{SINGLE-QUOTE}}})) " || " join cv3ordertask as ot with (nolock) on ot.clientguid = o.clientguid and ot.orderguid = o.guid " || " join cv3ordertaskoccurrence as oto with (nolock) on oto.clientguid = ot.clientguid and oto.orderguid = ot.orderguid " || " and oto.ordertaskguid = ot.guid and oto.taskstatuscode ={{{SINGLE-QUOTE}}}Performed{{{SINGLE-QUOTE}}} " }; // Date vaccine #2 was last charted as an active health issue (vaccinehealthissuedate_2) := read last { " select " || " case when onsetyearnum = 0 " || " then createdwhen " || " else " || " case when (onsetmonthnum >0 and onsetmonthnum <10) then {{{SINGLE-QUOTE}}}0{{{SINGLE-QUOTE}}} + cast (onsetmonthnum as varchar) " || " when onsetmonthnum = 0 then {{{SINGLE-QUOTE}}}01{{{SINGLE-QUOTE}}} else cast (onsetmonthnum as varchar) end + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + " || " case when (onsetdaynum >0 and onsetdaynum <10) then {{{SINGLE-QUOTE}}}0{{{SINGLE-QUOTE}}} + cast (onsetdaynum as varchar) " || " when onsetdaynum = 0 then {{{SINGLE-QUOTE}}}01{{{SINGLE-QUOTE}}} else cast (onsetdaynum as varchar) end " || " + {{{SINGLE-QUOTE}}}-{{{SINGLE-QUOTE}}} + cast (onsetyearnum as varchar) +{{{SINGLE-QUOTE}}} 00:00:00.000{{{SINGLE-QUOTE}}} " || " end {{{SINGLE-QUOTE}}}date returned to mlm{{{SINGLE-QUOTE}}} " || " from cv3healthissuedeclaration with (nolock) " || " where clientguid = " || ClientGuid || " and active = 1 and status = {{{SINGLE-QUOTE}}}active{{{SINGLE-QUOTE}}}" || " and (text like {{{SINGLE-QUOTE}}}%Tetanus%{{{SINGLE-QUOTE}}} or shortname like {{{SINGLE-QUOTE}}}%Tetanus%{{{SINGLE-QUOTE}}}) " || " order by createdwhen " }; vaccinehealthissue_found_2 := count(vaccinehealthissue_2) As Number; // Populate Fields and Boxes // Populate the latest date of Vaccine #1 (TDAP) // First determine which of the 3 dates is latest (vaccine given, charted, or health issue) match1 := false; match2 := false; match3 := false; nodates:= false; If vaccinegivenwhen is null and vaccinehealthissuedate is null and vaccinechartedwhen is null and vaccinechartedwhenoldstyle is null then nodates := true; endif; If vaccinegivenwhen is null then vaccinegivenwhen := 1800-01-01T00:00:00; endif; If vaccinehealthissuedate is null then vaccinehealthissuedate := 1800-01-01T00:00:00; endif; If vaccinechartedwhen is null then vaccinechartedwhen := 1800-01-01T00:00:00; endif; If vaccinechartedwhenoldstyle is null then vaccinechartedwhenoldstyle := 1800-01-01T00:00:00; endif; // Save the "new stye" date (for the HIS box) & then update vaccinechartedwhen with the later of the two dates ("old style" w/tetanus radio button or "new style w/no radio button) vaccinechartedwhennewstyle := vaccinechartedwhen; if vaccinechartedwhenoldstyle IS AFTER vaccinechartedwhen then vaccinechartedwhen := vaccinechartedwhenoldstyle; endif; // With the latest "vaccine given" date established, proceed with the process of determining the latest of (vaccine given, charted, or health issue) match1 := vaccinegivenwhen IS AFTER vaccinehealthissuedate; If match1 = true then match2 := vaccinegivenwhen IS AFTER vaccinechartedwhen; else match3 := vaccinehealthissuedate IS AFTER vaccinechartedwhen; endif; If match2 = true then givenwins := true; endif; If match3 = true then healthissuewins := true; endif; If (match2 = false) and (match3 = false) then chartedwins := true; endif; if nodates = false then If givenwins = true then latestdate := vaccinegivenwhen; endif; If healthissuewins = true then latestdate := vaccinehealthissuedate; endif; If chartedwins = true then latestdate := vaccinechartedwhen; endif; endif; // Populate Date field // First determine if the field has been manually updated by the nurse (not empty) theParameter := first of (thisParameters where thisParameters.Name = "SCHCK_Tdap date vacc rec ob"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); datefieldcontents := theObservation.ValueObj.Value; if datefieldcontents is null then datefield := latestdate; else datefield := datefieldcontents; endif; // Populate the field if history is found in SCM and the field hasn{{{SINGLE-QUOTE}}}t been overriden by the nurse (not empty) If latestdate is not null and datefieldcontents is null then this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Tdap date vacc rec ob"); this_currentObj := NEW ObservationType; this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID; this_currentObj.ParameterGUID := this_parametername.ParameterGUID; this_currentObj.DataType := "DateValue"; this_currentObj.ValueObj := New DateValueType; this_currentObj.ValueObj.Value := latestdate; this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); endif; // Populate the latest date of Vaccine #2 (TETANUS) // First determine which of the 3 dates is latest (vaccine given, charted, or health issue) match1_2 := false; match2_2 := false; match3_2 := false; nodates_2:= false; If vaccinegivenwhen_2 is null and vaccinehealthissuedate_2 is null and vaccinechartedwhen_2 is null and vaccinechartedwhenoldstyle_2 is null then nodates_2 := true; endif; If vaccinegivenwhen_2 is null then vaccinegivenwhen_2 := 1800-01-01T00:00:00; endif; If vaccinehealthissuedate_2 is null then vaccinehealthissuedate_2 := 1800-01-01T00:00:00; endif; If vaccinechartedwhen_2 is null then vaccinechartedwhen_2 := 1800-01-01T00:00:00; endif; If vaccinechartedwhenoldstyle_2 is null then vaccinechartedwhenoldstyle_2 := 1800-01-01T00:00:00; endif; // Save the "new stye" date (for the HIS box) & then update vaccinechartedwhen with the later of the two dates ("old style" w/tetanus radio button or "new style w/no radio button) vaccinechartedwhennewstyle_2 := vaccinechartedwhen_2; if vaccinechartedwhenoldstyle_2 IS AFTER vaccinechartedwhen_2 then vaccinechartedwhen_2 := vaccinechartedwhenoldstyle_2; endif; // With the latest "vaccine given" date established, proceed with the process of determining the latest of (vaccine given, charted, or health issue) match1_2 := vaccinegivenwhen_2 IS AFTER vaccinehealthissuedate_2; If match1_2 = true then match2_2 := vaccinegivenwhen_2 IS AFTER vaccinechartedwhen_2; else match3_2 := vaccinehealthissuedate_2 IS AFTER vaccinechartedwhen_2; endif; If match2_2 = true then givenwins_2 := true; endif; If match3_2 = true then healthissuewins_2 := true; endif; If (match2_2 = false) and (match3_2 = false) then chartedwins_2 := true; endif; if nodates_2 = false then If givenwins_2 = true then latestdate_2 := vaccinegivenwhen_2; endif; If healthissuewins_2 = true then latestdate_2 := vaccinehealthissuedate_2; endif; If chartedwins_2 = true then latestdate_2 := vaccinechartedwhen_2; endif; endif; // Populate Date field // First determine if the field has been manually updated by the nurse (not empty) theParameter := first of (thisParameters where thisParameters.Name = "SCHCK_Tetanus date vacc rec"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); datefieldcontents_2 := theObservation.ValueObj.Value; if datefieldcontents_2 is null then datefield_2 := latestdate_2; else datefield_2 := datefieldcontents_2; endif; // Populate the field if history is found in SCM and the field hasn{{{SINGLE-QUOTE}}}t been overriden by the nurse (not empty) If latestdate_2 is not null and datefieldcontents_2 is null then this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_Tetanus date vacc rec"); this_currentObj := NEW ObservationType; this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID; this_currentObj.ParameterGUID := this_parametername.ParameterGUID; this_currentObj.DataType := "DateValue"; this_currentObj.ValueObj := New DateValueType; this_currentObj.ValueObj.Value := latestdate_2; this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); endif; // REASSESS ONLY SECTION elseIf MLMAction = "Reassess Only" then // Determine if any of the Contraindications boxes are checked theParameter := first of (thisparameters where thisparameters.Name = "SCHCK_TDAP ED vac contra"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); If true not in (theObservation.ValueObj.ListItemsList.IsSelected) then contraboxchecked := "unknown"; elseif true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "none") then contraboxchecked := "false"; else contraboxchecked := "true"; endif; // Determine the value of the date given field for the first vaccine theParameter := first of (thisParameters where thisParameters.Name = "SCHCK_Tdap date vacc rec ob"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); datefield := theObservation.ValueObj.Value; if datefield is null then datefield := "unknown"; endif; // Determine the value of the date given field for the second vaccine theParameter := first of (thisParameters where thisParameters.Name = "SCHCK_Tetanus date vacc rec"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); datefield_2 := theObservation.ValueObj.Value; if datefield_2 is null then datefield_2 := "unknown"; endif; endif; // End of "Reassess Only" Section // ASSESS THE RISK SECTION ("Retrieve and Reassess" or "Reassess Only") if MLMAction = "Retrieve and Reassess" or MLMAction = "Reassess Only" then // set to unknown to satisfy conditions below if datefield is null then datefield := "unknown"; endif; if datefield_2 is null then datefield_2 := "unknown"; endif; /* // SECTIONS BELOW ARE COMMENTED OUT AS NO ORDER IS PLACED FOR TETANUS OR TDAP WHEN THE PATIENT IS IN THE ED (not removed if needed later) // Risk Senarios // Scenarios that will cause an order to be placed If datefield = "unknown" then ordervaccine := "yes"; formattedTextReason := "Y-1. Order is to be placed since patient has never received a vaccine." ; endif; // Scenarios that will NOT cause an order to be placed If datefield <> "unknown" then ordervaccine := "no"; formattedTextReason := "N-1. Order is not to be placed since patient has received the vaccine." ; endif; // Special Handling for Place Order Button Changes If trigger = "Order Button NO was selected" then ordervaccine := "no"; formattedTextReason := formattedTextReason || " ** OVERRIDDEN TO NO BY " || userId || " ** "; endif; If trigger = "Order Button YES was selected" and ordervaccine = "no" then dialogResult := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with "\n You cannot place an order on this patient. ", "Error","OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}}; formattedTextReason := formattedTextReason || " ** FAILED OVERRIDE TO YES BY " || userId || " ** "; endif; */ endif; // end of section for assessing risk endif; // End of Bypass Everything (If MLMAction <> "No Assessment Required") // FOR ANY OBSERVATION CHANGE // Select the appropriate Order Vaccine radio button determined by the assessment /* If contraboxchecked = "true" then ordervaccine := "no"; formattedTextReason := "N-7. Order will not be placed since the vaccine is contraindicated."; endif; this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_TDAP vac order"); this_currentObj := NEW ObservationType; this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID; this_currentObj.ParameterGUID := this_parametername.ParameterGUID; this_currentObj.DataType := "ListValue"; this_currentObj.ValueObj := New ListValueType; this_currentObj.ValueObj.ListGUID:= this_parametername.ConfigurationObj.ListGUID; listItems := (); FOR item IN this_parametername.ConfigurationObj.ListItemsList DO selectedItem := NEW ListValueListItemType; selectedItem.ListItemGUID := item.ListItemGUID; selectedItem.Value := item.Value; if selectedItem.Value = "yes" and ordervaccine = "yes" then selectedItem.IsSelected := true; endif; if selectedItem.Value = "no" and ordervaccine = "no" then selectedItem.IsSelected := true; endif; listItems := (listItems, selectedItem); ENDDO; this_currentobj.ValueObj.ListItemsList := listItems; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); */ endif; // End of Observation Event section // DOCUMENT CLOSING SECTION /* IF thisdocumentCommunication.EventType = "DocumentClosing" then // Determine if Place Order button is set to "Yes" theParameter := first of (thisparameters where thisparameters.Name = "SCHCK_TDAP vac order"); theObservation := first of (thisobservations where thisobservations.ParameterGUID = theParameter.ParameterGUID); if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "no") then placeorder := "no"; endif; if true in (theObservation.ValueObj.ListItemsList.IsSelected where theObservation.ValueObj.ListItemsList.Value = "yes") then placeorder := "yes"; endif; // Check for existing Vaccine Order on the account (orderpresent) := read { " select o.name " || " from cv3ordercatalogmasteritem as ocmi with (nolock) " || " join cv3order as o with (nolock)on o.ordercatalogmasteritemguid = ocmi.guid " || " and o.ClientGUID = " || ClientGuid || " and o.ChartGUID = " || ChartGuid || " and o.ClientVisitGUID= " || VisitGuid || " " || " and (o.name = {{{SINGLE-QUOTE}}}Diphtheria, Pertussis, Tetanus Vaccine{{{SINGLE-QUOTE}}}) " || " and o.OrderStatusLevelNum > 15 " }; orderpresent_found := count(orderpresent) As Number; // If no existing order is found and Place Order button is "Yes" then create a new order If placeorder = "yes" and orderpresent_found = 0 then SessionType := "Standard"; SessionReason := ""; RequestingSource := ""; user_IDType := "Edstan Number (physician)"; order_Creation_Reason := "From Test MLM"; client_visit_obj := call {{{SINGLE-QUOTE}}}ClientVisit{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((thisdocumentCommunication.ClientVisitGUID as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}}) ; user_IDCode := read last {"SELECT IDCode FROM CV3User " || " where GUID = " || thisdocumentCommunication.UserGUID}; RequestingCareProvider_obj := call {{{SINGLE-QUOTE}}}CareProvider{{{SINGLE-QUOTE}}}.FindById with ( user_IDType, (user_IDCode as STRING) ); location_guid := read last {"SELECT CurrentLocationGUID FROM CV3ClientVisit where ClientGUID = " || thisdocumentCommunication.ClientGUID}; location_obj := call {{{SINGLE-QUOTE}}}Location{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((location_guid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}}); // Create a new MEDICATION order from a Pre-Filled item try Catalog_Item_Name := "Diphtheria, Pertussis, Tetanus Vaccine"; Catalog_Item_Modifier := "0.5mL, IM, Once"; Catalog_Item_Version := ""; Medication_catalog_item := call {{{SINGLE-QUOTE}}}OrderCatalogMasterItem{{{SINGLE-QUOTE}}}.FindByName with Catalog_Item_Name; PreFilled_MedicationOrder_obj := call {{{SINGLE-QUOTE}}}MedicationOrder{{{SINGLE-QUOTE}}}.CreateMedicationOrder with client_visit_obj, // ClientVisit ObjectsPlus object Medication_catalog_item, // OrderCatalogMasterItem ObjectsPlus object Catalog_Item_Modifier, // string ItemNameModifier Catalog_Item_Version, // string ItemNameModifierVersion order_Creation_Reason, // string CreateReason RequestingCareProvider_obj , // RequestedBy ObjectsPlus object RequestingSource, // string RequestedBySource (must be in dictionary) SessionType, // string SessionType SessionReason, // string SessionReason location_obj, // Location ReleaseLocGrpID "Always" as {{{SINGLE-QUOTE}}}AvailabilityOverride{{{SINGLE-QUOTE}}}; // AvailabilityOverride eAvailabilityOverride if ( Medication_catalog_item is NOT NULL ) then void := call PreFilled_MedicationOrder_obj.Save; void := call PreFilled_MedicationOrder_obj.Dispose; void:= call Medication_catalog_item.Dispose; Medication_catalog_item:= null; endif; endtry; catch Exception ex error_occurred := true; error_message := "{{+R}}New prefilled medication order:{{-R}}\n" || ex.Message || "\n\n"; if ( Medication_catalog_item is NOT NULL ) then void:= call Medication_catalog_item.Dispose; Medication_catalog_item:= null; endif; if ( PreFilled_MedicationOrder_obj is NOT NULL ) then void:= call PreFilled_MedicationOrder_obj.Dispose; PreFilled_MedicationOrder_obj:= null; endif; Prefilled_MedicationOrder_dest := null; endcatch; if ( client_visit_obj is NOT NULL ) then void:= call client_visit_obj.Dispose; client_visit_obj:= null; endif; if ( RequestingCareProvider_obj is NOT NULL ) then void:= call RequestingCareProvider_obj.Dispose; RequestingCareProvider_obj:= null; endif; if ( location_obj is NOT NULL ) then void:= call location_obj.Dispose; location_obj:= null; endif; endif; // End of Place Order = Yes section endif; // End of Close Document */ // Populate the HIS only Assessment Information box // This secton as well as the FormattedText1 := below are for diagnostic purposes only dateonly:= SUBSTRING 10 CHARACTERS FROM (datefield as string); dateonly_2:= SUBSTRING 10 CHARACTERS FROM (datefield_2 as string); nowdateonly:= SUBSTRING 10 CHARACTERS FROM (now as string); Factor5 := "Contraindicated - "|| contraboxchecked; Factor6 := " Tetanus Last Given Worklist - " || vaccinegivenwhen_2 || "\n Tetanus Last Given Profile - " || vaccinechartedwhennewstyle_2 || "\n Tetanus Last Given Profile Old Style - " || vaccinechartedwhenoldstyle_2 || "\n Tetanus Last Given Health Issue - " || vaccinehealthissuedate_2 || "\n Tetanus Last Given - " || dateonly_2; Factor7 := " TDAP Last Given Worklist - " || vaccinegivenwhen || "\n TDAP Last Given Profile - " || vaccinechartedwhennewstyle || "\n TDAP Last Given Profile Old Style - " || vaccinechartedwhenoldstyle || "\n TDAP Last Given Health Issue - " || vaccinehealthissuedate || "\n TDAP Last Given - " || dateonly; Factor9 := "Last Trigger Event - " || nowdateonly || " " || trigger || " by " || userid || " (MLM reaction - " || MLMAction || ")"; formattedText1 := "\n\n" || Factor5 || "\n\n" || Factor6 || "\n\n" || Factor7 || "\n\n" || Factor9 ; formattedTextReason := formattedTextReason || formattedText1; this_parametername := first of (thisParameters where thisParameters.Name = "SCHCK_TDAP ED Risk Assess Details"); this_currentObj := NEW ObservationType; this_currentObj.ClientDocumentGUID:= thisStructuredNoteDoc.ClientDocumentGUID; this_currentObj.ParameterGUID := this_parametername.ParameterGUID; this_currentObj.DataType := "FreeTextValue"; this_currentObj.ValueObj := New FreeTextValueType; this_currentObj.ValueObj.Value := formattedTextReason; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); ;; evoke: ;; logic: conclude true; ;; action: return thisDocumentCommunication; ;; Urgency: 50;; end: