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

AGINSUPD.m

Go to the documentation of this file.
  1. AGINSUPD ; IHS/ITSC/TPF - UPDATE SELECTION VARIABLE AFTER SCREEN FIELD IS EDITED ;
  1. ;;7.1;PATIENT REGISTRATION;;AUG 25,2005
  1. ;THESE TAGS ARE CALLED FROM SCREEN EDIT ROUTINES WHICH NEED TO
  1. ;UPDATE THE 'SELECTION' VARIABLE FOR THE ITEM BEING EDITED
  1. ;
  1. FINDMCR(AGSELECT) ;EP
  1. N TEMPDFN,MCRDATA,SUBSCRIP,SUF,POL,POLNUM,AGD1,MCRELIG,EFF,END,INS,COV,PHPTR,PH
  1. S SUBSCRIP=$P(AGSELECT,U,11)
  1. S TEMPDFN=$P(SUBSCRIP,",")
  1. Q:$G(TEMPDFN)="" ;IF NO DFN NO ENTRY CAN BE FOUND AT ALL
  1. S AGD1=$P(SUBSCRIP,",",3)
  1. S:AGD1="" AGD1=$O(^AUPNMCR(TEMPDFN,11,0))
  1. S RECPTR=TEMPDFN_",11,"_AGD1_","_0
  1. S MCRDATA=$G(^AUPNMCR(TEMPDFN,0))
  1. S PCP=$P(MCRDATA,U,14)
  1. S (INSPTR,INS)=""
  1. S INSPTR=$P(MCRDATA,U,2)
  1. S:INSPTR'="" INS=$P($G(^AUTNINS(INSPTR,0)),U)
  1. S TYPE="R"
  1. S SUFPTR=$P(MCRDATA,U,4)
  1. S SUF=$S($G(SUFPTR)="":"",1:$P(^AUTTMCS(SUFPTR,0),U))
  1. S POL=$P(MCRDATA,U,3)
  1. S:POL'="" POLNUM=POL_SUF
  1. S PHPTR="M"_TEMPDFN
  1. S PH=$P($G(^AUPNMCR(TEMPDFN,21)),U)
  1. S MCRELIG=$S($G(AGD1)="":"",1:$G(^AUPNMCR(TEMPDFN,11,AGD1,0)))
  1. S EFF=$S(MCRELIG="":"",1:$P(MCRELIG,U))
  1. S END=$S(MCRELIG="":"",1:$P(MCRELIG,U,2))
  1. S ISACTIVE=$$ISACTIVE(EFF,END)
  1. S COVPTR=""
  1. S COV=$S(MCRELIG="":"",1:$P(MCRELIG,U,3))
  1. D LOAD
  1. Q AGSELECT
  1. FINDMCD(AGSELECT) ;EP
  1. N MCDPTR,MCDSTR,INSPTR,INS,COVPTR,COV,POL,PHPTR,PHSTR,PH,AGD1,MCDELIG,EFF,END,PLANPTR
  1. N PCP,GRPNAME,PLANNAME,MCDRATE,POLNUM
  1. S SUBSCRIP=$P(AGSELECT,U,11)
  1. S MCDPTR=$P(SUBSCRIP,",")
  1. S AGD1=$P(SUBSCRIP,",",3)
  1. S:AGD1="" AGD1=$O(^AUPNMCD(MCDPTR,11,0))
  1. S MCDSTR=$G(^AUPNMCD(MCDPTR,0))
  1. S PLANPTR=$P(MCDSTR,U,10)
  1. S PLANNAME=PLANPTR
  1. S INSPTR=$P(MCDSTR,U,2)
  1. S MCDRATE=$P(MCDSTR,U,11)
  1. S PCP=$P(MCDSTR,U,14)
  1. S GRPNAME=$P(MCDSTR,U,17)
  1. S:GRPNAME'="" GRPNUMB=$P($G(^AUTNEGRP(GRPNAME,0)),U,2)
  1. I $P(MCDSTR,U,10)'="" D
  1. . S INS=$P(^AUTNINS(INSPTR,0),U)
  1. . S TYPE="D"
  1. I $P(MCDSTR,U,10)="" S INS="MEDICAID",INSPTR=$P(MCDSTR,U,2),TYPE="D"
  1. I $P(MCDSTR,U,3)="" S POLNUM=""
  1. I $P(MCDSTR,U,3)'="" S POLNUM=$P(MCDSTR,U,3)
  1. I $D(^AUPNMCD(MCDPTR,21)) D
  1. . I $P(^AUPNMCD(MCDPTR,21),U)'="" S PH=$P(^AUPNMCD(MCDPTR,21),U)
  1. . I $P(^AUPNMCD(MCDPTR,21),U)="" S PH=""
  1. I '$D(^AUPNMCD(MCDPTR,21)) S PH=""
  1. S PHPTR="D"_MCDPTR
  1. S MCDELIG=$S($G(AGD1)'="":$G(^AUPNMCD(MCDPTR,11,AGD1,0)),1:"")
  1. S RECPTR=MCDPTR_",11,"_AGD1_","_0
  1. S EFF=$P(MCDELIG,U)
  1. S END=$P(MCDELIG,U,2)
  1. S ISACTIVE=$$ISACTIVE(EFF,END)
  1. S COVPTR=""
  1. I $P(MCDELIG,U,3)'="" S COV=$P(MCDELIG,U,3)
  1. I $P(MCDELIG,U,3)="" S COV=""
  1. D LOAD
  1. Q AGSELECT
  1. FINDRRE(AGSELECT) ;EP
  1. N TEMPDFN,SUBSCRIP,RREDATA,PRE,POL,POLNUM,AGD1,RREELIG,EFF,END,PHPTR,PH,POLNUM,COV,PCP,PLANNAME
  1. S SUBSCRIP=$P(AGSELECT,U,11)
  1. S TEMPDFN=$P(SUBSCRIP,",")
  1. Q:$G(TEMPDFN)="" ;IF NO DFN NO ENTRY CAN BE FOUND AT ALL
  1. S RREDATA=$G(^AUPNRRE(TEMPDFN,0))
  1. S AGD1=$P(SUBSCRIP,",",3)
  1. S:AGD1="" AGD1=$O(^AUPNRRE(TEMPDFN,11,0))
  1. S PCP=$P(RREDATA,U,14)
  1. S (INSPTR,INS)=""
  1. S INSPTR=$P(RREDATA,U,2)
  1. S:INSPTR'="" INS=$P($G(^AUTNINS(INSPTR,0)),U)
  1. S TYPE="R"
  1. S PRE=""
  1. S PREPTR=$P(RREDATA,U,3)
  1. S:PREPTR'="" PRE=$P(^AUTTRRP(PREPTR,0),U)
  1. S POL=$P(RREDATA,U,4)
  1. S:POL'="" POLNUM=PRE_POL
  1. S PHPTR="R"_TEMPDFN
  1. S PH=$P($G(^AUPNRRE(TEMPDFN,21)),U)
  1. S RREELIG=$S($G(AGD1)'="":$G(^AUPNRRE(TEMPDFN,11,AGD1,0)),1:"")
  1. S RECPTR=TEMPDFN_",11,"_AGD1_","_0
  1. S EFF=$P(RREELIG,U)
  1. S END=$P(RREELIG,U,2)
  1. S ISACTIVE=$$ISACTIVE(EFF,END)
  1. S PLANNAME=$P(RREELIG,U,4)
  1. S COVPTR=""
  1. S COV=$P(RREELIG,U,3)
  1. D LOAD
  1. Q AGSELECT
  1. FINDPVT(AGSELECT) ;EP
  1. N PHPTR,PH,COVPTR,COV,POLNUM,PLANPTR,GRPNUMB,GRPNAME,PLANNAME,AGD1,PVTSTR,INS,PHREC,PHPAT,EFF,END
  1. S SUBSCRIP=$P(AGSELECT,U,11)
  1. S AGD1=$P(SUBSCRIP,",",3)
  1. S TEMPDFN=$P(SUBSCRIP,",")
  1. Q:$G(TEMPDFN)="" ;IF NO DFN NO ENTRY CAN BE FOUND AT ALL
  1. S:AGD1="" AGD1=$O(^AUPNPRVT(TEMPDFN,11,0))
  1. S PVTSTR=$G(^AUPNPRVT(TEMPDFN,11,AGD1,0))
  1. S RECPTR=TEMPDFN_",11,"_AGD1_","_0
  1. S INSPTR=$P(PVTSTR,U)
  1. S RELPOLHO=$P(PVTSTR,U,5)
  1. S INS=$S($G(INSPTR)'="":$P($G(^AUTNINS(INSPTR,0)),U),1:"")
  1. S TYPE="P"
  1. S PHPTR=TYPE_$S($G(AGD1)'="":$P($G(^AUPNPRVT(TEMPDFN,11,AGD1,0)),U,8),1:"")
  1. I $E($G(PHPTR),2,10)'="" D
  1. . S PHREC=$G(^AUPN3PPH($E(PHPTR,2,10),0))
  1. . S GRPNUMB=$P($G(^AUPN3PPH($E(PHPTR,2,9),0)),U,6)
  1. . S GRPNAME=$S(GRPNUMB="":"",1:$P($G(^AUTNEGRP(GRPNUMB,0)),U))
  1. . S INSGEND=$P(PHREC,U,8)
  1. . S PH=$P(PHREC,U)
  1. . S (COVPTR,COV)=$P(PHREC,U,5)
  1. . I COVPTR'="" D
  1. .. S COV=$P(^AUTTPIC(COVPTR,0),U)
  1. .. ;GET THE MOST CURRENT DATE IN AFFECT BY TAKING TODAYS DATE AND GOING BACK ONE
  1. .. S DATEINEF=DT+.01,DATEINEF=$O(^AUTTPIC(COVPTR,19,"B",DATEINEF),-1)
  1. .. I DATEINEF="" S (OPCOPAY,COINS,FAMDEDUC,INDDEDUC)="" Q
  1. .. S DATEINEF=$O(^AUTTPIC(COVPTR,19,"B",DATEINEF,""))
  1. .. S OPCOPAY=$P($G(^AUTTPIC(COVPTR,19,DATEINEF,0)),U,2)
  1. .. S OPCOINS=$P($G(^AUTTPIC(COVPTR,19,DATEINEF,0)),U,3)
  1. .. S FAMDEDUC=$P($G(^AUTTPIC(COVPTR,19,DATEINEF,0)),U,11)
  1. .. S INDDEDUC=$P($G(^AUTTPIC(COVPTR,19,DATEINEF,0)),U,12)
  1. . S POLNUM=$P(PHREC,U,4)
  1. E D
  1. .S (PHREC,GRPNUMB,GRPNAME,PH,COVPTR,COV,POLNUM)=""
  1. I $G(PVTSTR)'="" S EFF=$P(PVTSTR,U,6),END=$P(PVTSTR,U,7)
  1. E S (EFF,END)=""
  1. S ISACTIVE=$$ISACTIVE(EFF,END)
  1. D LOAD
  1. Q AGSELECT
  1. FINDTPL(AGSELECT) ;EP
  1. N TEMPDFN
  1. S (PHPTR,PH,COVPTR,COV,POLNUM,INS,INSPTR,EFF,END,RECPTR,PLANPTR,GRPNAME,GRPNUMB)=""
  1. S SUBSCRIP=$P(AGSELECT,U,11)
  1. S TEMPDFN=$P(SUBSCRIP,",")
  1. Q:$G(TEMPDFN)="" ;IF NO DFN NO ENTRY CAN BE FOUND AT ALL
  1. S AGTPLDT=$P(SUBSCRIP,",",2)
  1. S:AGTPLDT="" AGTPLDT=$O(^AUPNTPL(TEMPDFN,1,0))
  1. S AGDATA0=$S(AGTPLDT="":"",1:$G(^AUPNTPL(TEMPDFN,1,AGTPLDT,0)))
  1. S AGDATA1=$S(AGTPLDT="":"",1:$G(^AUPNTPL(TEMPDFN,1,AGTPLDT,1)))
  1. S GRPNAME=$P(AGDATA0,U,6)
  1. S GRPNUMB=$S(GRPNAME="":"",1:$P($G(^AUTNEGRP(GRPNAME,0)),U,2))
  1. S RECPTR=TEMPDFN_","_AGTPLDT
  1. S INSPTR=$P(AGDATA0,U,2)
  1. S EFF=$P(AGDATA0,U,4)
  1. S END=$P(AGDATA0,U,5)
  1. S ISACTIVE=$$ISACTIVE(EFF,END)
  1. S POLNUM=$P(AGDATA0,U,3)
  1. S PH=$P(AGDATA1,U)
  1. S INS=$S(INSPTR'="":$P($G(^AUTNINS(INSPTR,0)),U),1:"UNDEFINED")
  1. S (COV,TYPE)="T"
  1. D LOAD
  1. K AGTPLDT,AGDATA0,AGDATA1,PHPTR,PH,COVPTR,COV,POLNUM,INS,INSPTR,EFF,END,RECPTR,PLANPTR,GRPNAME,GRPNUMB
  1. Q AGSELECT
  1. FINDWC(AGSELECT) ;EP
  1. N PHPTR,PH,COVPTR,COV,POLNUM,INS,INSPTR,EFF,END,RECPTR,PLANPTR,GRPNAME,GRPNUMB,SUBSCRIP
  1. S SUBSCRIP=$P(AGSELECT,U,11)
  1. S TEMPDFN=$P(SUBSCRIP,",")
  1. Q:$G(TEMPDFN)="" ;IF NO DFN NO ENTRY CAN BE FOUND AT ALL
  1. S AGWCDT=$P(SUBSCRIP,",",2)
  1. S:AGWCDT="" AGWCDT=$O(^AUPNWC(TEMPDFN,11,0))
  1. I '$D(^AUPNWC(TEMPDFN,11,AGWCDT)) S AGWCDT=$O(^AUPNWC(TEMPDFN,11,AGWCDT,0))
  1. S AGDATA0=$S($G(AGWCDT)="":"",1:$G(^AUPNWC(TEMPDFN,11,AGWCDT,0)))
  1. S AGDATA1=$S($G(AGWCDT)="":"",1:$G(^AUPNWC(TEMPDFN,11,AGWCDT,1)))
  1. S RECPTR=TEMPDFN_","_AGWCDT
  1. S GRPNAME=$P(AGDATA0,U,11)
  1. S GRPNUMB=$S(GRPNAME="":"",1:$P($G(^AUTNEGRP(GRPNAME,0)),U,2))
  1. S ENTITY=$P(AGDATA0,U,10),INSPTR=ENTITY
  1. S EFF=$P(AGDATA0,U,12)
  1. S END=$P(AGDATA0,U,13)
  1. S ISACTIVE=$$ISACTIVE(EFF,END)
  1. S POLNUM=$P(AGDATA0,U,4)
  1. S PH=$P(AGDATA0,U,6)
  1. S INS=$S(ENTITY'="":$P($G(^AUTNINS(ENTITY,0)),U),1:"UNDEFINED")
  1. S (COV,TYPE)="W"
  1. D LOAD
  1. Q AGSELECT
  1. FINDGUAR(AGSELECT) ;EP
  1. N PHPTR,PH,COVPTR,COV,POLNUM,INS,INSPTR,EFF,END,RECPTR,PLANPTR,INSGLORF,TEMPDFN
  1. S SUBSCRIP=$P(AGSELECT,U,11)
  1. S TEMPDFN=$P(SUBSCRIP,",")
  1. S AGGUAR=$P(SUBSCRIP,",",2)
  1. S AGGUARDT=$P(SUBSCRIP,",",3)
  1. S:AGGUARDT="" AGGUARDT=$O(^AUPNGUAR(TEMPDFN,1,AGGUAR,11,0))
  1. I '$D(^AUPNGUAR(TEMPDFN,1,AGGUAR,11,AGGUARDT)) S AGGUARDT=$O(^AUPNGUAR(TEMPDFN,1,AGGUAR,11,0))
  1. S POLNUM=$S($G(AGGUAR)="":"",1:$P($G(^AUPNGUAR(TEMPDFN,1,AGGUAR,0)),U,3))
  1. S RECPTR=TEMPDFN_","_AGGUAR_","_AGGUARDT
  1. S INSPTR=$S($G(AGGUAR)="":"",1:$P($P($G(^AUPNGUAR(TEMPDFN,1,AGGUAR,0)),U),";")_",0)")
  1. S INSGLO=$S($G(AGGUAR)="":"",1:U_$P($P($G(^AUPNGUAR(TEMPDFN,1,AGGUAR,0)),U),";",2))
  1. S INSGLORF=INSGLO_INSPTR
  1. S INS=$P(@INSGLORF,U)
  1. I INSGLORF[("AUPNPAT") D
  1. .S GSTREET=$S($G(INS)="":"",1:$P($G(^DPT(INS,.11)),U))
  1. .S GCITY=$S($G(INS)="":"",1:$P($G(^DPT(INS,.11)),U,4))
  1. .S GSTATE=$S($G(INS)="":"",1:$P($G(^DPT(INS,.11)),U,5))
  1. .S GZIP=$S($G(INS)="":"",1:$P($G(^DPT(INS,.11)),U,6))
  1. .S INS=$S($G(INS)="":"",1:$P($G(^DPT(INS,0)),U))
  1. E D
  1. .S GSTREET=$P($G(@INSGLORF),U,2)
  1. .S GCITY=$P($G(@INSGLORF),U,3)
  1. .S GSTATE=$P($G(@INSGLORF),U,4)
  1. .S GZIP=$P($G(@INSGLORF),U,5)
  1. S INSGLORF=$TR(INSGLORF,U)
  1. I $G(AGGUAR)'="",($G(AGGUARDT)'="") S EFF=$P($G(^AUPNGUAR(TEMPDFN,1,AGGUAR,11,AGGUARDT,0)),U),END=$P($G(^AUPNGUAR(TEMPDFN,1,AGGUAR,11,AGGUARDT,0)),U,2)
  1. E S (EFF,END)=""
  1. S ISACTIVE=$$ISACTIVE(EFF,END)
  1. S (COV,TYPE)="G"
  1. D LOAD
  1. Q AGSELECT
  1. ISACTIVE(EFFDT,ENDDT) ;EP - IS THE POLICY ACTIVE AS OF TODAY
  1. NEW OPENEND
  1. I EFFDT="",(ENDDT="") Q 0 ;NO DATES CONSIDERED INACTIVE
  1. S ENDDT=ENDDT ;TRUE IF ENDING DATE IS AT COB OF ENDING DATE - ANSWER FROM ADRIAN IS IT IS
  1. ; 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. LOAD ;LOAD SELECTION VARIABLE WITH CURRENT ELIGIBILITY DATA
  1. S AGSELECT=$G(INS)_U_$G(INSPTR)_U_$G(COVPTR)_U_$G(COV)_U_$G(EFF)_U_$G(END)_U_$G(PHPTR)_U_$G(PH)_U_$G(POLNUM)_U_$G(TYPE)_U_$G(RECPTR)_U_$G(PLANPTR)_U_$G(ISACTIVE)_U_$G(INSGLORF)_U_$G(MCDRATE)_U_$G(RELPOLHO)
  1. S AGSELECT=AGSELECT_U_$G(PCP)_U_$G(PLANNAME)_U_$G(GRPNAME)_U_$G(GRPNUMB)_U_$G(GSTREET)_U_$G(GCITY)_U_$G(GSTATE)_U_$G(GZIP)_U_$G(INSGEND)_U_$G(OPCOPAY)_U_$G(OPCOINS)_U_$G(FAMDEDUC)_U_$G(INDDEDUC)
  1. Q