maintenance: title: DOC_FUNC_NEWBORN_ASSESSSMENT;; mlmname: DOC_FUNC_NEWBORN_ASSESSSMENT;; arden: version 5.0;; version: 2.00;; institution: St.Clair Hospital;; author: Peggy Karish;; specialist: Don Warnick ;; date: 2014-07-30;; validation: testing;; library: purpose: ;; explanation: This MLM manages will popultate fields on the Newborn Assessment Structured Note Change history 07.30.2014 DW CSR# 32407 - Created 08.03.2015 GOS CSR#32427 - added code for Vital Sign in Newborn Assessment flowsheet 03.16.2016 DW HD#1681011 - The newborn assessment MLM is not retrieving the Transcutaneous Bilirubin Level into the Newborn Assessment TCB Screen field ;; keywords: ;; knowledge: type: data-driven;; data: 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; // DOCUMENT OPENING SECTION IF thisdocumentCommunication.EventType = "DocumentOpening" then // GATHER DATA (NewbornData) := read { " CREATE TABLE #tmp_aaa ( ID int IDENTITY(1, 1), touchedwhen datetime, data varchar(200), latestdate datetime, field int) " || " SET CONCAT_NULL_YIELDS_NULL off " || " INSERT INTO #tmp_aaa (field,touchedwhen,data) " || " select " || " case when ocmi.name in " || " ( " || " {{{SINGLE-QUOTE}}}as deliv vag type ob{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCHCK deliv csect performed{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}INV deliv vag assist type ob{{{SINGLE-QUOTE}}} " || " ) " || " then 1 " || " when ocmi.name in " || " ( " || " {{{SINGLE-QUOTE}}}PRO blood type routine panel{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}PRO group b strep ob DT{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRO group b strep ob{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}PRO group a status{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRO group b status{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}PRO hbsag routine panel{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRO rubella routine panel{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRO vdrl routine panel{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}Pro pos tmt routine panel{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRO vdrl post treat routine panel{{{SINGLE-QUOTE}}} " || " ) " || " then 2 " || " when ocmi.name in " || " ( " || " {{{SINGLE-QUOTE}}}as deliv baby a time ob DT{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}as deliv baby b time ob DT{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a sex ob{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b sex ob{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a wt gm ob NU{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b wt gm ob NU{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a wt lb ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b wt lb ob CAL{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a wt oz ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b wt oz ob CAL{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a length inch ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b length inch ob CAL{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a length cm ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b length cm ob CAL{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a head circum ob NU{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b head circum ob NU{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a gestational age ob NU{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b gestational age ob NU{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS SC deliv apgar a1 score ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS SC deliv apgar b1 score ob CAL{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS SC deliv apgar a5 score ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS SC deliv apgar b5 score ob CAL{{{SINGLE-QUOTE}}} " || " ) " || " then 3 " || " when ocmi.name in " || " ( " || " {{{SINGLE-QUOTE}}}SCH_FBC_Init_Pulse Ox_Rt Hand{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_Init_Pulse Ox_Foot{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_Second_Pulse Ox_Rt Hand{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}SCH_FBC_Second_Pulse Ox_Foot{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_CHDS_Init_Pass Fail{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_CHDS_Second_Pass Fail{{{SINGLE-QUOTE}}} " || " ) " || " then 4 " || " when ocmi.name in " || " ( " || " {{{SINGLE-QUOTE}}}SCH_FBC_Bilimeter_gestational age{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_Bilimeter_Hourly Age{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_Bilimeter_Screen Date Time{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_Bilimeter_TCB Level{{{SINGLE-QUOTE}}}" || " ) " || " then 5 " || " when ocmi.name in " || " ( " || " {{{SINGLE-QUOTE}}}PRO screen hear result infant{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCHCK rescreen hear result infant{{{SINGLE-QUOTE}}}" || " ) " || " then 6 " || " when ocmi.name in " || " ( " || " {{{SINGLE-QUOTE}}}PRO feeding plan infant ob{{{SINGLE-QUOTE}}} " || " ) " || " then 7 " || " end , " || " cd.entered , CHAR(10) + CHAR(13) + ocmi.LeftJustifiedLabel + {{{SINGLE-QUOTE}}} : {{{SINGLE-QUOTE}}} + o.ValueText + {{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}} + fsl.value " || " 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 " || " left join SCMObsFSListValues fsl(nolock) ON (fsl.ParentGUID = od.ObservationDocumentGUID AND fsl.ClientGUID = " || ClientGuid || " ) " || " where cd.clientguid = " || ClientGuid || " and cd.ChartGUID = " || ChartGuid || " and cd.ClientVisitGUID= " || VisitGuid || " " || " and cd.iscanceled = 0 " || " and cd.documentname in ({{{SINGLE-QUOTE}}}Newborn Patient Profile{{{SINGLE-QUOTE}}} , {{{SINGLE-QUOTE}}}B1. Newborn Vital Signs{{{SINGLE-QUOTE}}}, {{{SINGLE-QUOTE}}}Newborn Hearing Screen{{{SINGLE-QUOTE}}}) " || " and (o.ValueText + fsl.value) is not null " || " and ocmi.name in " || " ( " || " {{{SINGLE-QUOTE}}}as deliv vag type ob{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCHCK deliv csect performed{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}INV deliv vag assist type ob{{{SINGLE-QUOTE}}} " || " , " || " {{{SINGLE-QUOTE}}}PRO blood type routine panel{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}PRO group b strep ob DT{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRO group b strep ob{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRO group a status{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRO group b status{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}PRO hbsag routine panel{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRO rubella routine panel{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRO vdrl routine panel{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}Pro pos tmt routine panel{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}PRO vdrl post treat routine panel{{{SINGLE-QUOTE}}} " || " , " || " {{{SINGLE-QUOTE}}}as deliv baby a time ob DT{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}as deliv baby b time ob DT{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a sex ob{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b sex ob{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a wt gm ob NU{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b wt gm ob NU{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a wt lb ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b wt lb ob CAL{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a wt oz ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b wt oz ob CAL{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a length inch ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b length inch ob CAL{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a length cm ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b length cm ob CAL{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a head circum ob NU{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b head circum ob NU{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS deliv baby a gestational age ob NU{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS deliv baby b gestational age ob NU{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS SC deliv apgar a1 score ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS SC deliv apgar b1 score ob CAL{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}AS SC deliv apgar a5 score ob CAL{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}AS SC deliv apgar b5 score ob CAL{{{SINGLE-QUOTE}}} " || " , " || " {{{SINGLE-QUOTE}}}SCH_FBC_Init_Pulse Ox_Rt Hand{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_Init_Pulse Ox_Foot{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_Second_Pulse Ox_Rt Hand{{{SINGLE-QUOTE}}}, " || " {{{SINGLE-QUOTE}}}SCH_FBC_Second_Pulse Ox_Foot{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_CHDS_Init_Pass Fail{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_CHDS_Second_Pass Fail{{{SINGLE-QUOTE}}} " || " , " || " {{{SINGLE-QUOTE}}}SCH_FBC_Bilimeter_gestational age{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_Bilimeter_Hourly Age{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_Bilimeter_Screen Date Time{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCH_FBC_Bilimeter_TCB Level{{{SINGLE-QUOTE}}} " || " , " || " {{{SINGLE-QUOTE}}}PRO screen hear result infant{{{SINGLE-QUOTE}}},{{{SINGLE-QUOTE}}}SCHCK rescreen hear result infant{{{SINGLE-QUOTE}}} " || " , " || " {{{SINGLE-QUOTE}}}PRO feeding plan infant ob{{{SINGLE-QUOTE}}} " || " ) " || " order by cd.touchedwhen desc " || " select cast (field as varchar) + {{{SINGLE-QUOTE}}}...{{{SINGLE-QUOTE}}} + data from #tmp_aaa order by field " || " drop table #tmp_aaa " }; if exists NewbornData then NewbornDataText := " " || NewbornData; str_parse := mlm {{{SINGLE-QUOTE}}}UTIL_STRING_PARSE{{{SINGLE-QUOTE}}}; calc_map_list := call str_parse with NewbornDataText,","; TextFormatted1 := "."; TextFormatted2 := "."; TextFormatted3 := "."; TextFormatted4 := "."; TextFormatted5 := "."; TextFormatted6 := "."; TextFormatted7 := "."; for i in 1 seqto count calc_map_list do textbox := Substring 1 characters starting at 2 from calc_map_list[i] ; if textbox = "1" then TextFormatted1 := TextFormatted1 || (Substring 100 characters starting at 6 from calc_map_list[i]) ; elseif textbox = "2" then TextFormatted2 := TextFormatted2 || (Substring 100 characters starting at 6 from calc_map_list[i]) ; elseif textbox = "3" then TextFormatted3 := TextFormatted3 || (Substring 100 characters starting at 6 from calc_map_list[i]) ; elseif textbox = "4" then TextFormatted4 := TextFormatted4 || (Substring 100 characters starting at 6 from calc_map_list[i]) ; elseif textbox = "5" then TextFormatted5 := TextFormatted5 || (Substring 100 characters starting at 6 from calc_map_list[i]) ; elseif textbox = "6" then TextFormatted6 := TextFormatted6 || (Substring 100 characters starting at 6 from calc_map_list[i]) ; elseif textbox = "7" then TextFormatted7 := TextFormatted7 || (Substring 100 characters starting at 6 from calc_map_list[i]) ; endif; enddo; // POPULATE THE FIELDS WITH THE DATA // Populate the Delivery Information field this_parametername := first of (thisParameters where thisParameters.Name = "SCH_NEWBORN_MLM Mom Info"); 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 := TextFormatted1; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); // Populate the Prenatal Lab Information field this_parametername := first of (thisParameters where thisParameters.Name = "SCH_NEWBORN_MLM Prenatal Lab Info"); 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 := TextFormatted2; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); // Populate the Birth Information field this_parametername := first of (thisParameters where thisParameters.Name = "SCH_NEWBORN_MLM Baby Info"); 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 := TextFormatted3; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); // Populate the Newborn Screening Information field this_parametername := first of (thisParameters where thisParameters.Name = "SCH_NEWBORN_MLM Baby Screen Info"); 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 := TextFormatted4; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); // Populate the Newborn TCB Screening Information field this_parametername := first of (thisParameters where thisParameters.Name = "SCH_NEWBORN_MLM Baby Screen TcB"); 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 := TextFormatted5; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); // Populate the Newborn Hearing Screening Information field this_parametername := first of (thisParameters where thisParameters.Name = "SCH_NEWBORN_MLM Baby Screen Hearing"); 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 := TextFormatted6; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); // Populate the Newborn Feeding Plan Information field this_parametername := first of (thisParameters where thisParameters.Name = "SCH_NEWBORN_MLM Baby Feeding"); 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 := TextFormatted7; thisStructuredNoteDoc.ChartedObservationsList := (thisstructuredNoteDoc.ChartedObservationsList, this_currentObj); endif; // Exists NewbornData //Added below section show data in Vital sign I & O (Vikas) CSR : 33427 - Vital Sign for Newborn Assessment if thisDocumentCommunication.DocumentName = "Newborn Assessment and Discharge Summary" then DocVitalsHL2 := MLM {{{SINGLE-QUOTE}}}DOC_FUNC_NEWBORN_VS_24hrs{{{SINGLE-QUOTE}}}; thisDocumentCommunication := CALL DocVitalsHL2 WITH thisDocumentCommunication; endif; endif; // EventType = "DocumentOpening" ;; evoke: ;; logic: conclude true; ;; action: return thisDocumentCommunication; ;; Urgency: 50;; end: