AG71A2 ;IHS/SD/EFG - Patient Registration 7.1 PATCH 2 PRE/POST INSTALL ;
;;7.1;PATIENT REGISTRATION;**2**;AUG 25,2005
;
Q
PRE ;EP - From KIDS.
;'AG PATIENT REGISTRATION ERROR CODES' FILE
;FILE 9009061.5 IS DINUMED AND HAS IDENTIFIERS. KIDS WILL NOT TRANSFER
;NEW DATA FOR THOSE FIELDS WITHOUT FIRST KILLING THE GLOBAL DATA FIRST.
;ONLY NEED IF CHANGING DATA IN THIS FILE
S IEN="" F S IEN=$O(^AGEDERRS(IEN)) Q:IEN="" K ^AGEDERRS(IEN)
Q
POST ;EP - From KIDS.
D BMES^XPDUTL("Beginning post-install routine (POST^AG71A)."),TS
;
;CONVERT ENTRIES IN .04 IN AUPNPAT TO
;NEW MULTIPLE FIELD 3601 IN AUPNPAT
;DONE ONLY IF PATCH 1 NOT FOUND
I '$$PATCH("AG*7.1*1") D BMES^XPDUTL("Converting 'Release of Information' AUPNPAT field .04 to new multiple field 3601."),TS D ^AGCNVROI
;
D BMES^XPDUTL("Fixing private eligibility with missing Policy Holder .08 field. or missing insurer pointer"),TS
D PRVT
;
D BMES^XPDUTL("Collecting Medicaid eligibility entries with missing State .04 field."),TS
D MCD
;
D BMES^XPDUTL("Fixing Medicare eligibility B cross references."),TS
D MCR
;
;CAN WE INCLUDE THIS IN AG PATCH 1
D BMES^XPDUTL("Fixing INSURER IENs containing decimal."),TS
D INSURER
;
D BMES^XPDUTL("Fixing Medicare records with missing .01 fields"),TS
D MCR
;
D BMES^XPDUTL("Fixing Rail Road entries with missing .01 field."),TS
D RRE
;
D BMES^XPDUTL("Fixing incomplete Guarantor records."),TS
D GUAR
;
D BMES^XPDUTL("Fixing patient file with dangling D x-ref"),TS
D PAT
;
D BMES^XPDUTL("Fixing Policy Holder fields"),TS
D POLHOLD
;
D BMES^XPDUTL("Cleaning ""C"" x-ref in Private Insurance File"),TS
D POLHCREF^AGDATA(,)
;
D BMES^XPDUTL("Add File #2 VA PATIENT address fields as Site Mandatory field in the REGISTRATION PARAMETER file"),TS
D ADDMAN ;ADD MANDATORY ADDRESS FIELDS IN FILE 2 TO REGISTRATION PARAMETER FILE
;
;D BMES^XPDUTL("Reindexing the new D x-ref in the PATIENT APPLICATION file"),TS
;D REIN
;
I $$INSTALLD^AG71ENV("AG*7.1") D
. D TS,BMES^XPDUTL("Delivering AG*7.1 install message to select users ...")
. D MAIL
. D BMES^XPDUTL("Post-install routine is complete."),TS
;
Q:$$INSTALLD^AG71ENV("AG*7.1")
;
D TS,OPTRES("AGMENU")
;
D TS,BMES^XPDUTL("Delivering AG*7.1 install message to select users...")
;
D MAIL
;
D BMES^XPDUTL("Post-install routine is complete."),TS
Q
REIN ;INDEX THE 'PATIENT APPLICATIONS' FILE TO SET THE NEW "D" X-REF
;SINCE THIS FILE WON'T BE THAT BIG. WE'LL JUST REINDEX EVERYTHING
;this was placed into aupn9910.17k
K DIK
S DIK="^AUPNAPPS("
D IXALL^DIK
Q
MAIL ;Send install mail message.
N DIFROM,XMSUB,XMDUZ,XMTEXT,XMY
K ^TMP("AG71MS",$J)
S ^TMP("AG71MS",$J,1)=" --- AG v 7.1 Patch 2 has been installed into this uci ---"
S ^TMP("AG71MS",$J,2)=" "
S CNT=3
;IHS/SD/TPF 4/19/2006 AG*7.1*2
;REMOVE STATE MESSAGE. STATE CAN BE EDITED FROM EDIT SCREEN NOW
;D STATEMSG(.AGERRLST,.CNT)
K AGERRLST
S %=0
F S %=$O(^XTMP("XPDI",XPDA,"BLD",XPDBLD,1,%)) Q:'% S ^TMP("AG71MS",$J,(%+CNT))=" "_^(%,0)
S XMSUB=$P($P($T(+1),";",2)," ",3,99),XMDUZ=$S($G(DUZ):DUZ,1:.5),XMTEXT="^TMP(""AG71MS"",$J,",XMY(1)="",XMY(DUZ)=""
F %="AGZMENU","XUMGR","XUPROG","XUPROGMODE" D SINGLE(%)
D ^XMD
K ^TMP("AG71MS",$J)
Q
SINGLE(K) ;EP - Get holders of a single key K.
N Y
S Y=0
Q:'$D(^XUSEC(K))
F S Y=$O(^XUSEC(K,Y)) Q:'Y S XMY(Y)=""
Q
;
OPTRES(AGM) ;
D BMES^XPDUTL("Restoring '"_AGM_"' option to PRE-install configuration...")
NEW AG,AGI
I '$D(^XTMP("AG71",7.2,"OPTSAV",AGM)) D BMES^XPDUTL("FAILED. Option '"_AGM_"' was not previously saved.") Q
S AG=0
F S AG=$O(^XTMP("AG71",7.2,"OPTSAV",AGM,AG)) Q:'AG S AGI=^(AG) I '$$ADD^XPDMENU(AGM,$P(AGI,U),$P(AGI,U,2),$P(AGI,U,3)) D BMES^XPDUTL("....FAILED to re-attach "_$P(AGI,U)_" to "_AGM_".")
;D BMES^XPDUTL("Attaching ""RHI1"" option to the Registration Reports menu ""RPT"".")
;I $$ADD^XPDMENU("AGREPORTS","AGRHI1","RHI1",20) D BMES^XPDUTL("....successfully atch'd.") I 1
;E D BMES^XPDUTL("....Attachment *FAILED*.")
Q
TS D MES^XPDUTL($$HTE^XLFDT($H)) Q
MCD ;CLEAR MCD RECORDS MISSING .01 FIELD
;MUST DO DIRECT KILL BECAUSE X-REF NOT THERE. BOMBS ON USE OF ^DIK
K AGERRLST
N HRN,DFN,ST,MCDNUM
S RECNO=0
F S RECNO=$O(^AUPNMCD(RECNO)) Q:'RECNO D
.;IF THE INS. PTR IS MISSING LETS FIX IT SO TPB CLAIMS GENERATOR DOESN'T BLOW UP
.I '$G(^AUPNMCD(RECNO,0))!('$P($G(^AUPNMCD(RECNO,0)),U)) K ^AUPNMCD(RECNO) Q
.I $P($G(^AUPNMCD(RECNO,0)),U,4)="" S DFN=$P($G(^AUPNMCD(RECNO,0)),U),AGERRLST(RECNO)=$P($G(^DPT(DFN,0)),U)_U_$P($G(^AUPNPAT(DFN,41,DUZ(2),0)),U,2)
Q
RRE ;FIX "B" X-REF ENTRIES WITH NO ZERO RECORD
;MUST DO DIRECT KILL BECAUSE RECORD NOT THERE. BOMBS ON USE OF ^DIK DOESN'T WORK
S RECNO=""
F S RECNO=$O(^AUPNRRE("B",RECNO)) Q:'RECNO D
.I $P($G(^AUPNRRE(RECNO,0)),U)="" K ^AUPNRRE(RECNO),^AUPNRRE("B",RECNO)
S RECNO=0
F S RECNO=$O(^AUPNRRE(RECNO)) Q:'RECNO D
.I $P($G(^AUPNRRE(RECNO,0)),U)="" K ^AUPNRRE(RECNO),^AUPNRRE("B",RECNO)
Q
MCR ;
S RECNO=""
F S RECNO=$O(^AUPNMCR("B",RECNO)) Q:'RECNO D
.I $P($G(^AUPNMCR(RECNO,0)),U)="" K ^AUPNMCR(RECNO),^AUPNMCR("B",RECNO)
S RECNO=0
F S RECNO=$O(^AUPNMCR(RECNO)) Q:'RECNO D
.I $P($G(^AUPNMCR(RECNO,0)),U)="" K ^AUPNMCR(RECNO),^AUPNMCR("B",RECNO)
Q
INSURER ;EP - CAN WE INCLUDE THIS IN AG PATCH 1??
S RECNO=0
F S RECNO=$O(^AUTNINS(RECNO)) Q:'RECNO D
.I RECNO[(".") K ^AUTNINS(RECNO),^AUTNINS("B",RECNO)
S RECNO=""
F S RECNO=$O(^AUTNINS("B",RECNO)) Q:RECNO="" D
.S RECIEN=""
.F S RECIEN=$O(^AUTNINS("B",RECNO,RECIEN)) Q:RECIEN="" D
..Q:$P($G(^AUTNINS(RECIEN,0)),U)'=""
..K DA,DIR,DIE,DIK,DIC,DR
..S DA=RECIEN,DIK="^AUTNINS(" D ^DIK
Q
PAT ;CLEAN UP D X-REF IN PATIENT FILE
S HRN="" F S HRN=$O(^AUPNPAT("D",HRN)) Q:HRN="" D
.S RECNO="" F S RECNO=$O(^AUPNPAT("D",HRN,RECNO)) Q:RECNO="" D
..I '$D(^AUPNPAT(RECNO))!('$D(^DPT(RECNO))) K ^AUPNPAT("D",HRN,RECNO)
Q
PRVT ;CLEAR ANY PRIVATE ELIG RECORDS MISSING INSURER POINTER
;MUST DO DIRECT KILL BECAUSE X-REF NOT THERE. BOMBS ON USE OF ^DIK
S RECNO=0
F S RECNO=$O(^AUPNPRVT(RECNO)) Q:'RECNO D
.S D1=0
.F S D1=$O(^AUPNPRVT(RECNO,11,D1)) Q:'D1 D
..I $P($G(^AUPNPRVT(RECNO,11,D1,0)),U)="" K ^AUPNPRVT(RECNO,11,D1) Q
..I $P($G(^AUPNPRVT(RECNO,11,D1,0)),U,8)="" S DA=D1,DA(1)=RECNO,DIK="^AUPNPRVT("_DA(1)_",11," D ^DIK
..I $O(^AUPNPRVT(RECNO,11,0)) Q
..S DA=RECNO,DIK="^AUPNPRVT(" D ^DIK
S RECNO=0 F S RECNO=$O(^AUPNPRVT("B",RECNO)) Q:RECNO="" D
.S IEN=0 F S IEN=$O(^AUPNPRVT("B",RECNO,IEN)) Q:'IEN D
..I $P($G(^AUPNPRVT(IEN,0)),U)="" K ^AUPNPRVT(IEN),^AUPNPRVT("B",RECNO,IEN)
Q
GUAR ;CLEAR GUARANTOR RECORDS WITH INCOMPETE ENTRIES
N PATPTR
S PATPTR=0
F S PATPTR=$O(^AUPNGUAR(PATPTR)) Q:'PATPTR D GUAR1(PATPTR)
Q
GUAR1(PATPTR) ;EP - DELETE GUARANTOR ENTRIES WITH MISSING GUARANTORS OR DATES
N SUB1,SUB11,REDO
REDO ;
S SUB1=$O(^AUPNGUAR(PATPTR,1,0))
I 'SUB1 D Q ;NO GUARANTORS FOUND AT ALL
.K DIE,DIK,DA,DIC S DIK="^AUPNGUAR(",DA=PATPTR D ^DIK
;FOR EACH GUARANTOR ARE THERE EFFECTIVE DATES?
S (SUB1,REDO)=0
F S SUB1=$O(^AUPNGUAR(PATPTR,1,SUB1)) Q:'SUB1 D G REDO:REDO
.S SUB11=$O(^AUPNGUAR(PATPTR,1,SUB1,11,0))
.I 'SUB11 D Q
..S REDO=1 K DIE,DIK,DA,DIC S DA(1)=PATPTR,DA=SUB1,DIK="^AUPNGUAR("_DA(1)_",1," D ^DIK
Q
STATEMSG(ARRAY,LN) ;EP - SEND MSG ABOUT MEDICAID ENTRIES MISSING STATE FIELD
N IEN
S IEN=""
F LN=LN:1 S IEN=$O(ARRAY(IEN)) Q:IEN="" D
.S ^TMP("AG71MS",$J,LN)="HRN # "_$P(ARRAY(IEN),U,2)_" IS MISSIING THE STATE FIELD IN MEDICAID ELIGIBILITY ENTRY "_IEN
Q
VAALERT ;EP - SEND VA ALERT IF WANTED
S XQAMSG="Patient Regsistration "_$P($T(+2),";",3)_" Patch "_$P($T(+2),";",5)_" INSTALL complete."
S XQA("AG MAIL GROUP")=""
D SETUP^XQALERT
Q
;FIX STATE,SEX AND DOB FIELDS WHICH WERE INCORRECTLY STUFFED
POLHOLD ;
N IEN,DOB,STATE,SEX
S IEN=0
F S IEN=$O(^AUPN3PPH(IEN)) Q:'IEN D
.S STATE=$P($G(^AUPN3PPH(IEN,0)),U,12)
.S DOB=$P($G(^AUPN3PPH(IEN,0)),U,19)
.S SEX=$P($G(^AUPN3PPH(IEN,0)),U,8)
.Q:(STATE="")&(DOB="")&(SEX="")
.I STATE'="" D
..Q:+STATE>0 ;DON'T DO ANYTHING IF ALREADY A POINTER
..W !,IEN,"*",STATE
..K DIC
..S X=STATE
..S DIC=5
..D ^DIC
..Q:Y<0
..K DIE,DR,DIC,DA
..S DA=IEN
..S DIE="^AUPN3PPH("
..S DR=".12///^S X=STATE"
..D ^DIE
.I DOB'="" D
..Q:DOB'["/"
..W !,IEN,"*",DOB
..K DIE,DR,DIC,DA
..S DA=IEN
..S DIE="^AUPN3PPH("
..S DR=".19///^S X=DOB"
..D ^DIE
.I SEX'="" D
..Q:$L(SEX)=1
..W !,IEN,"*",SEX
..K DIE,DR,DIC,DA
..S DA=IEN
..S DIE="^AUPN3PPH("
..S DR=".08///^S X=SEX"
..D ^DIE
Q
PATCH(X) ;return 1 if patch X was installed, X=aaaa*nn.nn*nnnn
Q:X'?1.4UN1"*"1.2N1"."1.2N.1(1"V",1"T").2N1"*"1.4N 0
N %,I,J
S I=$O(^DIC(9.4,"C",$P(X,"*"),0)) Q:'I 0
S J=$O(^DIC(9.4,I,22,"B",$P(X,"*",2),0)),X=$P(X,"*",3) Q:'J 0
;check if patch is just a number
Q:$O(^DIC(9.4,I,22,J,"PAH","B",X,0)) 1
S %=$O(^DIC(9.4,I,22,J,"PAH","B",X_" SEQ"))
Q (X=+%)
;ADD CORRECT MANDATORY ADDRESS FIELDS FOR VA PATIENT
ADDMAN ;
K DA,DIC,DIE,DR,DO,DD,DINUM
S DUZ2=0
F S DUZ2=$O(^AGFAC(DUZ2)) Q:'DUZ2 D
.S DA(1)=$O(^AGFAC(DUZ2,11,"B",2,"")) ;JUST DO THIS FOR 'VA PATIENT' FILE
.;S DUZ2=516,DA(1)=1
.Q:'DA(1)
.S DA(2)=DUZ2
.S DIC="^AGFAC("_DA(2)_",11,"_DA(1)_",1,"
.S X="STATE"
.S DIC(0)="LX"
.S DIC("DR")=".02///^S X=0"
.D ^DIC
.S X="ZIP CODE"
.S DIC(0)="LX"
.S DIC("DR")=".02///^S X=0"
.D ^DIC
.S X="CITY"
.S DIC(0)="LX"
.S DIC("DR")=".02///^S X=0"
.D ^DIC
.S X="STREET ADDRESS [LINE 1]"
.D ^DIC
Q
;FIX DANGLING "c" X-REF WITH NO POLICY HOLDER IN 11 NODE
POL ;
S POLH="" F S POLH=$O(^AUPNPRVT("C",POLH)) Q:POLH="" D
.S POLM="" F S POLM=$O(^AUPNPRVT("C",POLH,POLM)) Q:POLM="" D
..S REC="" F S REC=$O(^AUPNPRVT("C",POLH,POLM,REC)) Q:REC="" D
...I $P($G(^AUPNPRVT(POLM,11,REC,0)),U,8)'=POLH D
....W !,POLM,"**",REC,!?5,"POLH:",POLH
....W !?5,"PIECE 8:",$P($G(^AUPNPRVT(POLM,11,REC,0)),U,8)
....I $P($G(^AUPNPRVT(POLM,11,REC,0)),U,8)="" W !?5,"INSURER NODE:",$G(^AUPNPRVT(POLM,11,REC,0))
....I $P($G(^AUPNPRVT(POLM,11,REC,0)),U,8)="",($G(^AUPNPRVT(POLM,11,REC,0))="") K ^AUPNPRVT("C",POLH,POLM,REC)
AG71A2 ;IHS/SD/EFG - Patient Registration 7.1 PATCH 2 PRE/POST INSTALL ;
+1 ;;7.1;PATIENT REGISTRATION;**2**;AUG 25,2005
+2 ;
+3 QUIT
PRE ;EP - From KIDS.
+1 ;'AG PATIENT REGISTRATION ERROR CODES' FILE
+2 ;FILE 9009061.5 IS DINUMED AND HAS IDENTIFIERS. KIDS WILL NOT TRANSFER
+3 ;NEW DATA FOR THOSE FIELDS WITHOUT FIRST KILLING THE GLOBAL DATA FIRST.
+4 ;ONLY NEED IF CHANGING DATA IN THIS FILE
+5 SET IEN=""
FOR
SET IEN=$ORDER(^AGEDERRS(IEN))
IF IEN=""
QUIT
KILL ^AGEDERRS(IEN)
+6 QUIT
POST ;EP - From KIDS.
+1 DO BMES^XPDUTL("Beginning post-install routine (POST^AG71A).")
DO TS
+2 ;
+3 ;CONVERT ENTRIES IN .04 IN AUPNPAT TO
+4 ;NEW MULTIPLE FIELD 3601 IN AUPNPAT
+5 ;DONE ONLY IF PATCH 1 NOT FOUND
+6 IF '$$PATCH("AG*7.1*1")
DO BMES^XPDUTL("Converting 'Release of Information' AUPNPAT field .04 to new multiple field 3601.")
DO TS
DO ^AGCNVROI
+7 ;
+8 DO BMES^XPDUTL("Fixing private eligibility with missing Policy Holder .08 field. or missing insurer pointer")
DO TS
+9 DO PRVT
+10 ;
+11 DO BMES^XPDUTL("Collecting Medicaid eligibility entries with missing State .04 field.")
DO TS
+12 DO MCD
+13 ;
+14 DO BMES^XPDUTL("Fixing Medicare eligibility B cross references.")
DO TS
+15 DO MCR
+16 ;
+17 ;CAN WE INCLUDE THIS IN AG PATCH 1
+18 DO BMES^XPDUTL("Fixing INSURER IENs containing decimal.")
DO TS
+19 DO INSURER
+20 ;
+21 DO BMES^XPDUTL("Fixing Medicare records with missing .01 fields")
DO TS
+22 DO MCR
+23 ;
+24 DO BMES^XPDUTL("Fixing Rail Road entries with missing .01 field.")
DO TS
+25 DO RRE
+26 ;
+27 DO BMES^XPDUTL("Fixing incomplete Guarantor records.")
DO TS
+28 DO GUAR
+29 ;
+30 DO BMES^XPDUTL("Fixing patient file with dangling D x-ref")
DO TS
+31 DO PAT
+32 ;
+33 DO BMES^XPDUTL("Fixing Policy Holder fields")
DO TS
+34 DO POLHOLD
+35 ;
+36 DO BMES^XPDUTL("Cleaning ""C"" x-ref in Private Insurance File")
DO TS
+37 DO POLHCREF^AGDATA(,)
+38 ;
+39 DO BMES^XPDUTL("Add File #2 VA PATIENT address fields as Site Mandatory field in the REGISTRATION PARAMETER file")
DO TS
+40 ;ADD MANDATORY ADDRESS FIELDS IN FILE 2 TO REGISTRATION PARAMETER FILE
DO ADDMAN
+41 ;
+42 ;D BMES^XPDUTL("Reindexing the new D x-ref in the PATIENT APPLICATION file"),TS
+43 ;D REIN
+44 ;
+45 IF $$INSTALLD^AG71ENV("AG*7.1")
Begin DoDot:1
+46 DO TS
DO BMES^XPDUTL("Delivering AG*7.1 install message to select users ...")
+47 DO MAIL
+48 DO BMES^XPDUTL("Post-install routine is complete.")
DO TS
End DoDot:1
+49 ;
+50 IF $$INSTALLD^AG71ENV("AG*7.1")
QUIT
+51 ;
+52 DO TS
DO OPTRES("AGMENU")
+53 ;
+54 DO TS
DO BMES^XPDUTL("Delivering AG*7.1 install message to select users...")
+55 ;
+56 DO MAIL
+57 ;
+58 DO BMES^XPDUTL("Post-install routine is complete.")
DO TS
+59 QUIT
REIN ;INDEX THE 'PATIENT APPLICATIONS' FILE TO SET THE NEW "D" X-REF
+1 ;SINCE THIS FILE WON'T BE THAT BIG. WE'LL JUST REINDEX EVERYTHING
+2 ;this was placed into aupn9910.17k
+3 KILL DIK
+4 SET DIK="^AUPNAPPS("
+5 DO IXALL^DIK
+6 QUIT
MAIL ;Send install mail message.
+1 NEW DIFROM,XMSUB,XMDUZ,XMTEXT,XMY
+2 KILL ^TMP("AG71MS",$JOB)
+3 SET ^TMP("AG71MS",$JOB,1)=" --- AG v 7.1 Patch 2 has been installed into this uci ---"
+4 SET ^TMP("AG71MS",$JOB,2)=" "
+5 SET CNT=3
+6 ;IHS/SD/TPF 4/19/2006 AG*7.1*2
+7 ;REMOVE STATE MESSAGE. STATE CAN BE EDITED FROM EDIT SCREEN NOW
+8 ;D STATEMSG(.AGERRLST,.CNT)
+9 KILL AGERRLST
+10 SET %=0
+11 FOR
SET %=$ORDER(^XTMP("XPDI",XPDA,"BLD",XPDBLD,1,%))
IF '%
QUIT
SET ^TMP("AG71MS",$JOB,(%+CNT))=" "_^(%,0)
+12 SET XMSUB=$PIECE($PIECE($TEXT(+1),";",2)," ",3,99)
SET XMDUZ=$SELECT($GET(DUZ):DUZ,1:.5)
SET XMTEXT="^TMP(""AG71MS"",$J,"
SET XMY(1)=""
SET XMY(DUZ)=""
+13 FOR %="AGZMENU","XUMGR","XUPROG","XUPROGMODE"
DO SINGLE(%)
+14 DO ^XMD
+15 KILL ^TMP("AG71MS",$JOB)
+16 QUIT
SINGLE(K) ;EP - Get holders of a single key K.
+1 NEW Y
+2 SET Y=0
+3 IF '$DATA(^XUSEC(K))
QUIT
+4 FOR
SET Y=$ORDER(^XUSEC(K,Y))
IF 'Y
QUIT
SET XMY(Y)=""
+5 QUIT
+6 ;
OPTRES(AGM) ;
+1 DO BMES^XPDUTL("Restoring '"_AGM_"' option to PRE-install configuration...")
+2 NEW AG,AGI
+3 IF '$DATA(^XTMP("AG71",7.2,"OPTSAV",AGM))
DO BMES^XPDUTL("FAILED. Option '"_AGM_"' was not previously saved.")
QUIT
+4 SET AG=0
+5 FOR
SET AG=$ORDER(^XTMP("AG71",7.2,"OPTSAV",AGM,AG))
IF 'AG
QUIT
SET AGI=^(AG)
IF '$$ADD^XPDMENU(AGM,$PIECE(AGI,U),$PIECE(AGI,U,2),$PIECE(AGI,U,3))
DO BMES^XPDUTL("....FAILED to re-attach "_$PIECE(AGI,U)_" to "_AGM_".")
+6 ;D BMES^XPDUTL("Attaching ""RHI1"" option to the Registration Reports menu ""RPT"".")
+7 ;I $$ADD^XPDMENU("AGREPORTS","AGRHI1","RHI1",20) D BMES^XPDUTL("....successfully atch'd.") I 1
+8 ;E D BMES^XPDUTL("....Attachment *FAILED*.")
+9 QUIT
TS DO MES^XPDUTL($$HTE^XLFDT($HOROLOG))
QUIT
MCD ;CLEAR MCD RECORDS MISSING .01 FIELD
+1 ;MUST DO DIRECT KILL BECAUSE X-REF NOT THERE. BOMBS ON USE OF ^DIK
+2 KILL AGERRLST
+3 NEW HRN,DFN,ST,MCDNUM
+4 SET RECNO=0
+5 FOR
SET RECNO=$ORDER(^AUPNMCD(RECNO))
IF 'RECNO
QUIT
Begin DoDot:1
+6 ;IF THE INS. PTR IS MISSING LETS FIX IT SO TPB CLAIMS GENERATOR DOESN'T BLOW UP
+7 IF '$GET(^AUPNMCD(RECNO,0))!('$PIECE($GET(^AUPNMCD(RECNO,0)),U))
KILL ^AUPNMCD(RECNO)
QUIT
+8 IF $PIECE($GET(^AUPNMCD(RECNO,0)),U,4)=""
SET DFN=$PIECE($GET(^AUPNMCD(RECNO,0)),U)
SET AGERRLST(RECNO)=$PIECE($GET(^DPT(DFN,0)),U)_U_$PIECE($GET(^AUPNPAT(DFN,41,DUZ(2),0)),U,2)
End DoDot:1
+9 QUIT
RRE ;FIX "B" X-REF ENTRIES WITH NO ZERO RECORD
+1 ;MUST DO DIRECT KILL BECAUSE RECORD NOT THERE. BOMBS ON USE OF ^DIK DOESN'T WORK
+2 SET RECNO=""
+3 FOR
SET RECNO=$ORDER(^AUPNRRE("B",RECNO))
IF 'RECNO
QUIT
Begin DoDot:1
+4 IF $PIECE($GET(^AUPNRRE(RECNO,0)),U)=""
KILL ^AUPNRRE(RECNO),^AUPNRRE("B",RECNO)
End DoDot:1
+5 SET RECNO=0
+6 FOR
SET RECNO=$ORDER(^AUPNRRE(RECNO))
IF 'RECNO
QUIT
Begin DoDot:1
+7 IF $PIECE($GET(^AUPNRRE(RECNO,0)),U)=""
KILL ^AUPNRRE(RECNO),^AUPNRRE("B",RECNO)
End DoDot:1
+8 QUIT
MCR ;
+1 SET RECNO=""
+2 FOR
SET RECNO=$ORDER(^AUPNMCR("B",RECNO))
IF 'RECNO
QUIT
Begin DoDot:1
+3 IF $PIECE($GET(^AUPNMCR(RECNO,0)),U)=""
KILL ^AUPNMCR(RECNO),^AUPNMCR("B",RECNO)
End DoDot:1
+4 SET RECNO=0
+5 FOR
SET RECNO=$ORDER(^AUPNMCR(RECNO))
IF 'RECNO
QUIT
Begin DoDot:1
+6 IF $PIECE($GET(^AUPNMCR(RECNO,0)),U)=""
KILL ^AUPNMCR(RECNO),^AUPNMCR("B",RECNO)
End DoDot:1
+7 QUIT
INSURER ;EP - CAN WE INCLUDE THIS IN AG PATCH 1??
+1 SET RECNO=0
+2 FOR
SET RECNO=$ORDER(^AUTNINS(RECNO))
IF 'RECNO
QUIT
Begin DoDot:1
+3 IF RECNO[(".")
KILL ^AUTNINS(RECNO),^AUTNINS("B",RECNO)
End DoDot:1
+4 SET RECNO=""
+5 FOR
SET RECNO=$ORDER(^AUTNINS("B",RECNO))
IF RECNO=""
QUIT
Begin DoDot:1
+6 SET RECIEN=""
+7 FOR
SET RECIEN=$ORDER(^AUTNINS("B",RECNO,RECIEN))
IF RECIEN=""
QUIT
Begin DoDot:2
+8 IF $PIECE($GET(^AUTNINS(RECIEN,0)),U)'=""
QUIT
+9 KILL DA,DIR,DIE,DIK,DIC,DR
+10 SET DA=RECIEN
SET DIK="^AUTNINS("
DO ^DIK
End DoDot:2
End DoDot:1
+11 QUIT
PAT ;CLEAN UP D X-REF IN PATIENT FILE
+1 SET HRN=""
FOR
SET HRN=$ORDER(^AUPNPAT("D",HRN))
IF HRN=""
QUIT
Begin DoDot:1
+2 SET RECNO=""
FOR
SET RECNO=$ORDER(^AUPNPAT("D",HRN,RECNO))
IF RECNO=""
QUIT
Begin DoDot:2
+3 IF '$DATA(^AUPNPAT(RECNO))!('$DATA(^DPT(RECNO)))
KILL ^AUPNPAT("D",HRN,RECNO)
End DoDot:2
End DoDot:1
+4 QUIT
PRVT ;CLEAR ANY PRIVATE ELIG RECORDS MISSING INSURER POINTER
+1 ;MUST DO DIRECT KILL BECAUSE X-REF NOT THERE. BOMBS ON USE OF ^DIK
+2 SET RECNO=0
+3 FOR
SET RECNO=$ORDER(^AUPNPRVT(RECNO))
IF 'RECNO
QUIT
Begin DoDot:1
+4 SET D1=0
+5 FOR
SET D1=$ORDER(^AUPNPRVT(RECNO,11,D1))
IF 'D1
QUIT
Begin DoDot:2
+6 IF $PIECE($GET(^AUPNPRVT(RECNO,11,D1,0)),U)=""
KILL ^AUPNPRVT(RECNO,11,D1)
QUIT
+7 IF $PIECE($GET(^AUPNPRVT(RECNO,11,D1,0)),U,8)=""
SET DA=D1
SET DA(1)=RECNO
SET DIK="^AUPNPRVT("_DA(1)_",11,"
DO ^DIK
+8 IF $ORDER(^AUPNPRVT(RECNO,11,0))
QUIT
+9 SET DA=RECNO
SET DIK="^AUPNPRVT("
DO ^DIK
End DoDot:2
End DoDot:1
+10 SET RECNO=0
FOR
SET RECNO=$ORDER(^AUPNPRVT("B",RECNO))
IF RECNO=""
QUIT
Begin DoDot:1
+11 SET IEN=0
FOR
SET IEN=$ORDER(^AUPNPRVT("B",RECNO,IEN))
IF 'IEN
QUIT
Begin DoDot:2
+12 IF $PIECE($GET(^AUPNPRVT(IEN,0)),U)=""
KILL ^AUPNPRVT(IEN),^AUPNPRVT("B",RECNO,IEN)
End DoDot:2
End DoDot:1
+13 QUIT
GUAR ;CLEAR GUARANTOR RECORDS WITH INCOMPETE ENTRIES
+1 NEW PATPTR
+2 SET PATPTR=0
+3 FOR
SET PATPTR=$ORDER(^AUPNGUAR(PATPTR))
IF 'PATPTR
QUIT
DO GUAR1(PATPTR)
+4 QUIT
GUAR1(PATPTR) ;EP - DELETE GUARANTOR ENTRIES WITH MISSING GUARANTORS OR DATES
+1 NEW SUB1,SUB11,REDO
REDO ;
+1 SET SUB1=$ORDER(^AUPNGUAR(PATPTR,1,0))
+2 ;NO GUARANTORS FOUND AT ALL
IF 'SUB1
Begin DoDot:1
+3 KILL DIE,DIK,DA,DIC
SET DIK="^AUPNGUAR("
SET DA=PATPTR
DO ^DIK
End DoDot:1
QUIT
+4 ;FOR EACH GUARANTOR ARE THERE EFFECTIVE DATES?
+5 SET (SUB1,REDO)=0
+6 FOR
SET SUB1=$ORDER(^AUPNGUAR(PATPTR,1,SUB1))
IF 'SUB1
QUIT
Begin DoDot:1
+7 SET SUB11=$ORDER(^AUPNGUAR(PATPTR,1,SUB1,11,0))
+8 IF 'SUB11
Begin DoDot:2
+9 SET REDO=1
KILL DIE,DIK,DA,DIC
SET DA(1)=PATPTR
SET DA=SUB1
SET DIK="^AUPNGUAR("_DA(1)_",1,"
DO ^DIK
End DoDot:2
QUIT
End DoDot:1
IF REDO
GOTO REDO
+10 QUIT
STATEMSG(ARRAY,LN) ;EP - SEND MSG ABOUT MEDICAID ENTRIES MISSING STATE FIELD
+1 NEW IEN
+2 SET IEN=""
+3 FOR LN=LN:1
SET IEN=$ORDER(ARRAY(IEN))
IF IEN=""
QUIT
Begin DoDot:1
+4 SET ^TMP("AG71MS",$JOB,LN)="HRN # "_$PIECE(ARRAY(IEN),U,2)_" IS MISSIING THE STATE FIELD IN MEDICAID ELIGIBILITY ENTRY "_IEN
End DoDot:1
+5 QUIT
VAALERT ;EP - SEND VA ALERT IF WANTED
+1 SET XQAMSG="Patient Regsistration "_$PIECE($TEXT(+2),";",3)_" Patch "_$PIECE($TEXT(+2),";",5)_" INSTALL complete."
+2 SET XQA("AG MAIL GROUP")=""
+3 DO SETUP^XQALERT
+4 QUIT
+5 ;FIX STATE,SEX AND DOB FIELDS WHICH WERE INCORRECTLY STUFFED
POLHOLD ;
+1 NEW IEN,DOB,STATE,SEX
+2 SET IEN=0
+3 FOR
SET IEN=$ORDER(^AUPN3PPH(IEN))
IF 'IEN
QUIT
Begin DoDot:1
+4 SET STATE=$PIECE($GET(^AUPN3PPH(IEN,0)),U,12)
+5 SET DOB=$PIECE($GET(^AUPN3PPH(IEN,0)),U,19)
+6 SET SEX=$PIECE($GET(^AUPN3PPH(IEN,0)),U,8)
+7 IF (STATE="")&(DOB="")&(SEX="")
QUIT
+8 IF STATE'=""
Begin DoDot:2
+9 ;DON'T DO ANYTHING IF ALREADY A POINTER
IF +STATE>0
QUIT
+10 WRITE !,IEN,"*",STATE
+11 KILL DIC
+12 SET X=STATE
+13 SET DIC=5
+14 DO ^DIC
+15 IF Y<0
QUIT
+16 KILL DIE,DR,DIC,DA
+17 SET DA=IEN
+18 SET DIE="^AUPN3PPH("
+19 SET DR=".12///^S X=STATE"
+20 DO ^DIE
End DoDot:2
+21 IF DOB'=""
Begin DoDot:2
+22 IF DOB'["/"
QUIT
+23 WRITE !,IEN,"*",DOB
+24 KILL DIE,DR,DIC,DA
+25 SET DA=IEN
+26 SET DIE="^AUPN3PPH("
+27 SET DR=".19///^S X=DOB"
+28 DO ^DIE
End DoDot:2
+29 IF SEX'=""
Begin DoDot:2
+30 IF $LENGTH(SEX)=1
QUIT
+31 WRITE !,IEN,"*",SEX
+32 KILL DIE,DR,DIC,DA
+33 SET DA=IEN
+34 SET DIE="^AUPN3PPH("
+35 SET DR=".08///^S X=SEX"
+36 DO ^DIE
End DoDot:2
End DoDot:1
+37 QUIT
PATCH(X) ;return 1 if patch X was installed, X=aaaa*nn.nn*nnnn
+1 IF X'?1.4UN1"*"1.2N1"."1.2N.1(1"V",1"T").2N1"*"1.4N
QUIT 0
+2 NEW %,I,J
+3 SET I=$ORDER(^DIC(9.4,"C",$PIECE(X,"*"),0))
IF 'I
QUIT 0
+4 SET J=$ORDER(^DIC(9.4,I,22,"B",$PIECE(X,"*",2),0))
SET X=$PIECE(X,"*",3)
IF 'J
QUIT 0
+5 ;check if patch is just a number
+6 IF $ORDER(^DIC(9.4,I,22,J,"PAH","B",X,0))
QUIT 1
+7 SET %=$ORDER(^DIC(9.4,I,22,J,"PAH","B",X_" SEQ"))
+8 QUIT (X=+%)
+9 ;ADD CORRECT MANDATORY ADDRESS FIELDS FOR VA PATIENT
ADDMAN ;
+1 KILL DA,DIC,DIE,DR,DO,DD,DINUM
+2 SET DUZ2=0
+3 FOR
SET DUZ2=$ORDER(^AGFAC(DUZ2))
IF 'DUZ2
QUIT
Begin DoDot:1
+4 ;JUST DO THIS FOR 'VA PATIENT' FILE
SET DA(1)=$ORDER(^AGFAC(DUZ2,11,"B",2,""))
+5 ;S DUZ2=516,DA(1)=1
+6 IF 'DA(1)
QUIT
+7 SET DA(2)=DUZ2
+8 SET DIC="^AGFAC("_DA(2)_",11,"_DA(1)_",1,"
+9 SET X="STATE"
+10 SET DIC(0)="LX"
+11 SET DIC("DR")=".02///^S X=0"
+12 DO ^DIC
+13 SET X="ZIP CODE"
+14 SET DIC(0)="LX"
+15 SET DIC("DR")=".02///^S X=0"
+16 DO ^DIC
+17 SET X="CITY"
+18 SET DIC(0)="LX"
+19 SET DIC("DR")=".02///^S X=0"
+20 DO ^DIC
+21 SET X="STREET ADDRESS [LINE 1]"
+22 DO ^DIC
End DoDot:1
+23 QUIT
+24 ;FIX DANGLING "c" X-REF WITH NO POLICY HOLDER IN 11 NODE
POL ;
+1 SET POLH=""
FOR
SET POLH=$ORDER(^AUPNPRVT("C",POLH))
IF POLH=""
QUIT
Begin DoDot:1
+2 SET POLM=""
FOR
SET POLM=$ORDER(^AUPNPRVT("C",POLH,POLM))
IF POLM=""
QUIT
Begin DoDot:2
+3 SET REC=""
FOR
SET REC=$ORDER(^AUPNPRVT("C",POLH,POLM,REC))
IF REC=""
QUIT
Begin DoDot:3
+4 IF $PIECE($GET(^AUPNPRVT(POLM,11,REC,0)),U,8)'=POLH
Begin DoDot:4
+5 WRITE !,POLM,"**",REC,!?5,"POLH:",POLH
+6 WRITE !?5,"PIECE 8:",$PIECE($GET(^AUPNPRVT(POLM,11,REC,0)),U,8)
+7 IF $PIECE($GET(^AUPNPRVT(POLM,11,REC,0)),U,8)=""
WRITE !?5,"INSURER NODE:",$GET(^AUPNPRVT(POLM,11,REC,0))
+8 IF $PIECE($GET(^AUPNPRVT(POLM,11,REC,0)),U,8)=""
IF ($GET(^AUPNPRVT(POLM,11,REC,0))="")
KILL ^AUPNPRVT("C",POLH,POLM,REC)
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1