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

INHVAM.m

Go to the documentation of this file.
  1. INHVAM(UIF,ERROR) ;JSH-DGH; 8 Jul 94 11:22;Transceiver for MDIS messages
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. ;
  1. ;INPUT:
  1. ; UIF - ien in Universal Interface file (#4001)
  1. ; ERROR - array to contain any error message(s)
  1. ;OUPTUT:
  1. ; ERROR - array of error message(s)
  1. ; function value - status of transmission
  1. ; [ 0 - successful ; 1 - failure ]
  1. ;
  1. ;First, set an entry in the MDIS MESSAGE EXCHANGE FILE
  1. N DIC,DLAYGO,%,LCT,INZ,LINE,DIK,DA
  1. S X=$$NOW^UTDT("S"),DIC="^INVAM(",DIC(0)="L",DLAYGO=4095 D ^DICN
  1. I Y<0 S ERROR(1)="Unable to create entry in MDIS MESSAGE FILE" Q 1
  1. S INZ=+Y L +^INVAM(INZ)
  1. S (%,LCT)=0 F D GETLINE^INHOU(UIF,.LCT,.LINE) Q:'$D(LINE) D
  1. . ;copy main line
  1. . S %=%+1,^INVAM(INZ,1,%,0)=LINE
  1. . ;Copy overflow nodes
  1. . F I=1:1 Q:'$D(LINE(I)) S ^INVAM(INZ,1,%+I,0)=LINE(I)
  1. . S %=%+I-1,^INVAM(INZ,1,%,0)=^INVAM(INZ,1,%,0)_$C(13)
  1. ;set message terminator
  1. S %=%+1,^INVAM(INZ,1,%,0)=$C(28)_$C(13)
  1. S ^INVAM(INZ,1,0)=U_U_%_U_%
  1. S $P(^INVAM(INZ,0),U,4)=0
  1. ;Cross-reference the entry
  1. S DA=INZ,DIK="^INVAM(" D IX1^DIK
  1. ;Unlock and quit
  1. L -^INVAM(INZ) Q 0
  1. ;
  1. AUTOP ;Autopurge of messages
  1. ;Default retention period is 14 DAYS
  1. S INDAYS=14 G ZTPUR
  1. Q
  1. ;
  1. PURGE ;Purge entries in ^INVAM
  1. N INDAYS,X,ZTIO,ZTRTN,ZTSAVE,ZTDESC,ZTSK
  1. W !,"Purge messages from the MDIS/CHCS MESSAGE EXCHANGE file (^INVAM)",!
  1. W ! D ^UTSRD("Number of days to keep transactions: ;;;;14;7,60")
  1. Q:X=""!(X[U) S INDAYS=+X
  1. S ZTIO="",ZTRTN="ZTPUR^INHVAM",ZTSAVE("INDAYS")="",ZTDESC="Purge MDIS messages"
  1. D ^%ZTLOAD W !,"Request",$S($G(ZTSK):" ",1:" NOT "),"queued"
  1. Q
  1. ;
  1. ZTPUR ;Taskman entry point
  1. Q:$G(INDAYS)<3
  1. S X1=DT,X2=-INDAYS D C^%DTC S INDAYS=+X
  1. S DIK="^INVAM(",INX=0,INCOUNT=0
  1. F S INX=$O(^INVAM(INX)) Q:'INX I +$G(^INVAM(INX,0))<INDAYS S DA=INX D ^DIK,HANG
  1. Q
  1. ;
  1. HANG ;Limit entries deleted to 11,000 per hour
  1. S INCOUNT=INCOUNT+1 Q:INCOUNT<3 S INCOUNT=0 H 1
  1. Q
  1. ;