| 1 | SCCVEAP2 ;ALB/RMO,TMP - Appointment Conversion cont.; [ 04/05/95  10:19 AM ] | 
|---|
| 2 | ;;5.3;Scheduling;**211**;Aug 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | VISIT(SCDTM,SCCV) ;Create visit when encounter already exists | 
|---|
| 5 | ; Input  -- SCDTM    Appointment date/time | 
|---|
| 6 | ;           SCCV     Conversion array | 
|---|
| 7 | ; Output -- Visit file IEN | 
|---|
| 8 | N SCVSIT,SCDATA,SCCVT,SCOE | 
|---|
| 9 | IF '$G(SCCV("OE",0)) G VISITQ | 
|---|
| 10 | S SCOE=$G(SCCV("OE")) | 
|---|
| 11 | S SCVSIT("DFN")=$P(SCCV("OE",0),U,2) | 
|---|
| 12 | IF 'SCVSIT("DFN") G VISITQ | 
|---|
| 13 | ; | 
|---|
| 14 | S SCVSIT("CLN")=$S('$G(SCCV("CSC")):$P(SCCV("OE",0),U,3),1:SCCV("CSC")) | 
|---|
| 15 | ; | 
|---|
| 16 | S SCVSIT("DIV")=$P(SCCV("OE",0),U,11) | 
|---|
| 17 | S SCVSIT("ELG")=$P(SCCV("OE",0),U,13) | 
|---|
| 18 | S SCVSIT("LOC")=$P(SCCV("OE",0),U,4) | 
|---|
| 19 | S SCVSIT("TYP")=$P(SCCV("OE",0),U,10) | 
|---|
| 20 | S SCVSIT("STA")=$P(SCCV("OE",0),U,12) | 
|---|
| 21 | S SCVSIT("ORG")=$G(SCCV("ORG")) | 
|---|
| 22 | ; | 
|---|
| 23 | D SETSCCVT(.SCCVT,.SCCONS) | 
|---|
| 24 | IF $G(SCCV("PAR")) S SCVSIT("PAR")=SCCV("PAR") | 
|---|
| 25 | ; | 
|---|
| 26 | ; -- use parent's visit if a/e, location same, clinic stop same | 
|---|
| 27 | IF $G(SCVSIT("PAR")),SCVSIT("ORG")=2 D | 
|---|
| 28 | . N SCOEP0 | 
|---|
| 29 | . S SCOEP0=$G(^SCE(SCVSIT("PAR"),0)) | 
|---|
| 30 | . IF $P(SCOEP0,U,5),SCVSIT("LOC")=$P(SCOEP0,U,4),SCVSIT("CLN")=$P(SCOEP0,U,3) S SCVSIT("VST")=$P(SCOEP0,U,5) | 
|---|
| 31 | ; | 
|---|
| 32 | IF '$G(SCVSIT("VST")) D VISIT^SDVSIT0(SCDTM,.SCVSIT) | 
|---|
| 33 | ; | 
|---|
| 34 | IF $G(SCVSIT("VST")) S SCTOT(1.02)=$G(SCTOT(1.02))+1 | 
|---|
| 35 | ; | 
|---|
| 36 | IF $G(SCVSIT("VST")),'$P(SCCV("OE",0),U,5) D | 
|---|
| 37 | . ; -- fix invalid date/time of a/e to sync w/visit | 
|---|
| 38 | . IF SCVSIT("ORG")=2,+SCCV("OE",0)'=SCDTM S SCDATA(.01)=SCDTM | 
|---|
| 39 | . S SCDATA(.05)=SCVSIT("VST") | 
|---|
| 40 | . D UPD^SCCVDBU(409.68,SCOE,.SCDATA) | 
|---|
| 41 | ; | 
|---|
| 42 | S SCCV("OE",0)=$G(^SCE(SCOE,0)) | 
|---|
| 43 | S SCCV("VST")=$G(SCVSIT("VST")) | 
|---|
| 44 | ; | 
|---|
| 45 | VISITQ Q $G(SCVSIT("VST")) | 
|---|
| 46 | ; | 
|---|
| 47 | ANC(SCOEP,DFN,SCDTM,SCCLN,SCCV,SCLOG) ;Create stp code enctr/visit for ancillary tests | 
|---|
| 48 | ; Input  -- SCOEP    Parent encounter (if known) | 
|---|
| 49 | ;           DFN      Patient IEN | 
|---|
| 50 | ;           SCDTM    Appointment date/time | 
|---|
| 51 | ;           SCCLN    Clinic IEN | 
|---|
| 52 | ;           SCCV     Conversion array | 
|---|
| 53 | ;           SCLOG    Scheduling conversion log IEN [optional] | 
|---|
| 54 | ; Output -- None | 
|---|
| 55 | N SCANC,SCOE,SCSCD,SCSCDI,SCVSIT,SCT,SCADD | 
|---|
| 56 | I $G(SCCV("PT",0))=""!$S(SCCV("EVT"):$G(SCCV("OE",0))="",1:0) G ANCQ | 
|---|
| 57 | I $P(SCCV("PT",0),U,3)'="" S SCANC(108)=$P(SCCV("PT",0),U,3) ; lab | 
|---|
| 58 | I $P(SCCV("PT",0),U,4)'="" S SCANC(105)=$P(SCCV("PT",0),U,4) ; x-ray | 
|---|
| 59 | I $P(SCCV("PT",0),U,5)'="" S SCANC(107)=$P(SCCV("PT",0),U,5) ; ekg | 
|---|
| 60 | S SCSCD="" | 
|---|
| 61 | F  S SCSCD=$O(SCANC(SCSCD)) Q:'SCSCD  D | 
|---|
| 62 | . S SCSCDI=+$O(^DIC(40.7,"C",SCSCD,0)) | 
|---|
| 63 | . ; | 
|---|
| 64 | . S SCADD=$$CHK(DFN,SCDTM,SCCLN,.SCCV,SCSCDI,.SCOE) | 
|---|
| 65 | . I SCADD D | 
|---|
| 66 | . . ;Increment number of ancillaries found (estimating only) | 
|---|
| 67 | . . S SCVSIT("DFN")=DFN | 
|---|
| 68 | . . I 'SCCVEVT D  Q | 
|---|
| 69 | . . . F SCT=2,SCADD+6 D | 
|---|
| 70 | . . . . N DFN | 
|---|
| 71 | . . . . D INCRTOT^SCCVEGU1(.SCTOT,SCT,1),EN^SCCVZZ("AE-"_SCT,SCOE,SCANC(SCSCD),$P($G(SCCV("PT",0)),U),+$G(SCOEP),SCVSIT("DFN")) | 
|---|
| 72 | . . ; | 
|---|
| 73 | . . I SCADD=1 D | 
|---|
| 74 | . . . S SCVSIT("CLN")=SCSCDI | 
|---|
| 75 | . . . S SCVSIT("DIV")=$P(SCCV("OE",0),U,11) | 
|---|
| 76 | . . . S SCVSIT("ELG")=$P(SCCV("OE",0),U,13) | 
|---|
| 77 | . . . S SCVSIT("LOC")=SCCLN | 
|---|
| 78 | . . . S SCVSIT("TYP")=$P(SCCV("OE",0),U,10) | 
|---|
| 79 | . . . S SCVSIT("PAR")=$G(SCOEP) | 
|---|
| 80 | . . . S SCVSIT("ORG")=2,SCVSIT("REF")="" | 
|---|
| 81 | . . . D SETSCCVT(.SCCVT,.SCCONS) | 
|---|
| 82 | . . . S SCOE=$$SDOE^SDVSIT(SCANC(SCSCD),.SCVSIT,"",$G(SCOEP)) | 
|---|
| 83 | . . . I '$G(SCVSIT("VST")) D  Q | 
|---|
| 84 | . . . . D CREATERR^SCCVLOG1(DFN,SCDTM,SCOE,2,SCCLN,SCSCD,$G(SCLOG)) | 
|---|
| 85 | . . . . S:$G(SCOE) ^XTMP("SCCV-ERR-"_+SCLOG,"NO-VIS",SCOE)="" | 
|---|
| 86 | . . . . S SCTOT(2.06)=$G(SCTOT(2.06))+1 | 
|---|
| 87 | . . . Q:'SCOE | 
|---|
| 88 | . . . S SCTOT(1.02)=$G(SCTOT(1.02))+1 | 
|---|
| 89 | . . . N SCCVX | 
|---|
| 90 | . . . S SCCVX("HIST")=0 | 
|---|
| 91 | . . . S SCCVX("NEW")=1 | 
|---|
| 92 | . . . D ENC^SCCVEAP1(SCOE,.SCCVX) | 
|---|
| 93 | . . ; | 
|---|
| 94 | . . I SCADD=2,SCOE D | 
|---|
| 95 | . . . N SCCVX,SCCVY | 
|---|
| 96 | . . . S SCCVY("OE")=SCOE | 
|---|
| 97 | . . . S SCCVY("OE",0)=$G(^SCE(SCOE,0)) | 
|---|
| 98 | . . . S SCCVY("PAR")=$P(SCCVY("OE",0),U,6) | 
|---|
| 99 | . . . S SCCVY("ORG")=2 | 
|---|
| 100 | . . . S SCVSIT("VST")=$$VISIT(+SCCVY("OE",0),.SCCVY) ; create visit | 
|---|
| 101 | . . . I 'SCVSIT("VST") D  Q | 
|---|
| 102 | . . . . D CREATERR^SCCVLOG1(DFN,+SCCVY("OE",0),SCOE,2,$P(SCCVY("OE",0),U,4),SCSCD,$G(SCLOG)) | 
|---|
| 103 | . . . . S ^XTMP("SCCV-ERR-"_+SCLOG,"NO-VIS",SCOE)="" | 
|---|
| 104 | . . . . S SCTOT(2.06)=$G(SCTOT(2.06))+1 | 
|---|
| 105 | . . . N SCCVX | 
|---|
| 106 | . . . S SCCVX("VST")=SCVSIT("VST") D ENC^SCCVEAP1(SCOE,.SCCVX) | 
|---|
| 107 | ; | 
|---|
| 108 | ANCQ Q | 
|---|
| 109 | ; | 
|---|
| 110 | CHK(DFN,SCDTM,SCCLN,SCCV,SCSCDI,SCOE) ;Check if stop code should be added for ancillary test | 
|---|
| 111 | ; Input  -- DFN      Patient IEN | 
|---|
| 112 | ;           SCDTM    Appointment date/time | 
|---|
| 113 | ;           SCCLN    Clinic IEN | 
|---|
| 114 | ;           SCCV     Conversion array | 
|---|
| 115 | ;           SCSCDI   Clinic Stop Code IEN | 
|---|
| 116 | ; Output -- 1=Add enctr and visit  2=Add only visit and  0=No,don't add | 
|---|
| 117 | ;           SCOE     IEN of the encounter for the anc test | 
|---|
| 118 | N Y,SCAEDTM,SCDA,SCOEC,SCOE00,SDQ | 
|---|
| 119 | S Y=1,SCOE="" | 
|---|
| 120 | ; | 
|---|
| 121 | I $P($G(^SC(SCCLN,0)),U,17)="Y" S Y=0 G CHKQ ; non-count clinic | 
|---|
| 122 | ; | 
|---|
| 123 | ; The following line is commented out because although it would be a valid check, it is much too tight and thus inconsistent with the rest of the conversion | 
|---|
| 124 | ;I $$REQ^SDM1A(SCDTM)="CO",'$P($G(SCCV("PT",0)),U,7) S Y=0 G CHKQ ; check out required but no checkout date, don't process | 
|---|
| 125 | ; | 
|---|
| 126 | S (SCOEC,SDQ)=0 | 
|---|
| 127 | F  S SCOEC=$O(^SCE("APAR",+$G(SCOEP),SCOEC)) Q:'SCOEC  D  Q:SDQ | 
|---|
| 128 | . S SCOE00=$G(^SCE(SCOEC,0)) | 
|---|
| 129 | . I $P(SCOE00,U,3)=SCSCDI D | 
|---|
| 130 | . . S SDQ=1 | 
|---|
| 131 | . . I 'SCCVEVT,$P(SCOE00,U,8)=2 S Y=0 Q  ;Will be counted with add/edits | 
|---|
| 132 | . . I SCCVEVT<2 D  Q  ;Estimate/convert | 
|---|
| 133 | . . . I $P(SCOE00,U,5) S Y=0 Q  ;Already added | 
|---|
| 134 | . . . S Y=2,SCOE=SCOEC ;Add visit only | 
|---|
| 135 | . . I SCCVEVT=2 D  Q  ;Re-convert | 
|---|
| 136 | . . . D RECNVT^SCCVEAP3(SCOEC,SCOE00,.SCCONS) | 
|---|
| 137 | . . . I $D(^SCE(SCOEC,0)) S Y=2,SCOE=SCOEC Q  ;Re-add visit only | 
|---|
| 138 | . . . S Y=1 ;Re-add visit and encounter | 
|---|
| 139 | ; | 
|---|
| 140 | CHKQ Q $G(Y) | 
|---|
| 141 | ; | 
|---|
| 142 | CHLD(SCOEP,SCCV,SCLOG) ;Convert children | 
|---|
| 143 | ; Input  -- SCOEP    Parent outpatient encounter IEN | 
|---|
| 144 | ;           SCCV     Conversion array | 
|---|
| 145 | ;           SCLOG    Scheduling conversion log IEN   [optional] | 
|---|
| 146 | ; Output -- None | 
|---|
| 147 | N SCERRMSG,SCOE0,SCOEC,SCX,SDVIEN | 
|---|
| 148 | S SCOEC=0 | 
|---|
| 149 | F  S SCOEC=$O(^SCE("APAR",SCOEP,SCOEC)) Q:'SCOEC  D | 
|---|
| 150 | . S SCOE0=$G(^SCE(SCOEC,0)) | 
|---|
| 151 | . S SDVIEN=$$SDVIEN^SCCVU(+$P(SCOE0,U,2),+SCOE0) | 
|---|
| 152 | . I 'SCCV("EVT"),$P(SCOE0,U,9) D  Q:'SCX | 
|---|
| 153 | . . F SCX=1:1:$L($P(SCOE0,U,9),":") I $P($G(^SDV(SDVIEN,"CS",+$P($P(SCOE0,U,9),":",SCX),0)),U,8)=SCOEC S SCX=0 Q  ;When estimating, these should be counted in the add/edit loop | 
|---|
| 154 | . I $P(SCOE0,U,8)=2,$P(SCOE0,U,9),'$P(SCOE0,U,5) D  ;convert child add/edit | 
|---|
| 155 | . . ;There should be only 1 ":" piece before 10/1/96, but this was | 
|---|
| 156 | . . ; included in the case of bad data | 
|---|
| 157 | . . F SCX=1:1:$L($P(SCOE0,U,9),":") D EN^SCCVEAE1(SCCV("EVT"),SDVIEN,+$P($P(SCOE0,U,9),":",SCX),SCOEP,$G(SCLOG)) | 
|---|
| 158 | Q | 
|---|
| 159 | ; | 
|---|
| 160 | SETSCCVT(SCCVT,SCCONS) ; Set the SCCVT array for source and service type | 
|---|
| 161 | S SCCVT("SOR")=SCCONS("SRCE") | 
|---|
| 162 | S SCCVT("SVC")="E" | 
|---|
| 163 | I $G(SCCV("ORG"))=3,$G(SCCV("LOC")) S SCCVT("LOC")=SCCV("LOC") | 
|---|
| 164 | Q | 
|---|
| 165 | ; | 
|---|