maintenance: title: Form_Set_AdmitToInPatient_PlaceInObs ;; mlmname: Form_Set_AdmitToInPatient_PlaceInObs ;; arden: version 2.5;; version: 6.00;; institution: St. Clair Hospital ;; author: Shivprasad Jadhav;; specialist: Shubha Rai;; date: 2015-01-16;; validation: testing;; library: purpose: Explanation to Change ----------------------------------------- 14-05-2015 - GMS - Created New ;; explanation: This will have an MLM that will pull the data as per the below format. Fall Risk Score = "4" (ED Triage Note) and Resistant Organism= "V" (Patient Info- Comments) (N= No Flag, V = VRE, M=MRSA, O= Other) ;; keywords: ;; citations: ;; knowledge: type: data-driven;; data: // This MLM is passed three arguments, of types // communication_type, form_type and client info object respectively. (this_communication, // Communication object this_form, // Form object client_info_obj //Arden ClientInfo object ) := argument; /*******************Make Changes To Spelling And Flags In This Section*******************/ log_execution_info := FALSE; error_message:=""; BaseMLM := MLM {{{SINGLE-QUOTE}}}FORM_OBSERVATION_ADT{{{SINGLE-QUOTE}}}; this_communication,this_form := Call BaseMLM With this_communication,this_form,client_info_obj ; // Assigns fields passed in the Form object to the Field object field_list:= this_form.fields; clientGuid := this_communication.ClientGUID; visitGuid := this_communication.ClientVisitGUID; chartGuid := this_communication.ChartGUID; CallingEvent := this_communication.CallingEvent; CallingField := this_communication.CallingFieldName; item_event := this_communication.itemevent; form_type := this_communication.formtype; MRO_Risk_Status := last of ( field_list WHERE field_list.DataItemName = "Admit_free text" and field_list.Control_MultiFieldOccNum = 1); MRO_Risk_Status_Val := MRO_Risk_Status.Value; Ord_Doc := OBJECT [Obs_name, Obs_val , Obs_Doc ] ; Ord_vals1 := read as Ord_Doc { " select ocmi.Description, o.ValueText, cd.DocumentName " || " from CV3ClientDocument cd with (nolock) " || " join CV3ClientDocDetail cdd with (nolock) ON (cdd.ClientDocumentGUID = cd.GUID AND cdd.ClientGUID = cd.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 in ({{{SINGLE-QUOTE}}}sch_edtriage_fallriskscore{{{SINGLE-QUOTE}}}) " || " where cd.chartguid = " || chartGuid || " and cd.clientguid = " || clientGuid || " and cd.clientvisitguid = " || visitGuid || " And cd.iscanceled = 0 " || " and cd.DocumentName ={{{SINGLE-QUOTE}}}ED Triage Note{{{SINGLE-QUOTE}}} " }; /*Ord_Comment := OBJECT [Obs_name1, Obs_val1 , Obs_Doc1 ] ; Ord_vals2 := read as Ord_Comment { " Select cd.TypeCode, cd.Text, {{{SINGLE-QUOTE}}}Patient Info- Comments{{{SINGLE-QUOTE}}} As Doc " || " from CV3CommentDeclaration cd With (Nolock) join cv3ClientVisit cv With (Nolock) " || " On cd.ClientVisitGUID =cv.GUID And cd.ClientGUID=cv.ClientGUID And cd.ChartGUID=cv.ChartGUID And cd.TypeCode ={{{SINGLE-QUOTE}}}Resist Organism{{{SINGLE-QUOTE}}} " || " where cv.chartguid = " || chartGuid || " and cv.clientguid = " || clientGuid || " and cv.GUID = " || SQL(visitGuid) || " " }; */ Ord_Comment := OBJECT [Obs_name1, Obs_val1 , Obs_Doc1 ] ; Ord_vals2 := read as Ord_Comment { " Select cd.TypeCode, cd.Text, {{{SINGLE-QUOTE}}}Patient Info- Comments{{{SINGLE-QUOTE}}} As Doc " || " from CV3CommentDeclaration cd " || " where cd.clientguid = " || clientGuid || " and cd.TypeCode = {{{SINGLE-QUOTE}}}Resist Organism{{{SINGLE-QUOTE}}} " || " And cd.Status = {{{SINGLE-QUOTE}}}Active{{{SINGLE-QUOTE}}} " }; Ord_Orient := OBJECT [Obs_O_name, Obs_Conc_Val ] ; Ord_OrientVal := read as Ord_Orient { " SELECT Top 1 omi.name, Stuff(( Select {{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}+ oflv1.value " || " from SCMObsFSListValues oflv1 Where oflv1.ClientGUID = oflv.ClientGUID And oflv1.ParentGUID= oflv.ParentGUID " || " FOR XML PATH({{{SINGLE-QUOTE}}}{{{SINGLE-QUOTE}}}), TYPE).value({{{SINGLE-QUOTE}}}.{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}varchar(max){{{SINGLE-QUOTE}}}), 1, 1, {{{SINGLE-QUOTE}}}{{{SINGLE-QUOTE}}}) as {{{SINGLE-QUOTE}}}Value{{{SINGLE-QUOTE}}} " || " FROM CV3ClientDocument cd WITH (NOLOCK) " || " INNER JOIN cv3ClientVisit cv With (Nolock) ON cv.GUID = cd.ClientVisitGUID AND cv.chartguid = cd.ChartGUID And cv.clientguid = cd.ClientGUID And cd.iscanceled = 0 And cd.Active = 1 " || " AND cd.DocumentName = {{{SINGLE-QUOTE}}}ED Triage Note{{{SINGLE-QUOTE}}} " || " INNER JOIN SXACDObservationParameter OP WITH(NOLOCK) ON OP.ClientGUID = cd.ClientGUID AND OP.ChartGUID = cd.ChartGUID And op.OwnerGUID=cd.guid " || " AND OP.PatCareDocGUID = cd.PatCareDocGUID AND OP.RecordedDtm = cd.AuthoredDtm " || " INNER JOIN CV3ObsCatalogMasterItem omi WITH(NOLOCK) ON omi.GUID = op.ObsMasterItemGUID And omi.name in ({{{SINGLE-QUOTE}}}AS Orientation{{{SINGLE-QUOTE}}}) " || " LEFT JOIN SCMObsFSListValues oflv WITH(NOLOCK) ON oflv.ParentGUID = op.ObservationDocumentGUID AND oflv.Active = 1 " || " AND cd.ClientGUID = oflv.ClientGUID " || " Where cv.GUID = " || SQL(visitGuid) || " And cv.clientguid = " || clientGuid || " And cv.chartguid = " || chartGuid || " Group by cv.VisitIDCode, op.OwnerGUID, omi.name, oflv.GUID,oflv.value, oflv.ClientGUID , oflv.ParentGUID,cd.TouchedBy, cd.TouchedWhen " || " ORDER BY cd.TouchedWhen Desc " }; TextString := ""; If Exists Ord_vals1 Then FOR a IN 1 SEQTO COUNT OF Ord_vals1 DO TextString := TextString || Ord_vals1.Obs_name[a] || "= " || Ord_vals1.Obs_val[a] ; //( " || Ord_vals1.Obs_Doc[a] || " ) ,\n" ; EndDo; If Exists Ord_vals2 Then TextString := TextString || " " ; EndIf;//TextString := TextString || " ,\n" ; EndIf; Endif; If Exists Ord_vals2 Then FOR a IN 1 SEQTO COUNT OF Ord_vals2 DO TextString := TextString || "MRO" || "= " || Ord_vals2.Obs_val1[a] ; // || " ( " || Ord_vals2.Obs_Doc1[a] || " ) " ; Enddo; If Exists Ord_OrientVal Then TextString := TextString || " " ; EndIf; //TextString := TextString || " ,\n" ; EndIf; Endif; If Exists Ord_OrientVal Then FOR a IN 1 SEQTO COUNT OF Ord_OrientVal DO TextString := TextString || Ord_OrientVal.Obs_Conc_Val[a] ; // || " ( " || Ord_vals2.Obs_Doc1[a] || " ) " ; Enddo; Endif; MRO_Risk_Status.Value := TextString ; ;; priority: 50 ;; evoke: ;; logic: conclude true; ;; action: return this_communication, this_form; ;; Urgency: 50;; end: