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

HDI1002A.m

Go to the documentation of this file.
HDI1002A ;BPFO/JRP,ALB/RMO - PATCH 2 POST INSTALL;9/27/2005
 ;;1.0;HEALTH DATA & INFORMATICS;**2**;Feb 22, 2005
 ;
POST ;Main entry point for post-install routine
 ; Input: None
 ;        All variables set by Kernel for KIDS post-installs
 ;Output: None
 N HDIMSG
 S HDIMSG(1)=" "
 S HDIMSG(2)="~~~~~~~~~~~~~~~~~~~~"
 S HDIMSG(3)="Post-Installation (POST^HDI1002A) will now be run"
 S HDIMSG(4)=" "
 D MES^XPDUTL(.HDIMSG) K HDIMSG
 D SCAN
 S HDIMSG(1)=" "
 S HDIMSG(2)="Post-Installation ran to completion"
 S HDIMSG(3)="~~~~~~~~~~~~~~~~~~~~"
 S HDIMSG(4)=" "
 D MES^XPDUTL(.HDIMSG) K HDIMSG
 Q
 ;
SCAN ;Scan XTID VUID FOR SET OF CODES file for duplicate statuses
 ; Input: None
 ;Output: None
 ; Notes: Call assumes it is being run within the context of KIDS
 N COUNT,PTRXTID,XPDIDTOT,TEXT
 S TEXT(1)=" "
 S TEXT(2)="Scanning EFFECTIVE DATE/TIME multiple (subfile #8985.11)"
 S TEXT(3)="of the XTID VUID FOR SET OF CODES file (#8985.1) for"
 S TEXT(4)="consecutive storage of the same status"
 S TEXT(5)=" "
 D MES^XPDUTL(.TEXT)
 S XPDIDTOT=+$O(^XTID(8985.1,"A"),-1)
 ;Traverse file
 S PTRXTID=0
 F COUNT=1:1 S PTRXTID=+$O(^XTID(8985.1,PTRXTID)) Q:'PTRXTID  D
 .;Show progress through KIDS status bar
 .I '(COUNT#10) D UPDATE^XPDID(PTRXTID)
 .;Execute check
 .D CHECK(PTRXTID)
 D UPDATE^XPDID(XPDIDTOT)
 Q
 ;
CHECK(PTRXTID) ;Check entry for duplicate statuses
 ; Input: PTRXTID - Pointer to XTID VUID FOR SET OF CODES file
 ;Output: None
 ; Notes: Assumes validity of PTRXTID (internal call)
 S PTRXTID=+$G(PTRXTID) Q:'PTRXTID
 N MLTIEN,STAT,STDT,PRVSTAT,PRVSTDT,NODE
 S (PRVSTAT,PRVSTDT)=""
 ;Traverse date x-ref of multiple
 S STDT=0
 F  S STDT=+$O(^XTID(8985.1,PTRXTID,"TERMSTATUS","B",STDT)) Q:'STDT  D
 .S MLTIEN=0
 .F  S MLTIEN=+$O(^XTID(8985.1,PTRXTID,"TERMSTATUS","B",STDT,MLTIEN)) Q:'MLTIEN  D
 ..;Get node/status
 ..S NODE=$G(^XTID(8985.1,PTRXTID,"TERMSTATUS",MLTIEN,0))
 ..S STAT=$P(NODE,"^",2)
 ..;Bad node/status - delete and quit
 ..I (NODE="")!(NODE="^")!(STAT="") D  Q
 ...D DELETE(PTRXTID,MLTIEN)
 ..;First status entry - set as previous status and quit
 ..I PRVSTAT="" D SETPRV Q
 ..;Same as previous status - delete
 ..I STAT=PRVSTAT D DELETE(PTRXTID,MLTIEN) Q
 ..;Different status - keep and remember status change
 ..D SETPRV
 Q
 ;
DELETE(PTRXTID,MLTIEN) ;Delete entry from EFFECTIVE DATE/TIME multiple
 ; Input: PTRXTID - Pointer to XTID XTID VUID FOR SET OF CODES file
 ;        MLTIEN - Pointer to entry in EFFECTIVE DATE/TIME multiple
 ;Output: None
 ; Notes: Assumes validity of PTRXTID & MLTIEN (internal call)
 S PTRXTID=+$G(PTRXTID) Q:'PTRXTID
 S MLTIEN=+$G(MLTIEN) Q:'MLTIEN
 N DA,DIK
 S DA=MLTIEN
 S DA(1)=PTRXTID
 S DIK="^XTID(8985.1,"_DA(1)_",""TERMSTATUS"","
 D ^DIK
 Q
 ;
SETPRV ;Set previous values
 ; Input: STAT
 ;        STDT
 ;Output: PRVSTAT
 ;        PRVSTDT
 S PRVSTAT=$G(STAT)
 S PRVSTDT=$G(STDT)
 Q