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

AGUTILS.m

Go to the documentation of this file.
  1. AGUTILS ;IHS/ASDS/TPF - PAT REG UTILITY ROUTINE ; 3/25/2004 8:25:20 AM
  1. ;;7.1;PATIENT REGISTRATION;**1,2,4,5**;JAN 31, 2007
  1. ;
  1. Q
  1. UPDTEMAL(PATDFN) ;EP - UPDATE HISTORICAL EMAIL ADDRESS
  1. N ADDREC
  1. K DIE,DIC,DR,DA,DIR
  1. S DA(1)=PATDFN
  1. S DIC="^AUPNPAT("_DA(1)_",82,"
  1. S DIC(0)="L"
  1. S X=""""_DT_""""
  1. D ^DIC
  1. I Y<0 D Q
  1. .W !!,"HISTORICAL EMAIL ADDRESS COULD NOT BE UPDATED!!"
  1. .K DIE,DIC,DR,DA,DIR
  1. .S DIR(0)="E"
  1. .D ^DIR
  1. S ADDREC=+Y
  1. N AGEMAIL
  1. S AGEMAIL=$$GET1^DIQ(9000001,PATDFN_",",1802)
  1. K DIE,DIC,DR,DA,DIR
  1. S DA=ADDREC
  1. S DA(1)=PATDFN
  1. S DIE="^AUPNPAT("_DA(1)_",82,"
  1. S DR=".02///^S X=AGEMAIL;"
  1. D ^DIE
  1. K DIE,DIC,DR,DA,DIR
  1. ;
  1. Q
  1. ;FORCE MEANS USE //// TO FORCE THE DATA INTO THE NEW FIELDS
  1. ;THIS IS USED ONLY ON THE POST INSTALL TO ACCEPT BAD DATA ENTERED BY SITES
  1. ;USUALLY INTO THE CITY FIELD. iF FORCE="F" THEN FORCE
  1. UPDTHADD(PATDFN,FORCE) ;EP - UPDATE HISTORICAL ADDRESS FROM FILE #2 ADRESS FIELDS
  1. S FORCE=$G(FORCE)
  1. I FORCE="F" Q:$O(^AUPNPAT(PATDFN,83,0)) ;F MEANS CALLED FROM POST INSTALL. QUIT IF THEY ALREADY HAVE AN HIST. ADDRESS. TAKES CARE OF BETA SITES
  1. N ADDREC
  1. K DIE,DIC,DR,DA,DIR
  1. S DA(1)=PATDFN
  1. S DIC="^AUPNPAT("_DA(1)_",83,"
  1. S DIC(0)="L"
  1. S X=""""_DT_""""
  1. D ^DIC
  1. I Y<0 D Q
  1. .W !!,"HISTORICAL ADDRESS COULD NOT BE UPDATED!!"
  1. .K DIE,DIC,DR,DA,DIR
  1. .S DIR(0)="E"
  1. .D ^DIR
  1. S ADDREC=+Y
  1. ;
  1. ;get the current ADDRESS VALUES
  1. N AGSTR1,STREET2,STREET3,CITY,STATE,ZIP,HPHONE
  1. S AGSTR1=$$GET1^DIQ(2,PATDFN_",",.111)
  1. S AGSTR2=$$GET1^DIQ(2,PATDFN_",",.112)
  1. S AGSTR3=$$GET1^DIQ(2,PATDFN_",",.113)
  1. S AGCITY=$$GET1^DIQ(2,PATDFN_",",.114)
  1. S AGSTATE=$$GET1^DIQ(2,PATDFN_",",.115)
  1. I $G(AGSTATE)'="" I AGSTATE'=+AGSTATE S AGSTATE=$O(^DIC(5,"B",AGSTATE,""))
  1. S AGZIP=$$GET1^DIQ(2,PATDFN_",",.116)
  1. S AGHPHONE=$$GET1^DIQ(2,PATDFN_",",.131)
  1. ;
  1. K DIE,DIC,DR,DA,DIR
  1. S DA=ADDREC
  1. S DA(1)=PATDFN
  1. S DIE="^AUPNPAT("_DA(1)_",83,"
  1. ;I FORCE="F" S DR=".02////AGSTR1;"
  1. I FORCE="F" S DR=".02////"_AGSTR1_";"
  1. E S DR=".02///^S X=AGSTR1;"
  1. ;I FORCE="F" S DR=DR_".03////AGSTR2;"
  1. I FORCE="F" S DR=DR_".03////"_AGSTR2_";"
  1. E S DR=DR_".03///^S X=AGSTR2;"
  1. ;I FORCE="F" S DR=DR_".04////AGSTR3;"
  1. I FORCE="F" S DR=DR_".04////"_AGSTR3_";"
  1. E S DR=DR_".04///^S X=AGSTR3;"
  1. ;I FORCE="F" S DR=DR_".05////AGCITY;"
  1. I FORCE="F" S DR=DR_".05////"_AGCITY_";"
  1. E S DR=DR_".05///^S X=AGCITY;"
  1. ;I FORCE="F" S DR=DR_".06////AGSTATE;"
  1. I FORCE="F" S DR=DR_".06////"_AGSTATE_";"
  1. E S DR=DR_".06///^S X=AGSTATE;"
  1. ;I FORCE="F" S DR=DR_".07////AGZIP;"
  1. I FORCE="F" S DR=DR_".07////"_AGZIP_";"
  1. E S DR=DR_".07///^S X=AGZIP;"
  1. ;I FORCE="F" S DR=DR_".08////AGHPHONE"
  1. I FORCE="F" S DR=DR_".08////"_AGHPHONE_""
  1. E S DR=DR_".08///^S X=AGHPHONE"
  1. D ^DIE
  1. K DIE,DIC,DR,DA,DIR
  1. Q
  1. ;
  1. ;SEND ALERT MESSAGE
  1. ALERTMSG(XMDUZ,XMY,XMSUB,XMTEXT) ;EP
  1. D ^XMD
  1. I $G(XMMG)'="" W !,XMMG H 2
  1. Q
  1. WRAP(X,DIWL,DIWF) ;EP - WRAP TEXT #DEV DISPLAY
  1. K ^UTILITY($J,"W")
  1. D ^DIWP
  1. D ^DIWW
  1. Q
  1. ;IS MANDATORY SEQUENCING TURNED ON?
  1. ;FIELD ^AGFAC(D0,21)= (#2101) MANDATORY SEQUENCING IN REGISTRATION PARAMETER FILE
  1. SEQMAN(FAC) ;EP - IS MANDATORY SEQUENCING TURNED ON?
  1. Q $P($G(^AGFAC(FAC,21)),U)
  1. ;DOES THE PATIENT HAVE A SEQUENCE SET UP?
  1. PATSEQ(DFN) ;EP
  1. Q $D(^AUPNICP("C",DFN))
  1. ;DOES THE USER NEED TO SEQUENCE?
  1. NEEDTOSQ(DFN,FAC) ;EP - DOES THE USER NEED TO SEQUENCE?
  1. N TRUE
  1. S TRUE=$$SEQMAN(FAC)&('$$PATSEQ(DFN))
  1. Q TRUE
  1. ;INPUT TRANSFORM FOR E-MAIL FIELDS. CHECK FOR VALID E-MAIL ADDRESS
  1. EMAIL ;EP - CHECK FOR VALID E-MAIL ADDRESS
  1. N HOST,NAME
  1. ;CHECK FOR .EXT SHOULD BE 2 OR THREE CHARS AT THE END AFTER "."
  1. S EXTENT=$P(X,".",$L(X,"."))
  1. I $L(X)<3 K X Q ;MINIMUM IS X@X
  1. I $L(X)>65 K X Q ;TOTAL LENGTH CANNOT EXCEED 65
  1. I X'[("@") K X Q ;GENERAL PATTERN OF 'XXXX@XXXX'
  1. I $L(X,"@")'=2 K X Q ;MUST HAVE JUST ONE "@"
  1. S HOST=$P(X,"@",2)
  1. S NAME=$P(X,"@")
  1. ;NAME MUST END IN ALPHA OR NUMERIC
  1. I '($E(NAME,$L(NAME))?1A)&'($E(NAME,$L(NAME))?1N) K X Q
  1. ;HOST MUST BEGIN WITH ALPHA OR NUMERIC
  1. I '($E(HOST)?1A)&'($E(HOST)?1N) K X Q
  1. I HOST'[(".") K X Q
  1. ;THE FOLLOWING CHARACTER PAIRS ARE NOT ALLOWED
  1. I X[(".-") K X Q
  1. I X[("-.") K X Q
  1. I X[("-.") K X Q
  1. I X[("--") K X Q
  1. I X[("..") K X Q
  1. I X[("._") K X Q
  1. I X[("-_") K X Q
  1. I X[("_.") K X Q
  1. I X[("_-") K X Q
  1. I X[("__") K X Q
  1. ;THE FOLLOWING CHARACTERS ARE NOT ALLOWED
  1. I X[(",") K X Q
  1. I X[(";") K X Q
  1. I X[(":") K X Q
  1. I X[("(") K X Q
  1. I X[(")") K X Q
  1. I X[("=") K X Q
  1. I X[("+") K X Q
  1. I X[("!") K X Q
  1. I X[("<") K X Q
  1. I X[(">") K X Q
  1. I X[("?") K X Q
  1. I X[("/") K X Q
  1. I X[("\") K X Q
  1. Q
  1. VALPHONE ;EP - CHECK FOR VALID PHONE ENTRY
  1. N GOOD,EXT
  1. S GOOD=0
  1. S REGPH=X
  1. I REGPH[("EXT") S REGPH=$TR($P(REGPH,"EXT")," ") I $TR($P(X,"EXT",2)," ")="" S X=REGPH
  1. I REGPH[("ext") S REGPH=$TR($P(REGPH,"ext")," ") I $TR($P(X,"ext",2)," ")="" S X=REGPH
  1. S GOOD=REGPH?4N I GOOD Q ;extension only
  1. S GOOD=REGPH?3N1"-"4N I GOOD Q
  1. S GOOD=REGPH?3N1"-"3N1"-"4N I GOOD Q
  1. S GOOD=REGPH?1"("3N1")"3N1"-"4N I GOOD Q
  1. S GOOD=REGPH?1"("3N1")"3N1"."4N I GOOD Q
  1. S GOOD=REGPH?3N1"."4N I GOOD Q
  1. S GOOD=REGPH?3N1"."3N1"."4N I GOOD Q
  1. S GOOD=REGPH?3N1"."3N1"."4N I GOOD Q
  1. ;NO PROPER PATTERN FOUND
  1. K X
  1. Q
  1. VERIF ;EP - DO VERIFIED BY LINE
  1. I $P($G(^AUPNPAT(DFN,0)),U,12)'="",$P($G(^AUPNPAT(DFN,0)),U,3)'="" D
  1. . W !,"Last edited by: ",$P($G(^VA(200,$P($G(^AUPNPAT(DFN,0)),U,12),0)),U)," on ",$$FMTE^XLFDT($P($G(^AUPNPAT(DFN,0)),U,3),1)
  1. Q
  1. VERIF2 ;EP - DO VERIFIED BY LINE FOR INSURANCE SUMMARY SCREEN
  1. I $P($G(CATREC),U,9)'="" D
  1. . W !,"Last edited by: ",$P($G(^VA(200,$P(CATREC,U,9),0)),U)," on ",$$FMTE^XLFDT($P(CATREC,U,10),1)
  1. Q
  1. ;RTNTAG - TAG IN AGINS TO CALL. SPECIFIC TO TYPE OF INSURER
  1. ;AGINS - STANDARD AGINS ARRAY
  1. UPDTSEL(AGINS,COMPIEN,INSIEN) ;EP - UPDATE SELECTION
  1. ;S SEL=0 K AGINS ;S RTN=RTNTAG_"^AGINS(DFN)" D @RTN
  1. D ^AGINS
  1. Q:$G(COMPIEN)="" "" ;ERROR UNREPORTED BY GIMC 11/8/2005
  1. ;I $G(AGANS) D
  1. ;.;S AGSELECT=$G(AGINSNN(AGANS)) ;RESET BACK TO THE NOW UPDATED AGINSNN( ENTRY
  1. ;.;I AGSELECT="" S AGSELECT=$G(AGINSNN(AGANS,1)) ;MEDICARE
  1. ;.S AGSELECT=$G(AGINS(AGANS))
  1. ;E S AGSELECT=$$FINDNEW(.AGINSSN,COMPIEN) ;IF AGANS NOT DEFINED THEN THIS IS A NEW ENTRY
  1. ;E S AGSELECT=$$FINDNEW(.AGINS,COMPIEN)
  1. S AGSELECT=$$FINDNEW(.AGINSNN,COMPIEN,INSIEN)
  1. Q AGSELECT
  1. ;FIND NEW ENTRY IN AGINSSN BASED ON THE IEN VARIABLES
  1. ;FINDNEW(AGINSSN,COMPIEN) ;EP
  1. ;N REC,FOUND
  1. ;S REC="",FOUND=0,RETURN=""
  1. ;F S REC=$O(AGINSNN(REC)) Q:REC="" D Q:FOUND
  1. ;.I $P($G(AGINSNN(REC)),U,11)=COMPIEN S FOUND=1,RETURN=AGINSNN(REC)
  1. ;.;IF ENTRY IS MEDICARE THEN AGINSNN(1,1) OR AGINSNN(1,2) MAY EXIST
  1. ;Q RETURN
  1. FINDNEW(AGINSNN,COMPIEN,INSIEN) ;EP - AG*7.1*1 IM18549 ORIGINALLY REPORTED AS
  1. ;A PROBLEM WITH PRIVATE INSURANCE. THIS COULD HAVE BEEN A PROBLEM WITH ANY OF THE INS. GUIVEN THE
  1. ;RIGHT CONDITIONS.
  1. N REC,FOUND
  1. S REC="AGINSNN(0)",FOUND=0,RETURN=""
  1. F S REC=$Q(@REC) Q:REC="" D Q:FOUND
  1. .I $P($G(@REC),U,4)'="G" D
  1. ..I $P($G(@REC),U,11)=COMPIEN,($P($G(@REC),U,2)=INSIEN) S FOUND=1,RETURN=@REC
  1. .I $P($G(@REC),U,4)="G" D
  1. ..I $P($G(@REC),U,11)=COMPIEN,($P($G(@REC),U,2)=INSGLO_INSIEN) S FOUND=1,RETURN=@REC
  1. .;I $G(INSIEN)'="" I $P($G(AGINSNN(REC)),U,2)'=INSIEN S FOUND=0, RETURN=""
  1. Q RETURN
  1. ;DISPLAYS PROGRAMMER INFORMATION ON SCREEN. THIS IS FOR USE IN
  1. ;EDIT SCREEN ONLY AT THIS TIME
  1. PROGVIEW(DUZ,SUBS) ;EP - DISPLAYS PROGRAMMER INFORMATION ON SCREEN
  1. Q:'$D(^XUSEC("AGZPROG",DUZ))
  1. S SUBS=$G(SUBS)
  1. N AGPIECE,INDENT
  1. W !,"|--------------------PROGRAMMER INFORMATION VIEW-------------------------------|"
  1. W !,"|ED SCR RTN=",$G(ROUTID),?25,"DFN=",$G(DFN),?79,"|"
  1. W !,"|ED CHK SCR=",$G(AG("PG")),?25,"AUPNPAT=",$G(AUPNPAT),?79,"|"
  1. W !,"|"
  1. S INDENT=0
  1. I SUBS D
  1. .F AGPIECE=1:1 Q:$P(SUBS,",",AGPIECE)="" D
  1. ..W ?INDENT,"SUB"_AGPIECE_"=",$P(SUBS,",",AGPIECE)
  1. ..S INDENT=INDENT+25
  1. W ?79,"|"
  1. W !,"|------------------------------------------------------------------------------|"
  1. W !
  1. Q
  1. ;CREATE AN "EDIT" LINE SHOWING USER HOW MANY SPACES TO ENTER FOR
  1. ;A FREE TEXT FIELD
  1. NOTELINE(FIELDNUM,FILENUM,D0,LENGTH) ;EP -
  1. ;SAMPLE CALL
  1. ;W $$NOTELINE^AGUTILS(106,9000041.0101,1_","_5571_",",45)
  1. N STRING,LABEL,DATALEN
  1. S LABELLEN=$L($P($G(^DD(FILENUM,FIELDNUM,0)),U))
  1. S DATALEN=$L($$GET1^DIQ(FILENUM,D0,FIELDNUM,"E"))
  1. I DATALEN>19 Q "" ;DON'T EVEN TRY. IF ITS GRETAER THAN 19 THE "Replace" FUNCTION KICKS IN
  1. I DATALEN'=0 S DATALEN=DATALEN+2 ;IF DATA PRESENT ADD 2 FOR "//"
  1. S TOTINDEN=DATALEN+LABELLEN+2 ;ADD TWO FOR COLON AND SPACE
  1. S $P(SPACER," ",TOTINDEN+1)=""
  1. S $P(STRING,"-",LENGTH+1)=""
  1. Q SPACER_"|"_STRING_"|"
  1. ;CENTER TEXT
  1. CENTER(X) ;EP - CENTER TEXT
  1. S CENTER=IOM/2
  1. W ?CENTER-($L(X)/2),X
  1. Q
  1. ;CHECK IF 1111 FIELD CONTAINS "NON-INDIAN"
  1. ISNONIND(DFN) ;EP - CHECK IF 1111 FIELD CONTAINS "NON-INDIAN"
  1. N PTR
  1. S PTR=$P($G(^AUPNPAT(DFN,11)),U,11)
  1. Q:PTR="" 1
  1. Q $P($G(^AUTTBEN(PTR,0)),U)[("NON-INDIAN")
  1. ;ARE THERE ACTIVE POLICY MEMBERS ASSOCIATED WITH THIS POLICY HOLDER?
  1. ;ADDED TO STRENGTHEN CHANGES MADE BECAUSE OF
  1. ;BEGIN IM16640
  1. ACTPOLME(PH) ;EP - ARE THERE ACTIVE POLICY MEMBERS ASSOCIATED WITH THIS POLICY HOLDER?
  1. N PHPTR,POLMEM,PRVT0,PRVTINS,ACTIVE
  1. S POLMEM=""
  1. S ACTIVE=0
  1. F S POLMEM=$O(^AUPNPRVT("C",PH,POLMEM)) Q:POLMEM=""!(ACTIVE) D
  1. .S PRVTINS=""
  1. .F S PRVTINS=$O(^AUPNPRVT("C",PH,POLMEM,PRVTINS)) Q:PRVTINS=""!(ACTIVE) D
  1. ..S PRVT11=$G(^AUPNPRVT(POLMEM,11,PRVTINS,0))
  1. ..S POLHOLD0=$G(^AUPN3PPH(PH,0))
  1. ..S MEM=$P(POLHOLD0,U,2)
  1. ..Q:MEM=POLMEM ;IGNORE POLICY HOLDER
  1. ..S EFFDATE=$P(PRVT11,U,6)
  1. ..S ENDDATE=$P(PRVT11,U,7)
  1. ..Q:'$$ISACTIVE(EFFDATE,ENDDATE)
  1. ..;IF NOT POLICY HOLDER AND POLICY ACTIVE THEN RETURN TRUE
  1. ..S ACTIVE=1
  1. Q ACTIVE
  1. ISACTIVE(EFFDT,ENDDT) ;EP - DETERMINE WHETHER THE POLICY IS ACTIVE AS OF TODAY
  1. N OPENEND
  1. I EFFDT="",(ENDDT="") Q 0 ;NO DATES CONSIDERED INACTIVE
  1. S ENDDT=ENDDT ;TRUE IF END DATE IS AT COB OF END DATE - ANSWER FROM
  1. ;ADRIAN IS IT IS IN FORCE FOR ALL OF TODAY
  1. S OPENEND=ENDDT=""
  1. I OPENEND I DT=EFFDT!(DT>EFFDT) Q 1
  1. I DT=EFFDT!(DT=ENDDT) Q 1
  1. I DT>EFFDT&(DT<ENDDT) Q 1
  1. Q 0
  1. ;RETURNS TRUE IF THERE ARE NO ACTIVE POLICY MEMBERS BESIDES POLICY HOLDER
  1. NOPOLMEM(PH) ;EP - RETURNS TRUE IF THERE ARE NO ACTIVE POLICY MEMBERS BESIDES POLICY HOLDER
  1. N PHPTR,POLMEM,PRVT0,PRVTINS,ACTIVE
  1. S POLMEM=""
  1. S ACTIVE=0
  1. F S POLMEM=$O(^AUPNPRVT("C",PH,POLMEM)) Q:POLMEM=""!(ACTIVE) D
  1. .S PRVTINS=""
  1. .F S PRVTINS=$O(^AUPNPRVT("C",PH,POLMEM,PRVTINS)) Q:PRVTINS=""!(ACTIVE) D
  1. ..S PRVT11=$G(^AUPNPRVT(POLMEM,11,PRVTINS,0))
  1. ..S POLHOLD0=$G(^AUPN3PPH(PH,0))
  1. ..S MEM=$P(POLHOLD0,U,2)
  1. ..Q:MEM=POLMEM ;IGNORE POLICY HOLDER
  1. ..S EFFDATE=$P(PRVT11,U,6)
  1. ..S ENDDATE=$P(PRVT11,U,7)
  1. ..Q:'$$ISACTIVE(EFFDATE,ENDDATE)
  1. ..;IF NOT POLICY HOLDER AND POLICY ACTIVE THEN RETURN TRUE
  1. ..S ACTIVE=1
  1. Q 'ACTIVE
  1. ;RETURNS THE "DATE ESTABLISHED" OR "DATE OF LAST REG. UPDATE" FOR DISPLAY ON EDIT SCREENS
  1. DTEST(AGDFN) ;EP - RETURNS THE "DATE ESTABLISHED" OR "DATE OF LAST REG. UPDATE" FOR DISPLAY
  1. Q:'AGDFN ""
  1. S Y=$P($G(^AUPNPAT(AGDFN,0)),U,3) ;DATE OF LAST REG. UPDATE
  1. D DD^%DT
  1. Q:Y'="" "(upd:"_Y_")"
  1. S Y=$P($G(^AUPNPAT(AGDFN,0)),U,2)
  1. D DD^%DT
  1. Q:Y'="" "(est:"_Y_")"
  1. Q "(est:unknown)"
  1. ;
  1. ;FIND SINGLE PATIENTS WITH 'SPOUSES EMPLOYER"
  1. SPOUSE ;EP
  1. K EMPL S EMP="" F S EMP=$O(^AUPNPAT("AG",EMP)) Q:'EMP D
  1. .S DFN="" F S DFN=$O(^AUPNPAT("AG",EMP,DFN)) Q:'DFN D
  1. ..Q:$P($G(^DPT(DFN,.35)),U) Q:$P($G(^AUPNPAT(DFN,41,DUZ(2),0)),U,3)
  1. ..S MS=$$GET1^DIQ(2,DFN_",",.05,"E") Q:MS="MARRIED"
  1. ..S SPEMP=$$GET1^DIQ(9000001,DFN_",",.22,"E") S HRN=$P($G(^AUPNPAT(DFN,41,DUZ(2),0)),U,2)
  1. ..S EMPL(SPEMP)=$G(EMPL(SPEMP))+1 S EMPL(SPEMP,HRN)=""
  1. Q
  1. ;NEW SUBROUTINE IHS/SD/TPF AG*7.1*1 ITEM 18
  1. ;IS PATIENT A MINOR <18
  1. ISMINOR(DFN) ;EP - CHECK IF PATIENT IS A MINOR <18
  1. Q:'DFN 1
  1. S D0=DFN
  1. X $P($G(^DD(2,.033,0)),U,5,299) ;GET AGE
  1. Q X<$G(AGOPT("AGE OF MINOR")) ;HARD CODED PER SANDRI LAHI
  1. ;BEGIN NEW CODE IHS/SD/TPF 5/2/2006 AG*7.1*2 PAGE 12 ITEM 3
  1. AGE(AGPATDFN) ;EP - RETURN AGE
  1. S D0=DFN X $P($G(^DD(2,.033,0)),U,5,299)
  1. Q X
  1. TESTAPI ;EP -
  1. S X=$$F111^AGAPIPAT(5571,"TEST NEW ADDRESS")
  1. Q
  1. ;END NEW CODE
  1. UPPER(STR) ;EP - CHANGE LOWER TO UPPER
  1. Q $TR(STR,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. ;SUBROUTINE COPIED FROM AGED51 (WRITTEN BY GEORGE HUGGINS)
  1. USED(DFN,AGINSPTR,AGP,AGDA,AGMCDDA) ;EP - Is this Eligibility date record used in a 3P Bill or Claim?
  1. ;;@;*7
  1. ;;@;IORVON
  1. ;;WARNING :
  1. ;;@;IORVOFF
  1. ;; You have selected an Eligibility Date Record that is used
  1. ;; by
  1. ;;@;AGBILL
  1. ;; in 3PB. Modifying or deleting this Eligibility
  1. ;; Date Record will degrade the integrity of your database
  1. ;; and could adversely effect revenue recovery through 3PB!!
  1. ;;###
  1. ;
  1. NEW AGBILL,AGDUZ2,AGUSED,AG13,Y
  1. S (AGBILL,AGDUZ2,AGUSED)=0
  1. ;Check all Pt's bills.
  1. F S AGDUZ2=$O(^ABMDBILL(AGDUZ2)) Q:'AGDUZ2 D Q:AGUSED
  1. . F S AGBILL=$O(^ABMDBILL(AGDUZ2,"D",DFN,AGBILL)) Q:'AGBILL D Q:AGUSED
  1. .. I $P(^ABMDBILL(AGDUZ2,AGBILL,0),U,4)="X" Q ;Cancelled.
  1. .. S AG13=0
  1. .. F S AG13=$O(^ABMDBILL(AGDUZ2,AGBILL,13,AG13)) Q:'AG13 D Q:AGUSED
  1. ... ;Same multiple?
  1. ... ;Q:'($P(^ABMDBILL(AGDUZ2,AGBILL,13,AG13,0),U,AGP)=AGDA)
  1. ... Q:'($P($G(^ABMDBILL(AGDUZ2,AGBILL,13,AG13,0)),U,AGP)=AGDA) ;IM21932 ZERO NODE MISSING FOR INSURER
  1. ... ;If MCD, same IEN?
  1. ... I AGP=7,'($P(^ABMDBILL(AGDUZ2,AGBILL,13,AG13,0),U,6)=AGMCDDA) Q
  1. ... S AGUSED=$P(^ABMDBILL(AGDUZ2,AGBILL,0),U)_" ("_$P(^DIC(4,AGDUZ2,0),U)_")" ; Bill number (Site).
  1. ...Q
  1. ..Q
  1. .Q
  1. I AGUSED Q "Bill # "_AGUSED
  1. ;
  1. S (AGBILL,AGDUZ2,AGUSED)=0
  1. ;Check all Pt's claims.
  1. F S AGDUZ2=$O(^ABMDCLM(AGDUZ2)) Q:'AGDUZ2 D Q:AGUSED
  1. . F S AGBILL=$O(^ABMDCLM(AGDUZ2,"B",DFN,AGBILL)) Q:'AGBILL D Q:AGUSED
  1. .. S AG13=0
  1. .. F S AG13=$O(^ABMDCLM(AGDUZ2,AGBILL,13,AG13)) Q:'AG13 D Q:AGUSED
  1. ... ;Same multiple?
  1. ... ;Q:'($P(^ABMDCLM(AGDUZ2,AGBILL,13,AG13,0),U,AGP)=AGDA)
  1. ... Q:'($P($G(^ABMDCLM(AGDUZ2,AGBILL,13,AG13,0)),U,AGP)=AGDA) ;IM21932 ZERO NODE MISSING FOR INSURER
  1. ... ;If MCD, same IEN?
  1. ... I AGP=7,'($P(^ABMDCLM(AGDUZ2,AGBILL,13,AG13,0),U,6)=AGMCDDA) Q
  1. ... S AGUSED=AGBILL_" ("_$P(^DIC(4,AGDUZ2,0),U)_")" ;Claim number (Site).
  1. ...Q
  1. ..Q
  1. .Q
  1. I AGUSED Q "Claim # "_AGUSED
  1. Q ""
  1. ;
  1. ; MEDICARE MULTIPLE (NJ6,0), [0;4]
  1. ; RAILROAD MULTIPLE (NJ6,0), [0;5]
  1. ; MEDICAID ELIG POINTER (*P9000004'), [0;6]
  1. ; MEDICAID MULTIPLE (NJ4,0), [0;7]
  1. ; PRIVATE INSURANCE MULTIPLE (NJ6,0), [0;8]