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

SDPBE.m

Go to the documentation of this file.
  1. SDPBE ;BP-IOFO/OWAIN ; Pharmacy Benefits National Reporting. ; 7/23/03
  1. ;;5.3;Scheduling;**300,1015**;AUG 13, 1993;Build 21
  1. N SDSS,DFN
  1. D INIT(.SDSS)
  1. S DFN=0
  1. F S DFN=$O(^SDWL(409.3,"B",DFN)) Q:+DFN'=DFN D
  1. .N SDENCFLG,SDSEQ,SDINST,ELIGIBLE,SDDAPT
  1. .I $D(^PS(52.91,DFN,0)) Q
  1. .Q:'$$PAT(DFN)
  1. .S SDENCFLG=0 D ENC I SDENCFLG Q
  1. .K SDENCFLG
  1. .S SDSEQ=0
  1. .F S SDSEQ=$O(^SDWL(409.3,"B",DFN,SDSEQ)) Q:+SDSEQ'=SDSEQ D
  1. ..N SDPSOLES,SDPSOWT,SDWL0,SDODT,SDWLCL,SDCL,SDCP,SDDISDT,SDAPPDT,SDREQBY,SDMEDD
  1. ..S SDWL0=$G(^SDWL(409.3,SDSEQ,0))
  1. ..S SDPSOWT=$P(SDWL0,"^",5)
  1. ..;Quit-no Wait Type, check current 4 only, in case other codes are added
  1. ..I SDPSOWT'=1,SDPSOWT'=2,SDPSOWT'=3,SDPSOWT'=4 Q
  1. ..D GETCL
  1. ..;SDCL Returned for types 1,2,4 Clinic^Institution^Station
  1. ..;SDCL Returned for type 3 "VALID"^Institution^station
  1. ..I $G(SDCL)="" Q
  1. ..S SDODT=$P(SDWL0,"^",2) I 'SDODT Q
  1. ..Q:$E(SDODT,1,7)>3030724
  1. ..;I SDPSOWT=1!(SDPSOWT=2) I '$P(SDWL0,"^",2) Q
  1. ..I SDPSOWT=3!(SDPSOWT=4) I '$P(SDWL0,"^",2),'$P(SDWL0,"^",16) Q
  1. ..I SDPSOWT=1!(SDPSOWT=2) I $$FMDIFF^XLFDT(DT,$P(SDWL0,"^",2),1)'>29 Q
  1. ..I SDPSOWT=3!(SDPSOWT=4) S SDPSOLES=0 D I 'SDPSOLES Q
  1. ...I $P(SDWL0,"^",2),$$FMDIFF^XLFDT(DT,$P(SDWL0,"^",2),1)>29 S SDPSOLES=1 Q
  1. ...I $P(SDWL0,"^",16),$$FMDIFF^XLFDT(DT,$P(SDWL0,"^",16),1)>29 S SDPSOLES=1
  1. ..S SDDISDT=$P($G(^SDWL(409.3,SDSEQ,"DIS")),U)
  1. ..S SDINST=$P(SDCL,"^",2) Q:'SDINST
  1. ..I $D(ELIGIBLE(SDINST)) Q:$P(ELIGIBLE(SDINST),U,2)<SDODT
  1. ..; If disposition date is not before 9/22/2003 (or there is no disposition date) - ELIGIBLE, otherwise INELIGIBLE.
  1. ..I SDDISDT<3030922&(SDDISDT'="") Q
  1. ..S ELIGIBLE(SDINST)=1_U_SDODT_U_$P(SDWL0,U,16) ; 1^Originating date^Desired date.
  1. ..Q
  1. .S SDINST=""
  1. .F S SDINST=$O(ELIGIBLE(SDINST)) Q:SDINST="" I ELIGIBLE(SDINST) D
  1. ..I $P(ELIGIBLE(SDINST),"^",3) S ^XTMP("SDPSO145","PAT","E",DFN,SDINST,$P(ELIGIBLE(SDINST),"^",3))="" Q
  1. ..; If desired date null, use DT, set to 1 to indicate no desire date
  1. ..S ^XTMP("SDPSO145","PAT","E",DFN,SDINST,DT)=1
  1. .Q
  1. Q
  1. ;
  1. INIT(SDSS) ;
  1. N SDI,SDII
  1. ;
  1. ; Primary care stop code 404: GYNECOLOGY was added after the specification. (The 404 code has been removed)
  1. F SDI=322,323,350 F SDII="000",185,186,187 S SDSS(SDI_SDII)=""
  1. Q
  1. ;
  1. PAT(DFN) ;Evaluate a patient
  1. ;INPUT: DFN=patient ien
  1. ;OUTPUT: (fail) 0^_<reason for failure>
  1. ; (success) 1^Patient appears to be eligible
  1. ;
  1. ;N ENR
  1. Q:'$D(^DPT(DFN,0)) "0^Patient record not found"
  1. Q:+$G(^DPT(DFN,.35)) "0^Patient is deceased"
  1. Q:$P($G(^DPT(DFN,"VET")),U)'="Y" "0^Patient is not a veteran"
  1. Q:+$P($G(^DPT(DFN,.15)),U,2) "0^Patient is ineligible"
  1. Q:'$L($P($G(^DPT(DFN,0)),U)) "0^Invalid name value"
  1. Q:$D(^DPT(DFN,-9)) "0^Merged patient record"
  1. Q:$P(^DPT(DFN,0),U)["MERGING INTO" "0^Merging patient record"
  1. Q:$$TESTPAT^VADPT(DFN) "0^Test patient"
  1. ;S ENR=$$GET1^DIQ(2,DFN_",",27.01,"I") Q:ENR=""!($$GET1^DIQ(27.11,ENR_",",.01,"I")>3030829) "0^Not enrolled by date required"
  1. Q "1^Patient appears to be eligible"
  1. ;
  1. CPAIR(SDCL0) ; Get credit pair
  1. ; Input: SDCL0=hospital location zeroeth node
  1. N SDX
  1. S SDX=$P($G(^DIC(40.7,+$P(SDCL0,U,7),0)),U,2)
  1. S SDX=SDX_$P($G(^DIC(40.7,+$P(SDCL0,U,18),0)),U,2)
  1. S SDX=$E(SDX_"000000",1,6)
  1. Q SDX
  1. ;
  1. GETCL ;Get clinic info
  1. ;Need to set SDCL = Clinic IEN
  1. N SDPSONOX,SDCL0,SDWTXXX,SDPSOWLQ,SDPSOWSP,SDPSOWLA,SDPSOWL
  1. S SDCL=""
  1. I $G(SDPSOWT)=1 S SDPSONOX=0 D S:$G(SDPSONOX)&($G(SDCL)="") ^XTMP("SDPSO145","PROB1",DFN)="" Q
  1. .S SDPSOWSP=$P(SDWL0,"^",6) I 'SDPSOWSP!('$D(^SCTM(404.51,+$G(SDPSOWSP),0))) Q
  1. .S SDPSOWL="" F S SDPSOWL=$O(^SCTM(404.57,"C",SDPSOWSP,SDPSOWL)) Q:SDPSOWL="" I $P($G(^SCTM(404.57,SDPSOWL,0)),"^",9) S SDPSOWLA(+$P($G(^SCTM(404.57,SDPSOWL,0)),"^",9))=""
  1. .S SDPSOWLQ=0,SDPSOWL="" F S SDPSOWL=$O(SDPSOWLA(SDPSOWL)) Q:SDPSOWL=""!(SDPSOWLQ) D
  1. ..;Fine first clinic with valid Institution and Station Number
  1. ..D INSTA
  1. I $G(SDPSOWT)=2 D Q
  1. .N SDPSOPOS
  1. .S SDPSOPOS=$P(SDWL0,"^",7) I 'SDPSOPOS Q
  1. .S SDPSOWL=$P($G(^SCTM(404.57,SDPSOPOS,0)),"^",9) I 'SDPSOWL Q
  1. .D INSTA
  1. I $G(SDPSOWT)=3 D Q
  1. .N SDPSOWSC,SDPSOAMI,SDPSOAMX
  1. .S SDWTX=$P(SDWL0,"^",3) I 'SDWTX!('$D(^DIC(4,+$G(SDWTX),0))) Q
  1. .;D STNM I $G(SDWTXXX)="" Q
  1. .S SDPSOWSC=$P(SDWL0,"^",8) I 'SDPSOWSC Q
  1. .S SDPSOAMI=$P($G(^SDWL(409.31,SDPSOWSC,0)),"^") I 'SDPSOAMI Q
  1. .S SDPSOAMX=$P($G(^DIC(40.7,SDPSOAMI,0)),"^",2)
  1. .S SDPSOAMX=$E(SDPSOAMX_"000000",1,6)
  1. .I $D(SDSS(SDPSOAMX)) S SDCL="VALID"_"^"_SDWTX
  1. I $G(SDPSOWT)=4 D Q
  1. .N SDPSO9
  1. .S SDPSO9=$P(SDWL0,"^",9) I 'SDPSO9 Q
  1. .S SDPSOWL=$P($G(^SDWL(409.32,SDPSO9,0)),"^") I 'SDPSOWL Q
  1. .D INSTA
  1. Q
  1. INSTA ;
  1. I $G(SDPSOWL)'>0 Q
  1. N SDWTX,SDMEDDX
  1. S SDWTX=$P($G(^SC(SDPSOWL,0)),"^",4) I SDWTX>0,$D(^DIC(4,SDWTX,0)) G STNMP
  1. S SDWTX="" S SDMEDDX=$P($G(^SC(SDPSOWL,0)),"^",15) I SDMEDDX>0 S SDWTX=$P($$SITE^VASITE(,SDMEDDX),"^")
  1. I $G(SDWTX)'>0 Q
  1. I '$D(^DIC(4,SDWTX,0)) Q
  1. STNMP ;
  1. ;I $G(SDWTXXX)'="" D
  1. I $G(SDPSOWT)=1 S SDCL0=$G(^SC(SDPSOWL,0)) S SDCP=$$CPAIR(SDCL0) D STNM D K SDWTXXX Q
  1. .I $D(SDSS(SDCP)) D
  1. ..I $G(SDWTXXX)="" S SDPSONOX=1 Q
  1. ..S SDCL=SDPSOWL_"^"_SDWTX,SDPSOWLQ=1
  1. S SDCL0=$G(^SC(SDPSOWL,0)) S SDCP=$$CPAIR(SDCL0) I $D(SDSS(SDCP)) S SDCL=SDPSOWL_"^"_SDWTX
  1. Q
  1. ;I $G(SDCL) Q
  1. ;S SDMEDDX=$P($G(^SC(SDPSOWL,0)),"^",15) I SDMEDDX>0 S SDWTX=$P($$SITE^VASITE(,SDMEDDX),"^") I $G(SDWTX),$D(^DIC(4,+$G(SDWTX),0)) D STNM D Q
  1. ;.I $G(SDWTXXX)'="" D
  1. ;..I $G(SDPSOWT)=1 S SDCL0=$G(^SC(SDPSOWL,0)) S SDCP=$$CPAIR(SDCL0) D Q
  1. ;...I $D(SDSS(SDCP)) S SDCL=SDPSOWL_"^"_SDWTX_"^"_SDWTXXX,SDPSOWLQ=1
  1. ;..S SDCL0=$G(^SC(SDPSOWL,0)) S SDCP=$$CPAIR(SDCL0) I $D(SDSS(SDCP)) S SDCL=SDPSOWL_"^"_SDWTX_"^"_SDWTXXX
  1. Q
  1. STNM N SDWTXX
  1. K SDWTXX,SDWTXXX,DIC,DIQ,DD,DR S DIC=4,DR="99",DA=+SDWTX,DIQ(0)="I",DIQ="SDWTXX" D EN^DIQ1 S SDWTXXX=$G(SDWTXX(4,+SDWTX,99,"I")) K DIC,DIQ,DR,DA,SDWTXX
  1. Q
  1. ENC ;Encounter check
  1. N SDENC,SDENC1,SDENC2,SDENC3,SDENC4
  1. S SDENC=3011021.2359
  1. F S SDENC=$O(^SCE("ADFN",DFN,SDENC)) Q:'SDENC!(SDENCFLG) D
  1. .S SDENC1=0 F S SDENC1=$O(^SCE("ADFN",DFN,SDENC,SDENC1)) Q:'SDENC1!(SDENCFLG) D
  1. ..S SDENC2=$G(^SCE(SDENC1,0)) Q:'$L(SDENC2)
  1. ..Q:$P(SDENC2,"^",6)
  1. ..Q:'$P(SDENC2,"^",4)
  1. ..S SDENC3=$G(^SC(+$P(SDENC2,"^",4),0)) Q:'$L(SDENC3)
  1. ..S SDENC4=$$CPAIR(SDENC3)
  1. ..Q:'$D(SDSS(SDENC4))
  1. ..K ^XTMP("SDPSO145","PAT","E",DFN)
  1. ..K ^XTMP("SDPSO145","PAT","S",DFN) S SDENCFLG=1
  1. Q