| 1 | PSJ0742 ;BIR/JLC - Check for stop date problems ;08-MAY-02 / 10:34 AM  
 | 
|---|
| 2 |  ;;5.0; INPATIENT MEDICATIONS ;**74**;16 DEC 97
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Reference to ^DD is supported by DBIA# 10017.
 | 
|---|
| 5 |  ;Reference to ^PS(50.7 is supported by DBIA# 2180.
 | 
|---|
| 6 |  ;Reference to ^PS(52.6 is supported by DBIA# 1231.
 | 
|---|
| 7 |  ;Reference to ^PS(55 is supported by DBIA# 2191.
 | 
|---|
| 8 |  ;Reference to ^%DTC is supported by DBIA# 10000.
 | 
|---|
| 9 |  ;Reference to ^%ZTLOAD is supported by DBIA# 10063.
 | 
|---|
| 10 |  ;Reference to ^VADPT is supported by DBIA# 10061.
 | 
|---|
| 11 |  ;Reference to ^XLFDT is supported by DBIA# 10103.
 | 
|---|
| 12 |  ;Reference to ^XMD is supported by DBIA# 10070.
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 | XREFS ;
 | 
|---|
| 15 |  N PSJXD,PSJSTP
 | 
|---|
| 16 |  S PSJXD=0 F  S PSJXD=$O(^PS(55,"AUDS",PSJXD)) Q:'PSJXD  D
 | 
|---|
| 17 |  . S PSJPDFN=0
 | 
|---|
| 18 |  . F  S PSJPDFN=$O(^PS(55,"AUDS",PSJXD,PSJPDFN)) Q:'PSJPDFN  D
 | 
|---|
| 19 |  .. S PSJORD=0
 | 
|---|
| 20 |  .. F  S PSJORD=$O(^PS(55,"AUDS",PSJXD,PSJPDFN,PSJORD)) Q:'PSJORD  D
 | 
|---|
| 21 |  ... K XREF S XREF="AUDS" D CHKREF(XREF)
 | 
|---|
| 22 |  S PSJPDFN=0 F  S PSJPDFN=$O(^PS(55,PSJPDFN)) Q:'PSJPDFN  D
 | 
|---|
| 23 |  . S PSJXD=0
 | 
|---|
| 24 |  . F  S PSJXD=$O(^PS(55,PSJPDFN,5,"AUS",PSJXD)) Q:'PSJXD  D
 | 
|---|
| 25 |  .. S PSJORD=0
 | 
|---|
| 26 |  .. F  S PSJORD=$O(^PS(55,PSJPDFN,5,"AUS",PSJXD,PSJORD)) Q:'PSJORD  D
 | 
|---|
| 27 |  ... K XREF S XREF="AUS" D CHKREF(XREF)
 | 
|---|
| 28 |  S PSJPDFN=0 F  S PSJPDFN=$O(^PS(55,PSJPDFN)) Q:'PSJPDFN  D
 | 
|---|
| 29 |  . S PSJST="" F  S PSJST=$O(^PS(55,PSJPDFN,5,"AU",PSJST)) Q:PSJST=""  D
 | 
|---|
| 30 |  .. S PSJXD=0
 | 
|---|
| 31 |  .. F  S PSJXD=$O(^PS(55,PSJPDFN,5,"AU",PSJST,PSJXD)) Q:'PSJXD  D
 | 
|---|
| 32 |  ... S PSJORD=0 F  S PSJORD=$O(^PS(55,PSJPDFN,5,"AU",PSJST,PSJXD,PSJORD)) Q:'PSJORD  D
 | 
|---|
| 33 |  .... K XREF S XREF="AU" D CHKREF(XREF)
 | 
|---|
| 34 |  S PSJXD=0 F  S PSJXD=$O(^PS(55,"AUD",PSJXD)) Q:'PSJXD  D
 | 
|---|
| 35 |  . S PSJPDFN=0
 | 
|---|
| 36 |  . S PSJPDFN=$O(^PS(55,"AUD",PSJXD,PSJPDFN)) Q:'PSJPDFN  D
 | 
|---|
| 37 |  .. S PSJORD=0
 | 
|---|
| 38 |  .. F  S PSJORD=$O(^PS(55,"AUD",PSJXD,PSJPDFN,PSJORD)) Q:'PSJORD  D
 | 
|---|
| 39 |  ... K XREF S XREF="AUD" D CHKREF(XREF)
 | 
|---|
| 40 |  S PSJXD=0 F  S PSJXD=$O(^PS(55,"AIVS",PSJXD)) Q:'PSJXD  D
 | 
|---|
| 41 |  . S PSJPDFN=0
 | 
|---|
| 42 |  . F  S PSJPDFN=$O(^PS(55,"AIVS",PSJXD,PSJPDFN)) Q:'PSJPDFN  D
 | 
|---|
| 43 |  .. S PSJORD=0
 | 
|---|
| 44 |  .. F  S PSJORD=$O(^PS(55,"AIVS",PSJXD,PSJPDFN,PSJORD)) Q:'PSJORD  D
 | 
|---|
| 45 |  ... K XREF S XREF="AIVS" D CHKREF(XREF)
 | 
|---|
| 46 |  S PSJPDFN=0 F  S PSJPDFN=$O(^PS(55,PSJPDFN)) Q:'PSJPDFN  D
 | 
|---|
| 47 |  . S PSJXD=0
 | 
|---|
| 48 |  . F  S PSJXD=$O(^PS(55,PSJPDFN,"IV","AIS",PSJXD)) Q:'PSJXD  D
 | 
|---|
| 49 |  .. S PSJORD=0
 | 
|---|
| 50 |  .. F  S PSJORD=$O(^PS(55,PSJPDFN,"IV","AIS",PSJXD,PSJORD)) Q:'PSJORD  D
 | 
|---|
| 51 |  ... K XREF S XREF="AIS" D CHKREF(XREF)
 | 
|---|
| 52 |  S PSJPDFN=0 F  S PSJPDFN=$O(^PS(55,PSJPDFN)) Q:'PSJPDFN  D
 | 
|---|
| 53 |  . S PSJST=""
 | 
|---|
| 54 |  . F  S PSJST=$O(^PS(55,PSJPDFN,"IV","AIT",PSJST)) Q:PSJST=""  D
 | 
|---|
| 55 |  .. S PSJXD=0
 | 
|---|
| 56 |  .. F  S PSJXD=$O(^PS(55,PSJPDFN,"IV","AIT",PSJST,PSJXD)) Q:'PSJXD  D
 | 
|---|
| 57 |  ... S PSJORD=0
 | 
|---|
| 58 |  ... F  S PSJORD=$O(^PS(55,PSJPDFN,"IV","AIT",PSJST,PSJXD,PSJORD)) Q:'PSJORD  D
 | 
|---|
| 59 |  .... K XREF S XREF="AIT" D CHKREF(XREF)
 | 
|---|
| 60 |  S PSJXD=0 F  S PSJXD=$O(^PS(55,"AIV",PSJXD)) Q:'PSJXD  D
 | 
|---|
| 61 |  . S PSJPDFN=0
 | 
|---|
| 62 |  . F  S PSJPDFN=$O(^PS(55,"AIV",PSJXD,PSJPDFN)) Q:'PSJPDFN  D
 | 
|---|
| 63 |  .. S PSJORD=0
 | 
|---|
| 64 |  .. S PSJORD=$O(^PS(55,"AIV",PSJXD,PSJPDFN,PSJORD)) Q:'PSJORD  D
 | 
|---|
| 65 |  ... K XREF S XREF="AIV" D CHKREF(XREF)
 | 
|---|
| 66 |  D XCLEAN
 | 
|---|
| 67 |  Q
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 | CHKREF(REF) ;Check cross references
 | 
|---|
| 70 |  ; UD cross refs
 | 
|---|
| 71 |  N PSJST,DATES
 | 
|---|
| 72 |  I REF["AU" D  Q
 | 
|---|
| 73 |  . S PSJND0=$G(^PS(55,PSJPDFN,5,PSJORD,0)),PSJST=$P(PSJND0,"^",7)
 | 
|---|
| 74 |  . S PSJND2=$G(^PS(55,PSJPDFN,5,PSJORD,2))
 | 
|---|
| 75 |  . S START=$P(PSJND2,"^",2),STOP=$P(PSJND2,"^",4)
 | 
|---|
| 76 |  . I REF="AUDS" D  Q
 | 
|---|
| 77 |  .. I START,(START'=PSJXD) D
 | 
|---|
| 78 |  ... S DATES=START_"^"_STOP_"^"_PSJXD_"^^"_PSJST
 | 
|---|
| 79 |  ... S ^XTMP("PSJ XREF",REF,PSJPDFN,PSJORD,PSJXD)=DATES
 | 
|---|
| 80 |  . I STOP,(STOP'=PSJXD) S DATES=START_"^"_STOP_"^^"_PSJXD_"^"_PSJST D
 | 
|---|
| 81 |  .. S ^XTMP("PSJ XREF",REF,PSJPDFN,PSJORD,PSJXD)=DATES
 | 
|---|
| 82 |  ; IV cross refs
 | 
|---|
| 83 |  Q:REF'["AI"
 | 
|---|
| 84 |  S PSJND0=$G(^PS(55,PSJPDFN,"IV",PSJORD,0))
 | 
|---|
| 85 |  S PSJND2=$G(^PS(55,PSJPDFN,"IV",PSJORD,2))
 | 
|---|
| 86 |  S START=$P(PSJND0,"^",2),STOP=$P(PSJND0,"^",3),PSJST=$P(PSJND0,"^",4)
 | 
|---|
| 87 |  I REF="AIVS" D  Q
 | 
|---|
| 88 |  . I START,(START'=PSJXD) S DATES=START_"^"_STOP_"^"_PSJXD_"^^"_PSJST D
 | 
|---|
| 89 |  .. S ^XTMP("PSJ XREF",REF,PSJPDFN,PSJORD,PSJXD)=DATES
 | 
|---|
| 90 |  I STOP,(STOP'=PSJXD) S DATES=START_"^"_STOP_"^^"_PSJXD_"^"_PSJST D
 | 
|---|
| 91 |  . S ^XTMP("PSJ XREF",REF,PSJPDFN,PSJORD,PSJXD)=DATES
 | 
|---|
| 92 |  Q
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 | XCLEAN ;
 | 
|---|
| 95 |  N PSJPDFN,PSJORD,PSJSTP,PSJSTRT,OPSJSTRT,OPSJSTP,DATES
 | 
|---|
| 96 |  S REF="" F  S REF=$O(^XTMP("PSJ XREF",REF)) Q:REF=""  D
 | 
|---|
| 97 |  . S PSJPDFN=0
 | 
|---|
| 98 |  . F  S PSJPDFN=$O(^XTMP("PSJ XREF",REF,PSJPDFN)) Q:'PSJPDFN  D
 | 
|---|
| 99 |  .. S PSJORD=0
 | 
|---|
| 100 |  .. F  S PSJORD=$O(^XTMP("PSJ XREF",REF,PSJPDFN,PSJORD)) Q:'PSJORD  D
 | 
|---|
| 101 |  ... S PSJXD=0
 | 
|---|
| 102 |  ... F  S PSJXD=$O(^XTMP("PSJ XREF",REF,PSJPDFN,PSJORD,PSJXD)) Q:'PSJXD  D
 | 
|---|
| 103 |  .... S DATES=^(PSJXD),PSJSTRT=$P(DATES,"^"),PSJSTP=$P(DATES,"^",2)
 | 
|---|
| 104 |  .... S OPSJSTRT=$P(DATES,"^",3),OPSJSTP=$P(DATES,"^",4)
 | 
|---|
| 105 |  .... S PSJST=$P(DATES,"^",5)
 | 
|---|
| 106 |  .... D @REF
 | 
|---|
| 107 |  Q
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 | UDSTART ; UD Start Date/Time Xrefs ("AUDS")
 | 
|---|
| 110 |  Q:'PSJSTRT!($L(PSJSTRT)<5)
 | 
|---|
| 111 |  S $P(^PS(55,PSJPDFN,5,PSJORD,2),"^",2)=+PSJSTRT
 | 
|---|
| 112 | AUDS ;
 | 
|---|
| 113 |  S ^PS(55,"AUDS",+PSJSTRT,PSJPDFN,PSJORD)=""
 | 
|---|
| 114 |  Q:'$G(OPSJSTRT)
 | 
|---|
| 115 |  K ^PS(55,"AUDS",OPSJSTRT,PSJPDFN,PSJORD)
 | 
|---|
| 116 |  Q
 | 
|---|
| 117 | UDSTOP ; UD Stop Date/Time Xrefs ("AU","AUS","AUD")
 | 
|---|
| 118 |  Q:'PSJSTP!($L(PSJSTP)<5)
 | 
|---|
| 119 |  S $P(^PS(55,PSJPDFN,5,PSJORD,2),"^",4)=+PSJSTP
 | 
|---|
| 120 | AU ;         
 | 
|---|
| 121 | AUS ;
 | 
|---|
| 122 | AUD I PSJST?1.2U S ^PS(55,PSJPDFN,5,"AU",PSJST,+PSJSTP,PSJORD)=""
 | 
|---|
| 123 |  S ^PS(55,PSJPDFN,5,"AUS",+PSJSTP,PSJORD)=""
 | 
|---|
| 124 |  S ^PS(55,"AUD",+PSJSTP,PSJPDFN,PSJORD)=""
 | 
|---|
| 125 |  Q:$G(OPSJSTP)=""
 | 
|---|
| 126 |  I PSJST?1.2U K ^PS(55,PSJPDFN,5,"AU",PSJST,OPSJSTP,PSJORD)
 | 
|---|
| 127 |  K ^PS(55,PSJPDFN,5,"AUS",OPSJSTP,PSJORD)
 | 
|---|
| 128 |  K ^PS(55,"AUD",OPSJSTP,PSJPDFN,PSJORD)
 | 
|---|
| 129 |  Q
 | 
|---|
| 130 | IVSTART ; IV Start Date/Time Xrefs ("AIVS")
 | 
|---|
| 131 |  Q:'PSJSTRT!($L(PSJSTP)<5)
 | 
|---|
| 132 |  S $P(^PS(55,PSJPDFN,"IV",PSJORD,0),"^",2)=+PSJSTRT
 | 
|---|
| 133 | AIVS ;
 | 
|---|
| 134 |  S ^PS(55,"AIVS",+PSJSTRT,PSJPDFN,PSJORD)=""
 | 
|---|
| 135 |  Q:$G(OPSJSTRT)=""
 | 
|---|
| 136 |  K ^PS(55,"AIVS",OPSJSTRT,PSJPDFN,PSJORD)
 | 
|---|
| 137 |  Q
 | 
|---|
| 138 | IVSTOP ; IV Stop Date/Time Xrefs ("AIS","AIT","AIV")
 | 
|---|
| 139 |  Q:'PSJSTP!($L(PSJSTP)<5)
 | 
|---|
| 140 |  S $P(^PS(55,PSJPDFN,"IV",PSJORD,0),"^",3)=+PSJSTP
 | 
|---|
| 141 | AIT ;
 | 
|---|
| 142 | AIS ;
 | 
|---|
| 143 | AIV I PSJST?1.2U S ^PS(55,PSJPDFN,"IV","AIT",PSJST,+PSJSTP,PSJORD)=""
 | 
|---|
| 144 |  S ^PS(55,PSJPDFN,"IV","AIS",+PSJSTP,PSJORD)=""
 | 
|---|
| 145 |  S ^PS(55,"AIV",+PSJSTP,PSJPDFN,PSJORD)=""
 | 
|---|
| 146 |  I PSJST?1.2U S ^PS(55,PSJPDFN,"IV","AIT",PSJST,+PSJSTP,PSJORD)=""
 | 
|---|
| 147 |  Q:$G(OPSJSTP)=""
 | 
|---|
| 148 |  I PSJST?1.2U K ^PS(55,PSJPDFN,"IV","AIT",PSJST,OPSJSTP,PSJORD)
 | 
|---|
| 149 |  K ^PS(55,PSJPDFN,"IV","AIS",OPSJSTP,PSJORD)
 | 
|---|
| 150 |  K ^PS(55,"AIV",OPSJSTP,PSJPDFN,PSJORD)
 | 
|---|
| 151 |  Q
 | 
|---|