GMTSXPD6 ;ISP/RFR - Health Summary Dist (Type & Objects) ;Jun 22, 2023@18:36
;;2.7;Health Summary;**144**;Oct 20, 1995;Build 17
Q
INSDATA(GMTSTAG,GMTSRTN) ; Install/Update Health Summary File Entry
; PARAMETERS: GMTSTAG - TAG CONTAINING TEXT THAT DEFINES FILE ENTRY
; GMTSRTN - ROUTINE THAT CONTAINS GMTSTAG
N GMTSPARENT,GMTSLINE,GMTSTXT,GMTSFILE,GMTSFIELD,GMTSVALUE,GMTSERROR
N GMTSDATA,GMTSIEN,GMTSIENS,GMTSSIENS,GMTSFDA,GMTSMESSAGE,GMTSROOT
N GMTSLOC,GMTSTYPE,GMTSWPLINE,GMTSWPDATA,GMTSWP,GMTSADDL,GMTSNAME,GMTSPFILE
S GMTSPARENT(142.01)=142,GMTSPARENT(142.2)=142,GMTSPARENT(142.14)=142.01
S GMTSADDL(142,99)="S GMTSDATA(GMTSFILE,99)=$H"
S GMTSADDL(142.5,"IEN")="S GMTSDATA(GMTSFILE,""IEN"")=$$GETOBJIEN^GMTSXPD6(GMTSDATA(GMTSFILE,.01))"
S GMTSADDL(142.5,.18)="S GMTSDATA(GMTSFILE,.18)=$$NOW^XLFDT"
S GMTSADDL(142.5,.2)="S GMTSDATA(GMTSFILE,.2)=""YES"""
F GMTSLINE=1:1 D Q:GMTSTXT=""
.S GMTSLOC=GMTSTAG_"+"_GMTSLINE_U_GMTSRTN
.S GMTSTXT=$P($T(@(GMTSLOC)),";;",2)
.Q:GMTSTXT=""
.S GMTSFILE=$P(GMTSTXT,";",1),GMTSFIELD=$P(GMTSTXT,";",2)
.S GMTSVALUE=$P(GMTSTXT,";",3)
.I GMTSFILE=""!(GMTSFIELD="") D Q
..D MES^XPDUTL(" Invalid data definition at "_GMTSLOC)
..S GMTSTXT="",GMTSERROR=1
.I '$D(GMTSTYPE(GMTSFILE,GMTSFIELD)) D
..S GMTSTYPE(GMTSFILE,GMTSFIELD)=$$GET1^DID(GMTSFILE,GMTSFIELD,,"TYPE",,"GMTSERROR")
.I $G(GMTSTYPE(GMTSFILE))="",'$D(GMTSPARENT(GMTSFILE)) D
..S GMTSNAME=$$LOW^XLFSTR($$GET1^DID(GMTSFILE,,,"NAME",,"GMTSERROR"))
..S GMTSNAME=$P(GMTSNAME,"health summary ",2)
..I $E(GMTSNAME,*)="s" S GMTSNAME=$E(GMTSNAME,1,*-1)
..S GMTSTYPE(GMTSFILE)=GMTSNAME
.I GMTSTYPE(GMTSFILE,GMTSFIELD)="WORD-PROCESSING" D
..S GMTSWPLINE=1+$O(GMTSWPDATA(GMTSFILE,GMTSFIELD,"?"),-1)
..S GMTSWPDATA(GMTSFILE,GMTSFIELD,GMTSWPLINE,0)=GMTSVALUE
.E S GMTSDATA(GMTSFILE,GMTSFIELD)=GMTSVALUE
Q:$D(GMTSERROR) 0
S GMTSFILE=0
F S GMTSFILE=$O(GMTSDATA(GMTSFILE)) Q:'+GMTSFILE!($D(GMTSERROR)) D
.I $G(GMTSDATA(GMTSFILE,.01))="" D Q
..D MES^XPDUTL(" Invalid data definition: file #"_GMTSFILE_" has no .01 field")
..S GMTSERROR=1
.I $D(GMTSPARENT(GMTSFILE)),'$D(GMTSIENS(GMTSPARENT(GMTSFILE))) D Q
..D MES^XPDUTL(" Invalid data definition: sub-file #"_GMTSFILE_" has no parent file #"_GMTSPARENT(GMTSFILE)_" definition")
..S GMTSERROR=1
.S GMTSFIELD=0 F S GMTSFIELD=$O(GMTSADDL(GMTSFILE,GMTSFIELD)) Q:GMTSFIELD="" D
..X GMTSADDL(GMTSFILE,GMTSFIELD)
.I '$D(GMTSPARENT(GMTSFILE)) D Q:$D(GMTSERROR)
..I +$G(GMTSDATA(GMTSFILE,"IEN"))=0 D
...S GMTSSIENS=+$$FIND1^DIC(GMTSFILE,,"X",GMTSDATA(GMTSFILE,.01),,,"GMTSERROR")
..I +$G(GMTSDATA(GMTSFILE,"IEN"))>0 D Q:$D(GMTSERROR)
...S GMTSIEN(1)=+GMTSDATA(GMTSFILE,"IEN")
...K GMTSDATA(GMTSFILE,"IEN")
...S GMTSROOT=$$GET1^DID(GMTSFILE,,,"GLOBAL NAME",,"GMTSERROR")
...I $D(GMTSERROR) D Q
....D MSG^DIALOG("WE",.GMTSMESSAGE,($G(IOM,80)-7),,"GMTSERROR")
....D MES^XPDUTL(" Filing error:")
....F GMTSLINE=1:1:GMTSMESSAGE D
.....D MES^XPDUTL(" "_GMTSMESSAGE(GMTSLINE))
...S GMTSROOT=GMTSROOT_GMTSIEN(1)_")"
...S GMTSSIENS=$S($D(@GMTSROOT):GMTSIEN(1),1:0)
..I GMTSSIENS>0 D
...S GMTSFDA(GMTSFILE,GMTSSIENS_",",.01)="@"
...D FILE^DIE("E","GMTSFDA","GMTSERROR")
...I $D(GMTSERROR) D
....D MSG^DIALOG("WE",.GMTSMESSAGE,($G(IOM,80)-7),,"GMTSERROR")
....D MES^XPDUTL(" Filing error:")
....F GMTSLINE=1:1:GMTSMESSAGE D
.....D MES^XPDUTL(" "_GMTSMESSAGE(GMTSLINE))
...S GMTSIEN(1)=GMTSSIENS
.S GMTSIENS(GMTSFILE)="+1,"
.I $D(GMTSPARENT(GMTSFILE)) D
..S GMTSIENS(GMTSFILE)=GMTSIENS(GMTSFILE)_GMTSIENS(GMTSPARENT(GMTSFILE))
..S GMTSPFILE=GMTSFILE
..F S GMTSPFILE=GMTSPARENT(GMTSPFILE) Q:'$D(GMTSPARENT(GMTSPFILE)) D
...S GMTSIENS(GMTSFILE)=GMTSIENS(GMTSFILE)_GMTSIENS(GMTSPARENT(GMTSPFILE))
.E D
..S GMTSTYPE=GMTSTYPE(GMTSFILE)
..D BMES^XPDUTL(" Filing """_GMTSDATA(GMTSFILE,.01)_""" "_GMTSTYPE_" in Health Summary")
.M GMTSFDA(GMTSFILE,GMTSIENS(GMTSFILE))=GMTSDATA(GMTSFILE)
.I $E(GMTSIENS(GMTSFILE),1)'="+" D FILE^DIE("E","GMTSFDA","GMTSERROR")
.I $E(GMTSIENS(GMTSFILE),1)="+" D
..D UPDATE^DIE("E","GMTSFDA","GMTSIEN","GMTSERROR")
..S GMTSIENS(GMTSFILE)=GMTSIEN(1)_","
..K GMTSIEN
.I $D(GMTSERROR) D Q
..D MSG^DIALOG("WE",.GMTSMESSAGE,($G(IOM,80)-7),,"GMTSERROR")
..D MES^XPDUTL(" Filing error:")
..F GMTSLINE=1:1:GMTSMESSAGE D
...D MES^XPDUTL(" "_GMTSMESSAGE(GMTSLINE))
.S GMTSFIELD=0 F S GMTSFIELD=$O(GMTSWPDATA(GMTSFILE,GMTSFIELD)) Q:'+GMTSFIELD!($D(GMTSERROR)) D
..M GMTSWP=GMTSWPDATA(GMTSFILE,GMTSFIELD)
..D WP^DIE(GMTSFILE,GMTSIENS(GMTSFILE),GMTSFIELD,"","GMTSWP","GMTSERROR")
..I $D(GMTSERROR) D
...D MSG^DIALOG("WE",.GMTSMESSAGE,($G(IOM,80)-7),,"GMTSERROR")
...D MES^XPDUTL(" Filing error:")
...F GMTSLINE=1:1:GMTSMESSAGE D
....D MES^XPDUTL(" "_GMTSMESSAGE(GMTSLINE))
I $D(GMTSERROR) Q 0
D MES^XPDUTL(" Successfully installed new "_GMTSTYPE)
Q 1
GETOBJIEN(GMTSNAME) ; Get current or next national IEN in HEALTH SUMMARY OBJECTS file
N GMTSIEN,GMTSERROR
S GMTSIEN=+$$FIND1^DIC(142.5,,"X",GMTSNAME,,,"GMTSERROR")
I GMTSIEN=0 F GMTSIEN=1:1 Q:'$D(^GMT(142.5,GMTSIEN))
Q GMTSIEN