| 1 | SCCVEAE1 ;ALB/RMO,TMP - Add/Edit Conversion cont.; [ 04/05/95  8:46 AM ] | 
|---|
| 2 | ;;5.3;Scheduling;**211**;Aug 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | CON(SCCVEVT,SCDTM,SCVALDT,SCDA) ;Should conversion event be processed for add/edit | 
|---|
| 5 | ; Input  -- SCCVEVT  Conversion event | 
|---|
| 6 | ;           SCDTM    Visit date/time | 
|---|
| 7 | ;           SCVALDT  Valid converted Visit date/time (SCDTM) | 
|---|
| 8 | ;           SCDA     Clinic stop code sub-file IEN | 
|---|
| 9 | ; Output -- 1=Yes and 0=No | 
|---|
| 10 | ; | 
|---|
| 11 | N SC0,SCECSTAT,Y,SCOE,SCSTOP,SCLN,DFN | 
|---|
| 12 | S DFN=+$P($G(^SDV(SCDTM,0)),U,2) | 
|---|
| 13 | S SC0=$G(^SDV(SCDTM,"CS",SCDA,0)) | 
|---|
| 14 | S SCSTOP=+SC0 | 
|---|
| 15 | S SCLN=+$P(SC0,U,3) | 
|---|
| 16 | S SCOE=+$P(SC0,U,8) | 
|---|
| 17 | S SCECSTAT=$P(SC0,U,9) | 
|---|
| 18 | ; | 
|---|
| 19 | ; -- do checks | 
|---|
| 20 | S Y=1 | 
|---|
| 21 | IF Y,$P(SCVALDT,".")>SCCVACRP S Y=0 ; Greater than ACRP date | 
|---|
| 22 | IF Y,SCCVEVT=1,SCECSTAT S Y=0       ; Convert/already converted | 
|---|
| 23 | IF Y,SCCVEVT=2,'SCECSTAT S Y=0      ; Re-convert/never converted | 
|---|
| 24 | IF Y,'SCCVEVT,SCECSTAT S Y=0        ; Estimate/already converted | 
|---|
| 25 | ; | 
|---|
| 26 | ; -- if check out required then must have a co completion date/time | 
|---|
| 27 | IF Y,$$REQ^SDM1A(SCDTM)="CO",'$P($G(^SCE(SCOE,0)),U,7) S Y=0 | 
|---|
| 28 | ; | 
|---|
| 29 | ; -- if a/e for 900 stop, same clinic, no enounter | 
|---|
| 30 | ;    and lower "CS" ien then current then don't convert | 
|---|
| 31 | IF Y,SCCV900=SCSTOP,SCLN D | 
|---|
| 32 | . N SCS,SCS0 | 
|---|
| 33 | . S SCS=0 | 
|---|
| 34 | . F  S SCS=$O(^SDV(SCDTM,"CS",SCS)) Q:'SCS!(SCS=SCDA)  S SCS0=$G(^(SCS,0)) IF +SCS0=SCCV900,+$P(SCS0,U,3)=SCLN,'$P(SCS0,U,8) S Y=0 Q | 
|---|
| 35 | ; | 
|---|
| 36 | ; -- if not a 900, did stop get added via appts? if so, don't convert. | 
|---|
| 37 | IF Y,SCCV900'=SCSTOP D | 
|---|
| 38 | . N SCAP,SCAP0,SCEND | 
|---|
| 39 | . S SCAP=$P(SCDTM,"."),SCEND=SCAP+.24 | 
|---|
| 40 | . F  S SCAP=$O(^DPT(DFN,"S",SCAP)) Q:'SCAP!(SCAP>SCEND)  S SCAP0=$G(^(SCAP,0)) D  Q:'Y | 
|---|
| 41 | . . ; -- must be valid made appt | 
|---|
| 42 | . . IF $P(SCAP0,U,2)'="",$P(SCAP0,U,2)'="I" Q | 
|---|
| 43 | . . ; -- if clinic specified then appt must be for same clinic | 
|---|
| 44 | . . IF SCLN,SCLN'=+SCAP0 Q | 
|---|
| 45 | . . ; -- if enc exists & c/o, compare enc stop code with sdv stop code | 
|---|
| 46 | . . IF $P(SCAP0,U,20) D  Q | 
|---|
| 47 | . . . IF $P($G(^SCE($P(SCAP0,U,20),0)),U,3)=SCSTOP,$P($G(^SCE($P(SCAP0,U,20),0)),U,7) S Y=0 | 
|---|
| 48 | . . ; -- compare clinic's stop code with sdv stop code | 
|---|
| 49 | . . IF $P($G(^SC(+SCAP0,0)),U,7)=SCSTOP S Y=0 Q | 
|---|
| 50 | ; | 
|---|
| 51 | Q +$G(Y) | 
|---|
| 52 | ; | 
|---|
| 53 | EN(SCCVEVT,SCDTM,SCDA,SCOEP,SCLOG) ; Entry point to convert an add/edit | 
|---|
| 54 | ; Input  -- SCCVEVT  Conversion event | 
|---|
| 55 | ;                    0=Estimate   1=Convert   2=Re-convert | 
|---|
| 56 | ;           SCDTM    ien of SDV entry (~Visit date/time) | 
|---|
| 57 | ;           SCDA     Clinic stop code sub-file IEN | 
|---|
| 58 | ;           SCOEP    Parent outpatient encounter IEN [optional] | 
|---|
| 59 | ;           SCLOG    Scheduling conversion log IEN   [optional] | 
|---|
| 60 | N SCCV,SCOE,SCDATA,SCCONS,SCEST,Z,SCVALDT | 
|---|
| 61 | ; | 
|---|
| 62 | ; -- make sure sdv d/t is valid | 
|---|
| 63 | S SCVALDT=$$DATECHCK^SDVSIT(SCDTM) | 
|---|
| 64 | ; | 
|---|
| 65 | S SCCONS("SRCE")="SD TO PCE DB CONV" | 
|---|
| 66 | S SCCONS("PKG")=$O(^DIC(9.4,"C","SD",0)) | 
|---|
| 67 | ; | 
|---|
| 68 | ; Check if add/edit should be processed | 
|---|
| 69 | IF '$$CON(SCCVEVT,SCDTM,SCVALDT,SCDA) G ENQ | 
|---|
| 70 | ; | 
|---|
| 71 | ; Set-up conversion array and variables | 
|---|
| 72 | D SET^SCCVEAE3(SCCVEVT,+$G(SCLOG),SCDTM,SCVALDT,SCDA,.SCOEP,.SCOE,.SCCV) | 
|---|
| 73 | ; | 
|---|
| 74 | I 'SCCVEVT,$G(SCCV("ERR")) G ENQ | 
|---|
| 75 | ; | 
|---|
| 76 | ; Skip if no new enctr or visit needed & no error to log | 
|---|
| 77 | I '$G(SCCV("NEW")),'$D(SCCV("ERR")) G ENQ | 
|---|
| 78 | ; | 
|---|
| 79 | ; Increment number of add/edits found (estimating only) | 
|---|
| 80 | I 'SCCVEVT D EN^SCCVZZ("AE-1",SCOE,SCDTM,SCDA,+$P($G(SCCV("OE",0)),U,6),+$P($G(SCCV("OE",0)),U,2)) D INCRTOT^SCCVEGU1(.SCTOT,1,1) | 
|---|
| 81 | ; | 
|---|
| 82 | ; Log error if no encounter or no visit, exit if no encounter | 
|---|
| 83 | I SCCVEVT,$S('$G(SCOE):1,1:'$P($G(SCCV("OE",0)),U,5)) D  G:'$G(SCOE) ENQ | 
|---|
| 84 | . N SCERRIP,Y,SCE | 
|---|
| 85 | . S Y=SCDTM D D^DIQ S SCERRIP(1)=Y | 
|---|
| 86 | . S SCERRIP(2)=SCDA | 
|---|
| 87 | . S SCERRIP(5)=$$OTHERR^SCCVU2($G(SCCV("ERR"))) | 
|---|
| 88 | . S SCERRIP(4)=$S('$G(SCOE):"Outpatient encounter",1:"Visit") | 
|---|
| 89 | . S SCE("DFN")=$P($G(^SDV(SCDTM,0)),U,2),SCE("ENC")=$G(SCOE),SCE("VSIT")="",SCE("DATE")=SCDTM | 
|---|
| 90 | . D GETERR^SCCVLOG1(4049005.001,.SCE,.SCERRIP,$G(SCLOG),0,.SCERRMSG) | 
|---|
| 91 | . S SCTOT(2.06)=$G(SCTOT(2.06))+1 | 
|---|
| 92 | . S:$G(SCOE) ^XTMP("SCCV-ERR-"_+$G(SCLOG),"NO-VIS",SCOE)="" | 
|---|
| 93 | ; | 
|---|
| 94 | G:$G(SCCV("ERR")) ENQ | 
|---|
| 95 | ; | 
|---|
| 96 | ; Invoke DATA-TO-PCE call, store any errors | 
|---|
| 97 | S SCEST="" | 
|---|
| 98 | I $S('SCCVEVT:1,1:$P($G(^SCE(SCOE,0)),U,5)) D DATA2PCE^SCCVPCE(SCOE,.SCCONS,SCCVEVT,$S(SCCVEVT:$G(SCOEP),1:$P($G(^SCE(SCOE,0)),U,6)),SCDTM,SCDA,.SCEST) | 
|---|
| 99 | ; | 
|---|
| 100 | I 'SCCVEVT D  G ENQ ;Estimate exits here | 
|---|
| 101 | .F Z=1:1:3 I $P(SCEST,U,Z) D INCRTOT^SCCVEGU1(.SCTOT,Z+8,$P(SCEST,U,Z)) D EN^SCCVZZ("AE-"_(Z+8),SCOE,SCDTM,SCDA,+$G(SCOEP),$P(SCEST,U,Z)) | 
|---|
| 102 | ; | 
|---|
| 103 | ; Convert additional add/edit data | 
|---|
| 104 | D ENC(SCOE,.SCCV) | 
|---|
| 105 | ; | 
|---|
| 106 | ; Update add/edit as converted | 
|---|
| 107 | D DONE(SCDTM,SCDA,1) | 
|---|
| 108 | ; | 
|---|
| 109 | ; Update last entry and number of records | 
|---|
| 110 | I $G(SCLOG),'$G(SCOEP) D UPDREC^SCCVLOG(SCLOG,SCOE,"CST") | 
|---|
| 111 | I '$G(SCLOG),$G(SCTOT("A/E")) S SCTOT("OK")=1 | 
|---|
| 112 | ENQ Q | 
|---|
| 113 | ; | 
|---|
| 114 | ENC(SCOE,SCCV) ; Convert additional add/edit data for encounter | 
|---|
| 115 | ; Input  -- SCOE     Outpatient encounter IEN | 
|---|
| 116 | ;           SCCV     Conversion array | 
|---|
| 117 | ; Output -- None | 
|---|
| 118 | N SCDATA | 
|---|
| 119 | I $G(SCCV("VST")),'$P($G(^SCE(SCOE,0)),U,5) S SCDATA(.05)=SCCV("VST") ; visit file entry | 
|---|
| 120 | I SCCV("NEW")=1 D  ;Only if conversion adds the encounter | 
|---|
| 121 | . I $P($G(SCCV("CS",0)),U,6)'="" S SCDATA(202)=$P(SCCV("CS",0),U,6) | 
|---|
| 122 | . I $P($G(SCCV("CS",0)),U,2)'="" S SCDATA(101)=$P(SCCV("CS",0),U,2) | 
|---|
| 123 | . I $P($G(SCCV("CS",1)),U)'="" S SCDATA(201)=$P(SCCV("CS",1),U) | 
|---|
| 124 | . I $P($G(SCCV("CS",0)),U,7)'="" S SCDATA(902)=$P(SCCV("CS",0),U,7) | 
|---|
| 125 | . S SCDATA(901)=1 ; created by conversion | 
|---|
| 126 | I $G(SCCV("VST")) D ENCCNV^SCCVEAP1(.SCDATA) | 
|---|
| 127 | I $D(SCDATA) D UPD^SCCVDBU(409.68,SCOE,.SCDATA) | 
|---|
| 128 | ENCQ Q | 
|---|
| 129 | ; | 
|---|
| 130 | DONE(SCDTM,SCDA,SCECSTAT) ; Update add/edit encounter conversion status | 
|---|
| 131 | ; Input  -- SCDTM    Visit date/time | 
|---|
| 132 | ;           SCDA     Clinic stop code sub-file IEN | 
|---|
| 133 | ;           SCECSTAT Encounter conversion status | 
|---|
| 134 | ; Output -- None | 
|---|
| 135 | N SCDATA,SCIENS | 
|---|
| 136 | S SCIENS=SCDA_","_SCDTM | 
|---|
| 137 | S:'$P($G(^SDV(SCDTM,"CS",SCDA,0)),U,9) SCDATA(9)=SCECSTAT ; encounter conversion status | 
|---|
| 138 | I $D(SCDATA) D UPD^SCCVDBU(409.51,SCIENS,.SCDATA) | 
|---|
| 139 | Q | 
|---|
| 140 | ; | 
|---|