Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: HMPEQ

HMPEQ.m

Go to the documentation of this file.
  1. HMPEQ ;SLC/MJK,ASMR/RRB - HMP Freshness Utilities;02-JUL-2014
  1. ;;2.0;ENTERPRISE HEALTH MANAGEMENT PLATFORM;**;Sep 01, 2011;Build 63
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. Q
  1. ;
  1. EN ; -- go to event queue viewer (convenience tag)
  1. D EN^HMPEQLM
  1. Q
  1. ;
  1. EVTS(DATA,PARAMS) ; -- return events for server's last stream in inverse sequence # order
  1. ; input: PARAMS("server") := ien of 800000
  1. ; "filter") := event state filter [ P:processed | W:waiting ]
  1. ; "domain") := domain of interest or "ALL'
  1. ; "dfn") := dfn of desired patient
  1. ; "max") := max number events to return
  1. ;
  1. ; output: @DATA@("stream") := name of stream for server
  1. ; "count") := number of events returned
  1. ; "events",<n>,"sequence") := sequence # / node in stream for event
  1. ; "events",<n>,"node") := event node for sequence
  1. ;
  1. N STREAM,DOMAIN,FILTER,PAT,SEQ,MAX,CNT,X
  1. S STREAM=$$LSTREAM^HMPDJFSM(+$G(PARAMS("server")))
  1. S DOMAIN=$G(PARAMS("domain"))
  1. S FILTER=$G(PARAMS("filter"))
  1. S PAT=+$G(PARAMS("dfn"))
  1. S MAX=$G(PARAMS("max"),10)
  1. S CNT=0
  1. S SEQ=" "
  1. F S SEQ=$O(^XTMP(STREAM,SEQ),-1) Q:'SEQ S X=^(SEQ) D Q:CNT=MAX
  1. . I DOMAIN'="ALL",DOMAIN'=$P(X,"^",2) Q
  1. . ; quit if waiting and want processed
  1. . I FILTER["P",'$P(X,"^",6) Q
  1. . ; quit if processed and want waiting
  1. . I FILTER["W",'$P(X,"^",6) Q
  1. . ; quit if not patient desired
  1. . I PAT,PAT'=+X Q
  1. . S CNT=CNT+1
  1. . S @DATA@("events",CNT,"sequence")=SEQ
  1. . S @DATA@("events",CNT,"node")=X
  1. ;
  1. S @DATA@("stream")=STREAM
  1. S @DATA@("count")=CNT
  1. Q
  1. ;
  1. GETEVTS(RET,PARAMS) ; -- get events for server's last stream in inverse sequence # order
  1. ; RPC: HMPM EVT QUE GET EVTS (future)
  1. N HMPDATA,HMPERR
  1. S HMPDATA=$NA(^TMP("HMPM EVT QUE GET EVTS",$J))
  1. K @HMPDATA
  1. D EVTS(HMPDATA,.PARAMS)
  1. D ENCODE^HMPJSON(HMPDATA,RET,"HMPERR")
  1. K @HMPDATA
  1. Q
  1. ;
  1. SRVS(DATA) ; -- loop thru & sort by server names and return summary freshness queue info for each
  1. ; output: @DATA@("servers",<n>,"name") := server name
  1. ; "server",<n>,"lastUpdate") := date server last updated
  1. ; "server",<n>,"repeated") := how many times updated
  1. ; "server",<n>,"stream") := stream name
  1. ; "server",<n>,"queueEnd") := current end of queue
  1. ; "server",<n>,"extracts",<n>,"domain") := domain name
  1. ; "server",<n>,"extracts",<n>,"tasks") := tasks waiting to be processed
  1. ; "server",<n>,"extracts",<n>,"waiting") := how many seconds waiting
  1. ; "server",<n>,"extracts",<n>,"lastCount") := last count retrieved or <finished>
  1. ;
  1. N HMPSRVNM,HMPCNT,IEN
  1. S HMPSRVNM=""
  1. S HMPCNT=0
  1. F S HMPSRVNM=$O(^HMP(800000,"B",HMPSRVNM)) Q:HMPSRVNM="" S IEN=$O(^(HMPSRVNM,"")) D
  1. . S HMPCNT=HMPCNT+1
  1. . D SRV($NA(@DATA@("servers",HMPCNT)),IEN)
  1. Q
  1. ;
  1. SRV(DATA,SRV) ; -- process one server
  1. N X0,ROOT,BATCH,STREAM,SRVNM,TASK,TASKS,ENDQ,EXTRACT,CNT
  1. S X0=$G(^HMP(800000,SRV,0))
  1. Q:X0=""
  1. S SRVNM=$P(X0,"^")
  1. S @DATA@("name")=$P(X0,"^")
  1. S @DATA@("lastUpdate")=$P(X0,"^",2)
  1. S @DATA@("repeated")=$P(X0,"^",4)
  1. S STREAM=$$LSTREAM^HMPDJFSM(SRV)
  1. S @DATA@("stream")=STREAM
  1. S @DATA@("queueEnd")=$S($D(^XTMP(STREAM)):$P(STREAM,"~",3)_"-"_$G(^XTMP(STREAM,"last")),1:"")
  1. ;
  1. ; -- loop thru extracts for this server
  1. S ROOT="HMPFX~"_SRVNM_"~"
  1. S BATCH=ROOT
  1. S CNT=0
  1. F S BATCH=$O(^XTMP(BATCH)) Q:$E(BATCH,1,$L(ROOT))'=ROOT D
  1. . S CNT=CNT+1
  1. . S @DATA@("extracts",CNT,"domain")=$P(BATCH,"~",3)
  1. . S TASK=0,TASKS=""
  1. . F S TASK=$O(^XTMP(BATCH,0,"task",TASK)) Q:'TASK S TASKS=TASKS_$S($L(TASKS):",",1:"")_TASK
  1. . S @DATA@("extracts",CNT,"tasks")=TASKS
  1. . I '$D(^XTMP(BATCH,0,"wait")) S @DATA@("extracts",CNT,"waiting")=$$WAIT^HMPDJFSM(BATCH) Q
  1. . S @DATA@("extracts",CNT,"lastCount")=$$LOBJ^HMPDJFSM(BATCH,TASK)
  1. Q
  1. ;
  1. GETSRVS(RET) ; -- get summary freshness event queue info for all servers
  1. ; RPC: HMPM EVT QUE GET SVRS (future)
  1. N HMPDATA,HMPERR
  1. S HMPDATA=$NA(^TMP("HMPM EVT QUE GET SVRS",$J))
  1. K @HMPDATA
  1. D SRVS(HMPDATA)
  1. D ENCODE^HMPJSON(HMPDATA,RET,"HMPERR")
  1. K @HMPDATA
  1. Q
  1. ;
  1. GLBS(DATA) ; -- return summary info on HMP related temp globals
  1. ; output: @HMPDATA@( "xtmpNodes",<n>,"server") := server name
  1. ; "xtmpNodes",<n>,"rootNode") := ^XTMP root node for server/stream
  1. ; "xtmpNodes",<n>,"lastNode") := last sequence in root structure
  1. ;
  1. ; "tmpJobNodes",<n>,"rootNode") := root ^TMP("HMP*",$J) node
  1. ; "tmpJobNodes",<n>,"lastNode") := last sequence in root structure
  1. ;
  1. ; "jobTmpNodes",<n>,"rootNode") := root ^TMP($J,"HMP*") node
  1. ; "jobTmpNodes",<n>,"lastNode") := last sequence in root structure
  1. ;
  1. N HMPX,CNT,J,Y,RNODE
  1. S HMPX="VPQ~"
  1. S CNT=0
  1. F S HMPX=$O(^XTMP(HMPX)) Q:$E(HMPX,1,3)'="HMP" D
  1. . S CNT=CNT+1
  1. . S @DATA@("xtmpNodes",CNT,"server")=$P(HMPX,"~",2)
  1. . S @DATA@("xtmpNodes",CNT,"rootNode")="^XTMP("""_HMPX_""")"
  1. . S Y=$O(^XTMP(HMPX," "),-1)
  1. . S:'$L(Y) Y=$O(^XTMP(HMPX,""),-1)
  1. . S @DATA@("xtmpNodes",CNT,"lastNode")=Y
  1. ;
  1. S HMPX="VPQ~"
  1. S CNT=0
  1. F S HMPX=$O(^TMP(HMPX)) Q:$E(HMPX,1,3)'="HMP" D
  1. . S J=0
  1. . F S J=$O(^TMP(HMPX,J)) Q:'J D
  1. . . ; -- don't include this report's ^TMP
  1. . . S RNODE="^TMP("""_HMPX_""","_J_")"
  1. . . I RNODE=DATA,J=$J Q
  1. . . S CNT=CNT+1
  1. . . S @DATA@("tmpJobNodes",CNT,"rootNode")=RNODE
  1. . . S Y=$O(^TMP(HMPX,J," "),-1)
  1. . . S:'$L(Y) Y=$O(^TMP(HMPX,J,""),-1)
  1. . . S @DATA@("tmpJobNodes",CNT,"lastNode")=Y
  1. ;
  1. S (J,CNT)=0
  1. F S J=$O(^TMP(J)) Q:'J D
  1. . S HMPX="VPQ~"
  1. . F S HMPX=$O(^TMP(J,HMPX)) Q:$E(HMPX,1,3)'="HMP" D
  1. . . S CNT=CNT+1
  1. . . S @DATA@("jobTmpNodes",CNT,"rootNode")="^TMP("_J_","""_HMPX_""")"
  1. . . S Y=$O(^TMP(J,HMPX," "),-1)
  1. . . S:'$L(Y) Y=$O(^TMP(J,HMPX,""),-1)
  1. . . S @DATA@("jobTmpNodes",CNT,"lastNode")=Y
  1. ;
  1. Q
  1. ;
  1. GETGLBS(RET) ; -- get summary info on HMP related temp globals
  1. ; RPC: HMPM EVT QUE GET GLBS (future)
  1. N HMPDATA,HMPERR
  1. S HMPDATA=$NA(^TMP("HMPM EVT QUE GET GLBS",$J))
  1. K @HMPDATA
  1. D GLBS(HMPDATA)
  1. D ENCODE^HMPJSON(HMPDATA,RET,"HMPERR")
  1. K @HMPDATA
  1. Q
  1. ;
  1. NOROWS(MSG) ; -- add standard text lines to indicate no rows to display
  1. S VALMCNT=1
  1. S @VALMAR@(VALMCNT,0)=""
  1. S VALMCNT=2
  1. S @VALMAR@(VALMCNT,0)=" o "_MSG
  1. D CNTRL^VALM10(VALMCNT,2,78,IOINHI,IOINORM)
  1. Q
  1. ;