| 1 | SCCVEAP1 ;ALB/RMO,TMP - Appointment Conversion cont.; [ 04/05/95  10:19 AM ] | 
|---|
| 2 | ;;5.3;Scheduling;**211**;Aug 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | CON(SCCVEVT,DFN,SCDTM) ; Should conversion event be processed for appointment | 
|---|
| 5 | ; Input  -- SCCVEVT  Conversion event | 
|---|
| 6 | ;           DFN      Patient IEN | 
|---|
| 7 | ;           SCDTM    Appointment date/time | 
|---|
| 8 | ; | 
|---|
| 9 | ; Output -- 1=Yes and 0=No | 
|---|
| 10 | ; | 
|---|
| 11 | N SCECSTAT,Y,SCOE,SCAPT0 | 
|---|
| 12 | S SCAPT0=$G(^DPT(DFN,"S",SCDTM,0)) | 
|---|
| 13 | S SCOE=+$P(SCAPT0,U,20) | 
|---|
| 14 | S SCECSTAT=$P(SCAPT0,U,23) | 
|---|
| 15 | ; | 
|---|
| 16 | S Y=1 | 
|---|
| 17 | IF Y,$P(SCDTM,".")>SCCVACRP S Y=0 ; Greater than ACRP date | 
|---|
| 18 | IF SCCVEVT=1,SCECSTAT S Y=0       ; Convert/already converted | 
|---|
| 19 | IF Y,SCCVEVT=2,'SCECSTAT S Y=0    ; Re-convert/never converted | 
|---|
| 20 | IF Y,'SCCVEVT,SCECSTAT S Y=0      ; Estimate/already converted | 
|---|
| 21 | ; | 
|---|
| 22 | ; -- if check out required then must have a co completion date/time | 
|---|
| 23 | IF Y,$$REQ^SDM1A(SCDTM)="CO",'$P($G(^SCE(SCOE,0)),U,7) S Y=0 | 
|---|
| 24 | ; | 
|---|
| 25 | ; -- following is commented out ; left for reference purposes | 
|---|
| 26 | ; -- if no enc and no ^sc appt node (purged) then don't convert | 
|---|
| 27 | ;IF Y,'SCOE,'$$FIND^SDAM2(DFN,SCDTM,+SCAPT0) S Y=0 | 
|---|
| 28 | Q +$G(Y) | 
|---|
| 29 | ; | 
|---|
| 30 | EN(SCCVEVT,DFN,SCDTM,SCCLN,SCDA,SCLOG) ; Entry point to convert an appointment | 
|---|
| 31 | ; Input  -- SCCVEVT  Conversion event | 
|---|
| 32 | ;                    0=Estimate   1=Convert   2=Re-convert | 
|---|
| 33 | ;           DFN      Patient IEN | 
|---|
| 34 | ;           SCDTM    Appointment date/time | 
|---|
| 35 | ;           SCCLN    Clinic IEN | 
|---|
| 36 | ;           SCDA     Clinic appt patient sub-file IEN [optional] | 
|---|
| 37 | ;           SCLOG    Scheduling conversion log IEN    [optional] | 
|---|
| 38 | ; | 
|---|
| 39 | N SCCV,SCOE,SCCONS,SCEST | 
|---|
| 40 | ; | 
|---|
| 41 | S SCCONS("SRCE")="SD TO PCE DB CONV" | 
|---|
| 42 | S SCCONS("PKG")=$O(^DIC(9.4,"C","SD",0)) | 
|---|
| 43 | ; | 
|---|
| 44 | ; Check if appointment should be processed | 
|---|
| 45 | IF '$$CON(SCCVEVT,DFN,SCDTM) G ENQ | 
|---|
| 46 | ; | 
|---|
| 47 | ; Set-up conversion array and variables | 
|---|
| 48 | D SET^SCCVEAP3(SCCVEVT,+$G(SCLOG),DFN,SCDTM,SCCLN,.SCDA,.SCOE,.SCCV) | 
|---|
| 49 | ; | 
|---|
| 50 | I 'SCCVEVT,$G(SCCV("ERR")) G ENQ ; if error found - ignore for estimate | 
|---|
| 51 | ; | 
|---|
| 52 | ; Don't process no new enctr or visit needed & no error to log | 
|---|
| 53 | I '$G(SCCV("NEW")),'$D(SCCV("ERR")) G ENQ | 
|---|
| 54 | ; | 
|---|
| 55 | ; -- saved for reference | 
|---|
| 56 | ; I $S('SCCVEVT:'$G(SCCV("NEW")),'$G(SCCV("NEW")):'$D(SCCV("ERR")),1:0) G ENQ | 
|---|
| 57 | ; | 
|---|
| 58 | ; Increment number of appointments found (estimating only) | 
|---|
| 59 | I 'SCCVEVT D | 
|---|
| 60 | . D INCRTOT^SCCVEGU1(.SCTOT,3,1) | 
|---|
| 61 | . D EN^SCCVZZ("APPT-3",SCOE,SCDTM,$P($G(SCCV("PT",0)),U),+$P($G(SCCV("OE",0)),U,6)) | 
|---|
| 62 | ; | 
|---|
| 63 | ; Log error if there is no encounter or visit/exit if no encounter | 
|---|
| 64 | I SCCVEVT,$S('$G(SCOE):1,1:'$P($G(SCCV("OE",0)),U,5)) D  G:'$G(SCOE) ENQ | 
|---|
| 65 | . N SCE,SCERRIP,Y | 
|---|
| 66 | . S SCERRIP(1)=$P($G(^DPT(DFN,0)),U) | 
|---|
| 67 | . S Y=SCDTM D D^DIQ S SCERRIP(2)=Y | 
|---|
| 68 | . S SCERRIP(3)=$P($G(^SC(SCCLN,0)),U) | 
|---|
| 69 | . S SCERRIP(4)=$S('$G(SCOE):"Outpatient encounter",1:"Visit") | 
|---|
| 70 | . S SCERRIP(5)=$$OTHERR^SCCVU2($G(SCCV("ERR"))) | 
|---|
| 71 | . S SCE("DFN")=DFN,SCE("ENC")=$G(SCOE),SCE("VSIT")="",SCE("DATE")=SCDTM | 
|---|
| 72 | . D GETERR^SCCVLOG1(4049005.002,.SCE,.SCERRIP,$G(SCLOG),0,.SCERRMSG) | 
|---|
| 73 | . S SCTOT(2.06)=$G(SCTOT(2.06))+1 | 
|---|
| 74 | . S:$G(SCOE) ^XTMP("SCCV-ERR-"_+$G(SCLOG),"NO-VIS",SCOE)="" | 
|---|
| 75 | ; | 
|---|
| 76 | G:$G(SCCV("ERR")) ENQ | 
|---|
| 77 | ; | 
|---|
| 78 | ; Create stop codes, visit for ancillary tests | 
|---|
| 79 | D ANC^SCCVEAP2($G(SCOE),DFN,SCDTM,SCCLN,.SCCV,$G(SCLOG)) | 
|---|
| 80 | ; | 
|---|
| 81 | ; Convert children | 
|---|
| 82 | D CHLD^SCCVEAP2(SCOE,.SCCV,$G(SCLOG)) | 
|---|
| 83 | ; | 
|---|
| 84 | ; Invoke DATA-TO-PCE call, store any errors | 
|---|
| 85 | I $S('SCCVEVT:1,1:$P($G(^SCE(SCOE,0)),U,5)) D DATA2PCE^SCCVPCE(SCOE,.SCCONS,SCCVEVT,$G(SCOEP),"","",.SCEST) | 
|---|
| 86 | ; | 
|---|
| 87 | I 'SCCVEVT D  G ENQ ;Estimate exits here | 
|---|
| 88 | .F Z=1:1:3 I $P(SCEST,U,Z) D INCRTOT^SCCVEGU1(.SCTOT,Z+8,$P(SCEST,U,Z)) D EN^SCCVZZ("APPT-"_(Z+8),SCOE,SCDTM,$P($G(SCCV("PT",0)),U),+$P($G(SCCV("OE",0)),U,6),$P(SCEST,U,Z)) | 
|---|
| 89 | ; | 
|---|
| 90 | ; Convert additional appt data | 
|---|
| 91 | D ENC(SCOE,.SCCV) | 
|---|
| 92 | ; | 
|---|
| 93 | ; Update appointment as converted | 
|---|
| 94 | D DONE(DFN,SCDTM,1) | 
|---|
| 95 | ; | 
|---|
| 96 | ; Update last entry and number of records | 
|---|
| 97 | I $G(SCLOG) D UPDREC^SCCVLOG(SCLOG,SCOE,"CST") | 
|---|
| 98 | I '$G(SCLOG) S SCTOT("OK")=1 | 
|---|
| 99 | ; | 
|---|
| 100 | ENQ Q | 
|---|
| 101 | ; | 
|---|
| 102 | ENC(SCOE,SCCV) ; Update additional appt data for encounter | 
|---|
| 103 | ; Input  -- SCOE     Outpatient encounter IEN | 
|---|
| 104 | ;           SCCV     Conversion array | 
|---|
| 105 | ; Output -- None | 
|---|
| 106 | N SCDATA,SCOEC | 
|---|
| 107 | I $G(SCCV("VST")),'$P(^SCE(SCOE,0),U,5) S SCDATA(.05)=SCCV("VST") | 
|---|
| 108 | S:$G(SCCV("NEW"))=1 SCDATA(901)=1 ; Created by conversion | 
|---|
| 109 | ; | 
|---|
| 110 | I $G(SCCV("HIST")) D  ; Stop code created historically | 
|---|
| 111 | . I '$P($G(^SCE(SCOE,"CNV")),U,3),$P($G(^(0)),U,3) S SCDATA(903)=1 | 
|---|
| 112 | . Q:'$O(^SCE("APAR",SCOE,0)) | 
|---|
| 113 | . S SCOEC=0 F  S SCOEC=$O(^SCE("APAR",SCOE,SCOEC)) Q:'SCOEC  S SCOEC(SCOEC)="" | 
|---|
| 114 | ; | 
|---|
| 115 | I $P($G(^SCE(SCOE,0)),U,5) D ENCCNV(.SCDATA) | 
|---|
| 116 | I $D(SCDATA) D UPD^SCCVDBU(409.68,SCOE,.SCDATA) ;Update parent | 
|---|
| 117 | ; | 
|---|
| 118 | I $O(SCOEC(0)) D  ; update children of encounter | 
|---|
| 119 | . N SCDATC | 
|---|
| 120 | . S SCOEC=0 | 
|---|
| 121 | . F  S SCOEC=$O(SCOEC(SCOEC)) Q:'SCOEC  D | 
|---|
| 122 | .. N SCDATC | 
|---|
| 123 | .. I '$G(^SCE(SCOEC,"CNV")),$G(SCCV("NEW"))=1 S SCDATC(901)=1 | 
|---|
| 124 | .. I $P($G(^SCE(SCOEC,0)),U,3),'$P($G(^("CNV")),U,3) S SCDATC(903)=1 | 
|---|
| 125 | .. I $P($G(^SCE(SCOEC,0)),U,5) D ENCCNV(.SCDATC) | 
|---|
| 126 | .. I $D(SCDATC) D UPD^SCCVDBU(409.68,SCOEC,.SCDATC) | 
|---|
| 127 | ; | 
|---|
| 128 | ENCQ Q | 
|---|
| 129 | ; | 
|---|
| 130 | DONE(DFN,SCDTM,SCECSTAT) ; Update appointment encounter conversion status | 
|---|
| 131 | ; Input  -- DFN      Patient IEN | 
|---|
| 132 | ;           SCDTM    Appointment date/time | 
|---|
| 133 | ;           SCECSTAT Encounter conversion status | 
|---|
| 134 | ; Output -- None | 
|---|
| 135 | N SCDATA,SCIENS | 
|---|
| 136 | S SCIENS=SCDTM_","_DFN | 
|---|
| 137 | S:'$P($G(^DPT(DFN,"S",SCDTM,0)),U,23) SCDATA(23.1)=SCECSTAT ; encounter conversion status | 
|---|
| 138 | I $D(SCDATA) D UPD^SCCVDBU(2.98,SCIENS,.SCDATA) | 
|---|
| 139 | Q | 
|---|
| 140 | ; | 
|---|
| 141 | ENCCNV(DATA) ; Set nodes to update 'conversion processed' fields in encounter | 
|---|
| 142 | S DATA(904)=1,DATA(905)=+$E($$NOW^XLFDT(),1,12) | 
|---|
| 143 | I $G(SCCV("NEW"))=2 S DATA(101)=$G(DUZ),DATA(102)=DATA(905) | 
|---|
| 144 | Q | 
|---|
| 145 | ; | 
|---|