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

HMPUTIL2.m

Go to the documentation of this file.
  1. HMPUTIL2 ; Agilex/hrubovcak -- HMP utilities routine ;Jun 10, 2015@15:13:03
  1. ;;2.0;ENTERPRISE HEALTH MANAGEMENT PLATFORM;**2**;Sep 01, 2011;Build 28
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. ADHOC(HMPDMN,HMPFCNT,DFN,UID,STMPTM,DLTFLG) ; Add syncStart metastamp and syncStatus to unsolicited updates
  1. ; HMPDMN,HMPFCNT,DFN,UID,STMPTM - all required
  1. ; DLTFLG - boolean 1 to delete, zero otherwise (optional)
  1. ; requires HMPFSTRM and ARGS in symbol table
  1. Q:($G(HMPDMN)="")!($G(DFN)="")!($G(UID)="")!($G(STMPTM)="")
  1. ; set error trap
  1. N $ES,$ET,ERRPAT
  1. S $EC="",$ET="D ERRHDLR^HMPDERRH",ERRPAT=DFN
  1. ;
  1. S DLTFLG=+$G(DLTFLG) ; optional parameter
  1. ;Build SyncStart
  1. N H,HMPDAT,HMPID,HMPJSN,HMPSUB,HMPTOT,HMPVAR,HMPX,HMPZ,JSNERR,STS,STSJSON,X,Y
  1. S HMPSUB=$O(^TMP("HMP",$J,0)) Q:'HMPSUB
  1. S HMPID=$$SYS^HMPUTILS
  1. S HMPZ=0,HMPFCNT=$G(HMPFCNT)+1
  1. D ; start of JSON, based on DFN
  1. .I DFN'="OPD" S HMPJSN="{""collection"":"""_"syncStart"_$C(34)_$$PIDS^HMPDJFS(DFN)_"," Q
  1. .;operational data synch
  1. .S HMPJSN="{""collection"":"""_"OPDsyncStart"_$C(34)_","""_"systemId"":"""_$P(HMPID,";")_$C(34)_","
  1. .Q:'DLTFLG ; deletion logic follows
  1. .S H=$$FMTH^XLFDT($P($G(HMPFSTRM),"~",3)) ; days in $H format
  1. .S X=$$HTFM^XLFDT($P(H,",")_","_(+$G(ARGS("hmp-fst")))) ; add $H seconds or zero, get FileMan date
  1. .S HMPVAR("JSON DEL DATE/TIME")=$$JSONDT^HMPUTILS(X) ; delete date/time into JSON format
  1. .S X=$P($G(UID),":",4)_";"_$P(UID,":",5) ; UID pieces needed below
  1. .S HMPVAR("REMOVED JSON")="{""pid"":"""_X_""",""removed"":""true"",""stampTime"":"_HMPVAR("JSON DEL DATE/TIME")_",""uid"":"""_UID_"""}"
  1. ;
  1. S:HMPFCNT>1 HMPJSN="},"_HMPJSN
  1. S HMPJSN=HMPJSN_"""metaStamp"":"_"{"
  1. I DFN'="OPD" S HMPJSN=HMPJSN_$E($$PIDS^HMPDJFS(DFN),2,$L($$PIDS^HMPDJFS(DFN)))_","
  1. S HMPJSN=HMPJSN_"""stampTime"":"""_STMPTM_$C(34)_",""sourceMetaStamp"":"_"{"
  1. S HMPJSN=HMPJSN_$C(34)_$P(HMPID,";")_$C(34)_":{"
  1. I DFN'="OPD" S HMPJSN=HMPJSN_$E($$PIDS^HMPDJFS(DFN),2,$L($$PIDS^HMPDJFS(DFN)))_","
  1. S HMPJSN=HMPJSN_"""stampTime"":"""_STMPTM_$C(34)_","
  1. S HMPJSN=HMPJSN_"""domainMetaStamp"""_":"_"{"
  1. ; transform the domain name for quick orders to match the uid
  1. S HMPVAR("DOMAIN")=HMPDMN S:HMPVAR("DOMAIN")="quick" HMPVAR("DOMAIN")="qo"
  1. S HMPTOT=1
  1. S HMPJSN=HMPJSN_$C(34)_HMPVAR("DOMAIN")_$C(34)_":{"
  1. S HMPJSN=HMPJSN_"""domain"":"""_HMPVAR("DOMAIN")_$C(34)_","
  1. S HMPJSN=HMPJSN_"""stampTime"":"""_STMPTM_$C(34)_","
  1. I DFN="OPD" S HMPJSN=HMPJSN_"""itemMetaStamp"""_":"_"{"
  1. E S HMPJSN=HMPJSN_"""eventMetaStamp"""_":"_"{"
  1. ;
  1. I $L(HMPJSN)>1000 S HMPZ=HMPZ+1,^TMP("HMPF",$J,HMPFCNT,.3,HMPZ)=HMPJSN,HMPJSN=""
  1. S HMPVAR("DATETIME")=$P(UID,":",4,99)
  1. ;I DLTFLG S HMPVAR("DATETIME")=$P(UID,":",4,99))
  1. S HMPJSN=HMPJSN_$C(34)_UID_":"_HMPVAR("DOMAIN")_":"_HMPVAR("DATETIME")_$C(34)_":{"
  1. ; determine date/time to use
  1. S Y=STMPTM S:$G(HMPVAR("JSON DEL DATE/TIME")) Y=HMPVAR("JSON DEL DATE/TIME")
  1. S HMPJSN=HMPJSN_"""stampTime"":"""_Y_$C(34)_"}}}," ; put date/time into JSON array
  1. ;
  1. I $L(HMPJSN)>1000 S HMPZ=HMPZ+1,^TMP("HMPF",$J,HMPFCNT,.3,HMPZ)=HMPJSN,HMPJSN=""
  1. S HMPZ=HMPZ+1
  1. S HMPJSN=$E(HMPJSN,1,$L(HMPJSN)-1)_"}}}}},"
  1. ;Save syncStart
  1. S ^TMP("HMPF",$J,HMPFCNT,.3,HMPZ)=HMPJSN
  1. ;Merge in data section from FRESHITM^HMPDJFSG
  1. S HMPSUB=""
  1. F S HMPSUB=$O(^TMP("HMP",$J,HMPSUB)) Q:'HMPSUB D
  1. .S HMPFCNT=HMPFCNT+1
  1. .I DFN'="OPD" S ^TMP("HMPF",$J,HMPFCNT,.3)="{""collection"":"""_HMPVAR("DOMAIN")_$C(34)_$$PIDS^HMPDJFS(DFN)_",""seq"":1,""total"":1,""object"":"
  1. .I DFN="OPD",DLTFLG S ^TMP("HMPF",$J,HMPFCNT,.3)="{""collection"":"""_HMPVAR("DOMAIN")_""",""seq"":1,""total"":1,""object"":"_HMPVAR("REMOVED JSON") ;;US5647
  1. .I DFN="OPD",'DLTFLG D ;US5859
  1. ..S ^TMP("HMPF",$J,HMPFCNT,.3)="{""collection"":"""_HMPVAR("DOMAIN")_""",""seq"":1,""total"":1,""object"":"
  1. ..S HMPX="""stampTime"":"_$C(34)_STMPTM_$C(34)_","
  1. ..S HMPDAT=$G(^TMP("HMP",$J,HMPSUB,1))
  1. ..S ^TMP("HMP",$J,HMPSUB,1)="{"_HMPX_$P(HMPDAT,"{",2,999) ; add stamp time to start of data
  1. .; merge into "HMPF" subscript
  1. .M ^TMP("HMPF",$J,HMPFCNT,1)=^TMP("HMP",$J,HMPSUB,1)
  1. ;
  1. ; Build and add syncStatus
  1. S STS("uid")="urn:va:syncStatus:"_HMPVAR("DATETIME"),STS("initialized")="true"
  1. S STS("domainTotals",HMPVAR("DOMAIN"))=1
  1. D ENCODE^HMPJSON("STS","STSJSON","JSNERR")
  1. I $D(JSNERR) S $EC=",JSON encode error in routine "_$T(+0)_"," Q
  1. S HMPFCNT=HMPFCNT+1
  1. M ^TMP("HMPF",$J,HMPFCNT)=STSJSON
  1. S ^TMP("HMPF",$J,HMPFCNT,.3)=$$WRAP("syncStatus",$$PIDS^HMPDJFS(DFN),1,1)
  1. ;
  1. Q
  1. ;
  1. WRAP(DOMAIN,PIDS,OFFSET,DOMSIZE) ; function, JSON wrapper
  1. N X S X=""
  1. S:$G(DOMAIN)'="syncStart" X="},{""collection"":"""_$P(DOMAIN,"#")_$C(34)_PIDS
  1. S X=X_","
  1. S:$G(OFFSET)>-1 X=X_"""seq"":"_OFFSET_","
  1. S:$G(DOMSIZE)>-1 X=X_"""total"":"_DOMSIZE_","
  1. S:$G(OFFSET)>-1 X=X_"""object"":"
  1. Q X
  1. ;