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

ORAM3.m

Go to the documentation of this file.
  1. ORAM3 ;POR/RSF - ANTICOAGULATION MANAGEMENT RPCS (4 of 4) ;12/09/09 14:44
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**307**;Dec 17, 1997;Build 60
  1. ;;Per VHA Directive 2004-038, this routine should not be modified
  1. Q
  1. ;
  1. PTADR(RESULT,ORAMDFN) ;GET PT ADDRESS
  1. ;;CALLED BY ORAM3 ADDRESS
  1. N ORAMADD,ORAMADD2,ORAMADD3,ORAMCITY,ORAMCODE,ORAMST,ORAMZIP,ORAMBAD,ORAMT
  1. S ORAMT=.11,ORAMST="",ORAMBAD=0
  1. I '$G(ORAMDFN) S RESULT="NONE" Q
  1. I $$TMPCHK(ORAMDFN)=1 S ORAMT=.121
  1. S ORAMADD=$P($G(^DPT(ORAMDFN,ORAMT)),"^"),ORAMADD2=$P($G(^DPT(ORAMDFN,ORAMT)),"^",2),ORAMADD3=$P($G(^DPT(ORAMDFN,ORAMT)),"^",3)
  1. S ORAMCITY=$P($G(^DPT(ORAMDFN,ORAMT)),"^",4),ORAMCODE=$P($G(^DPT(ORAMDFN,ORAMT)),"^",5),ORAMZIP=$P($G(^DPT(ORAMDFN,ORAMT)),"^",6),ORAMBAD=$P($G(^DPT(ORAMDFN,.11)),"^",16)
  1. I ORAMCODE S ORAMST=$P($G(^DIC(5,$G(ORAMCODE),0)),"^",2)
  1. S:$G(ORAMBAD)="" ORAMBAD=0
  1. S RESULT=ORAMADD_"^"_ORAMADD2_"^"_ORAMADD3_"^"_ORAMCITY_"^"_ORAMST_"^"_ORAMZIP_"^"_$G(ORAMBAD)_"^"_$G(ORAMT)
  1. Q
  1. ;
  1. PTFONE(RESULT,ORAMDFN) ;GET PT PHONE NUMBERS
  1. ;;RPC=ORAM3 PHONE
  1. ;;RESULT=HOMEPHONE^WORKPHONE^CELLNUMBER^PAGER^EMAIL
  1. N ORAMF1,ORAMF2,ORAMFC,ORAMP,ORAMEM,ORAMT S ORAMT=0
  1. I '$G(ORAMDFN) S RESULT="NONE" Q
  1. I $$TMPCHK(ORAMDFN)=1 S ORAMT=1
  1. I ORAMT=0 D
  1. . S ORAMF1=$P($G(^DPT(ORAMDFN,.13)),"^"),ORAMF2=$P($G(^DPT(ORAMDFN,.13)),"^",2)
  1. . S ORAMFC=$P($G(^DPT(ORAMDFN,.13)),"^",4),ORAMP=$P($G(^DPT(ORAMDFN,.13)),"^",5),ORAMEM=$P($G(^DPT(ORAMDFN,.13)),"^",3)
  1. I ORAMT=1 D
  1. . S ORAMF1=$P($G(^DPT(ORAMDFN,.121)),"^",10),ORAMF2=$P($G(^DPT(ORAMDFN,.13)),"^",2)
  1. . S ORAMFC=$P($G(^DPT(ORAMDFN,.13)),"^",4),ORAMP=$P($G(^DPT(ORAMDFN,.13)),"^",5),ORAMEM=$P($G(^DPT(ORAMDFN,.13)),"^",3)
  1. S RESULT=$G(ORAMF1)_"^"_$G(ORAMF2)_"^"_$G(ORAMFC)_"^"_$G(ORAMP)_"^"_$G(ORAMEM)_"^"_$G(ORAMT)
  1. Q
  1. ;
  1. TMPCHK(ORAMDFN) ;
  1. ;;
  1. N ORAMTMP S ORAMTMP=0
  1. I $D(^DPT(ORAMDFN,.121)),$P(^DPT(ORAMDFN,.121),"^",9)="Y" D
  1. . Q:$P(^DPT(ORAMDFN,.121),"^",7)>DT ;START DATE
  1. . I $P(^DPT(ORAMDFN,.121),"^",8)'="" Q:DT>$P(^DPT(ORAMDFN,.121),"^",8) ;END DATE
  1. . S ORAMTMP=1
  1. Q ORAMTMP
  1. ;RSF 10/08/08 CHANGE TO CODE DUE TO NEWLY DISCOVERED PROBLEM WITH 'COMPLICATIONS'
  1. COMPENT(RESULT,ORAMDFN,ORAMDUZ,ORAMC,ORAMCT,ORAMD2) ;
  1. ;RPC=ORAM3 COMPLICATION
  1. Q:'+$G(ORAMDFN)
  1. Q:'$G(ORAMDUZ)
  1. Q:'+$G(ORAMC)
  1. Q:$G(ORAMD2)=""
  1. N ORAMD3,ORAMX D DT^DILF(,ORAMD2,.ORAMX) S ORAMD3=ORAMX
  1. N ORAMNOW,ORAMDAY,X,% D NOW^%DTC S ORAMNOW=%,ORAMDAY=X
  1. N ORAMNX S ORAMNX=$O(^ORAM(103,ORAMDFN,3," "),-1)+1
  1. N ORAMC2,ORAMLLOC,ORAMPS,ORAMDD,ORAMTWD,ORAML,OERR
  1. I '$G(ORAMNX) S ORAMNX=1
  1. I ORAMNX>1 D
  1. . S ORAML=ORAMNX-1,ORAMLLOC=$P(^ORAM(103,ORAMDFN,3,ORAML,0),"^",4),ORAMPS=$P(^(0),"^",5),ORAMTWD=$P(^(0),"^",6),ORAMDD=$P(^(0),"^",7)
  1. I ORAMC>99 S ORAMC2=2 ;CLOT in the 100 range...I P1>100,P1#100>0 S P1=3 Q
  1. I ORAMC#10>0 S ORAMC2=1 ;MAJOR BLEED I P1>99 S P1=2 Q
  1. I ORAMC=10 S ORAMC2=3 ;MINOR BLEED
  1. N DA,IENS,ORAMRSF,ORAMF
  1. S IENS="+1,"_ORAMDFN_","
  1. S DA=ORAMNX,DA(1)=ORAMDFN
  1. S ORAMRSF(103.011,IENS,.01)=ORAMD3 ;COMPLICATION DATE
  1. S ORAMRSF(103.011,IENS,30)=ORAMLLOC ;LAB DRAW LOC
  1. S ORAMRSF(103.011,IENS,40)=ORAMPS ;PILL STRENGTH
  1. S ORAMRSF(103.011,IENS,50)=ORAMTWD ;TOTAL WEEK DOSE
  1. S ORAMRSF(103.011,IENS,60)=ORAMDD ;DAILY DOSING
  1. S ORAMRSF(103.011,IENS,80)=ORAMNOW
  1. S ORAMRSF(103.011,IENS,90)=ORAMDUZ ;PROVIDER
  1. S ORAMRSF(103.011,IENS,104)=ORAMC2 ;COMPLICATION CODE
  1. K ORAMF
  1. S ORAMF(ORAMNX)=DA
  1. K OERR
  1. D UPDATE^DIE("","ORAMRSF","ORAMF","OERR")
  1. S ^ORAM(103,ORAMDFN,3,ORAMNX,2,1,0)=ORAMD2
  1. I $L(ORAMCT,"^")>0 N ORAMCC F ORAMCC=1:1:$L(ORAMCT,"^") D S ^ORAM(103,ORAMDFN,3,ORAMNX,2,0)="^^"_ORAMCC_"^"_ORAMCC_"^"_ORAMDAY_"^"
  1. . S ^ORAM(103,ORAMDFN,3,ORAMNX,2,ORAMCC+1,0)=$P(ORAMCT,"^",ORAMCC)
  1. S RESULT=1
  1. Q
  1. ;
  1. TLISTS ; Erases and sets Team Lists for Anticoagulation Clinics
  1. ; Option: ORAM SET TEAMS
  1. N ORAMLIST ;ARRAYS OF TEAMS
  1. D FTL(.ORAMLIST)
  1. I '$D(ORAMLIST) Q ;No lists defined
  1. D ETEAM(.ORAMLIST) ;ERASE ALL TEAM LISTS
  1. D MTEAM(.ORAMLIST) ;FORM TODAY'S TEAM LISTS
  1. Q
  1. ;
  1. FTL(ORAMLIST) ;FIND TEAM LISTS CALLED FROM TLISTS
  1. ;
  1. N ORAMI,ORAMCLST S ORAMI=0
  1. D GETCLINS^ORAMSET(.ORAMCLST)
  1. I +$G(ORAMCLST(0))'>0 Q ;Site not SET UP
  1. ; Loop through Clinics, get team lists for each
  1. F S ORAMI=$O(ORAMCLST(ORAMI)) Q:+ORAMI'>0 D
  1. . N ORAMCL,ORAMALL,ORAMCPLX
  1. . S ORAMCL=$P($G(ORAMCLST(ORAMI)),U,2) Q:+ORAMCL'>0
  1. . S ORAMALL=$$GET^XPAR(ORAMCL,"ORAM TEAM LIST (ALL)",1,"I")
  1. . S:ORAMALL]"" ORAMLIST(ORAMCL,"ALL")=ORAMALL
  1. . S ORAMCPLX=$$GET^XPAR(ORAMCL,"ORAM TEAM LIST (COMPLEX)",1,"I")
  1. . S:ORAMCPLX]"" ORAMLIST(ORAMCL,"COMPLEX")=ORAMCPLX
  1. Q
  1. ;
  1. ETEAM(ORAMLIST) ; Remove all Anticoagulation Patients from their respective lists
  1. ; called from TLISTS
  1. N ORAMI S ORAMI=""
  1. F S ORAMI=$O(ORAMLIST(ORAMI)) Q:ORAMI']"" D
  1. . N ORAML S ORAML=""
  1. . F S ORAML=$O(ORAMLIST(ORAMI,ORAML)) Q:ORAML']"" D
  1. . . N DO,DA,DIK
  1. . . S DA(1)=ORAMLIST(ORAMI,ORAML),DIK="^OR(100.21"_","_DA(1)_",10,"
  1. . . S DA=0 F S DA=$O(^OR(100.21,DA(1),10,DA)) Q:+DA'>0 D
  1. . . . D ^DIK
  1. Q
  1. ;
  1. MTEAM(ORAMLIST) ; Build Today's Team Lists
  1. ; CALLED FROM TLISTS
  1. N ORAMCL S ORAMCL=""
  1. ; Loop through ORAMLIST by clinic location
  1. F S ORAMCL=$O(ORAMLIST(ORAMCL)) Q:ORAMCL']"" D
  1. . N ORAMCN,ORAMCA,ORAMCC,ORAMDFN
  1. . S ORAMCN=+ORAMCL ; Pointer to file 44
  1. . S ORAMCA=$G(ORAMLIST(ORAMCL,"ALL")) ; Pointer to "All" List
  1. . S ORAMCC=$G(ORAMLIST(ORAMCL,"COMPLEX")) ; Pointer to "Complex" List
  1. . ; Loop through Anticoagulation Patients by location
  1. . S ORAMDFN=0
  1. . F S ORAMDFN=$O(^ORAM(103,"CL",ORAMCN,ORAMDFN)) Q:+ORAMDFN'>0 D
  1. . . N ORAMD0,ORAMRDT,ORAMCPLX,ORAMNDCB,ORAMAXDT
  1. . . S ORAMD0=$G(^ORAM(103,ORAMDFN,0))
  1. . . S ORAMRDT=$P(ORAMD0,U,4) ; Pt's Return Date
  1. . . S ORAMAXDT=DT_".2359" ; Upper bound for return date range
  1. . . S ORAMCPLX=$P(ORAMD0,U,10) ; Pt's Complexity
  1. . . S ORAMNDCB=$P(ORAMD0,U,20) ; Next Day Callback
  1. . . ; if next day callback, increment return date, disregard time
  1. . . I +ORAMNDCB S ORAMRDT=$$FMADD^XLFDT($P(ORAMRDT,"."),1)
  1. . . ; if future return date or pt inactive, quit to next pt
  1. . . I (ORAMRDT>ORAMAXDT)!(ORAMCPLX=2) Q
  1. . . ; otherwise, add pt to appropriate list(s) for location
  1. . . D ADDLIST(ORAMDFN,ORAMCA) ; All active pts on "ALL" List
  1. . . I ORAMCPLX=1 D ADDLIST(ORAMDFN,ORAMCC) ; Complex pts also on "COMPLEX" List
  1. Q
  1. ADDLIST(ORAMDFN,ORAMLDA) ; Add pt to Team List / Assure record is UNLOCKED
  1. N DIC,DA,DO,X,ORAMLR
  1. S X=ORAMDFN_";DPT("
  1. S DA(1)=ORAMLDA,DIC="^OR(100.21"_","_DA(1)_",10,",DIC(0)="L" D FILE^DICN
  1. D UNLOCK^ORAM1(.ORAMLR,ORAMDFN)
  1. Q