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

HMPEFX.m

Go to the documentation of this file.
  1. HMPEFX ;SLC/MKB,ASMR/RRB - Reference data update;7/19/12 2:26pm
  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. ; External References DBIA#
  1. ; ------------------- -----
  1. ; ^DPT 10035
  1. ; MPIF001 2701
  1. ; XLFSTR 10104
  1. Q
  1. ;
  1. EN(LAST,MAX) ; -- get data from ^XTMP("HMPEF-<date>",n)
  1. ;[MAX not used yet]
  1. N X,Y,HMPTOTL,DOMCNT,TYPE,NAME,RTN,HMPID
  1. S LAST=$G(LAST) D GETLIST(LAST)
  1. G ENQ:$G(^TMP("HMPX",$J,0))<1 ;no data
  1. ;
  1. S (HMPTOTL,DOMCNT)=0
  1. S TYPE="" F S TYPE=$O(^TMP("HMPX",$J,TYPE)) Q:TYPE="" D
  1. . S NAME=$$LOW^XLFSTR(TYPE)
  1. . S RTN=$$TAG^HMPEF(NAME)_"^HMPEF" Q:'$L($T(@RTN))
  1. . S DOMCNT=DOMCNT+1
  1. . ;
  1. . N HMP,HMPI
  1. . S HMP=$NA(^TMP("HMP",$J,DOMCNT)),HMPI=0,HMPID=""
  1. . F S HMPID=$O(^TMP("HMPX",$J,TYPE,HMPID)) Q:HMPID="" D
  1. .. D @RTN S HMPTOTL=HMPTOTL+1
  1. . ;
  1. . I 'HMPI S DOMCNT=DOMCNT-1 Q ;no data, or error
  1. . S:DOMCNT>1 @HMP@(.3)=","
  1. . S @HMP@(.5)="{""domainName"":"""_NAME_""",""total"":"_HMPI_",""items"":["
  1. . S HMPI=HMPI+1,@HMP@(HMPI)="]}"
  1. ;
  1. ENQ ;
  1. S Y=$G(^TMP("HMPX",$J,0)) K ^TMP("HMPX",$J)
  1. I '$G(DOMCNT) S @HMP@(.5)="{""apiVersion"":""1.01"",""data"":{""lastUpdate"":"""_LAST_""",""totalItems"":0,""items"":[]}}" Q
  1. ;
  1. S @HMP@(.5)="{""apiVersion"":""1.01"",""data"":{""lastUpdate"":"""_Y_""",""totalItems"":"_DOMCNT_",""items"":["
  1. S HMPI=DOMCNT I $D(^TMP($J,"HMP ERROR")) D
  1. . N ERROR,CNT
  1. . D BUILDERR^HMPEF(.ERROR)
  1. . S HMPI=HMPI+1,@HMP@(HMPI)=",",CNT=0
  1. . F S CNT=$O(ERROR(CNT)) Q:CNT'>0 S HMPI=HMPI+1,@HMP@(HMPI)=ERROR(CNT)
  1. . K ^TMP($J,"HMP ERROR")
  1. S HMPI=HMPI+1,@HMP@(HMPI)="]}}"
  1. Q
  1. ;
  1. GETLIST(LAST) ; -- build list of updates for client
  1. ; Returns ^TMP("HMPX",$J,0) = last DATE:SEQ included
  1. ; ^TMP("HMPX",$J,TYPE,ID)=ACT
  1. N DATE,SEQ,BEG,END,IDX,X0,DFN,TYPE,ID,ACT
  1. K ^TMP("HMPX",$J)
  1. S DATE=+LAST,SEQ=+$P(LAST,":",2)
  1. ; generate list ID, and end point
  1. S BEG=$NA(^XTMP("HMPEF-"_DATE,SEQ)) ;init loop where left off
  1. ; END=$Q(^XTMP("HMPEF-"_(DT+1),9999999),-1) ;last node
  1. S END=+$O(^XTMP("HMPEF-"_DT,"A"),-1) ;last node
  1. S ^TMP("HMPX",$J,0)=DT_":"_END ;date:seq
  1. ;
  1. S IDX=BEG F S IDX=$Q(@IDX) Q:$$DONE D
  1. . S X0=@IDX,TYPE=$P(X0,U),ID=$P(X0,U,2),ACT=$P(X0,U,3)
  1. . I TYPE=""!(ID="") Q ;error
  1. . S ^TMP("HMPX",$J,TYPE,ID)=ACT
  1. Q
  1. ;
  1. DONE() ; -- Return 1 or 0, if loop has finished
  1. I IDX'?1"^XTMP(""HMPEF-"7N.E Q 1 ;end of ^XTMP
  1. N D,N S D=+$P(IDX,"-",2),N=+$P(IDX,",",2)
  1. ; check HMP-DATE subscript
  1. I D<DT Q 0 ;prior day: keep going
  1. I D>DT Q 1 ;next day: stop loop
  1. ; D=DT: check sequence# subscript
  1. I N>END Q 1
  1. Q 0