| 1 | SCCVEAE3 ;ALB/RMO,TMP - Add/Edit Conversion cont.; [ 04/05/95  8:46 AM ]
 | 
|---|
| 2 |  ;;5.3;Scheduling;**211**;Aug 13, 1993
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | SET(SCCVEVT,SCLOG,SCDTM,SCVALDT,SCDA,SCOEP,SCOE,SCCV) ; Set variables, add encounter/visit
 | 
|---|
| 5 |  ; Input  -- SCCVEVT  Conversion event
 | 
|---|
| 6 |  ;           SCLOG    Scheduling conversion log IEN
 | 
|---|
| 7 |  ;           SCDTM    Visit date/time (IEN)
 | 
|---|
| 8 |  ;           SCVALDT  Valid converted Visit date/time (SCDTM)
 | 
|---|
| 9 |  ;           SCDA     Clinic stop code sub-file IEN
 | 
|---|
| 10 |  ;           SCOEP    Parent outpatient encounter IEN [optional]
 | 
|---|
| 11 |  ; Output -- SCOE     Outpatient encounter IEN
 | 
|---|
| 12 |  ;           SCCV     Conversion array:
 | 
|---|
| 13 |  ;                    SCCV("EVT")       Conversion event
 | 
|---|
| 14 |  ;                        ("LOG")       Scheduling conversion log IEN
 | 
|---|
| 15 |  ;                        ("NEW")       Outpatient encounter or visit
 | 
|---|
| 16 |  ;                                       created by conversion flag
 | 
|---|
| 17 |  ;                                       0 = no new encounter or visit
 | 
|---|
| 18 |  ;                                       1 = new encounter and visit
 | 
|---|
| 19 |  ;                                       2 = new visit only
 | 
|---|
| 20 |  ;                        ("OE",0)      Outpatient encounter 0th node
 | 
|---|
| 21 |  ;                        ("CS",0)      Clinic stop code 0th node
 | 
|---|
| 22 |  ;                        ("CS",1)      Clinic stop code 1 node
 | 
|---|
| 23 |  ;                        ("CS","PR")   Clinic stop code 'PR' node
 | 
|---|
| 24 |  ;                        ("ERR")       Code for specific error, if any
 | 
|---|
| 25 |  ;                        ("VST")       Visit file IEN
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  N SCCVSIT,SCV0,DA,DR,DE,DQ,DIE,SDVSIT,SCOE0,SCCVT,X
 | 
|---|
| 28 |  S SCCV("EVT")=SCCVEVT
 | 
|---|
| 29 |  S SCCV("LOG")=SCLOG
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  ; If estimating, increment the total number of encounters and visits
 | 
|---|
| 32 |  ;  that would be created by the conversion
 | 
|---|
| 33 |  ; If converting, create a new encounter and/or visit
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  I '$G(^SDV(SCDTM,0)) S SCCV("ERR")=4 G SETQ
 | 
|---|
| 36 |  S SCCVSIT=^SDV(SCDTM,0),SDVSIT("DFN")=$P(SCCVSIT,U,2)
 | 
|---|
| 37 |  I 'SDVSIT("DFN") S SCCV("ERR")=5 G SETQ
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  I '$D(^SDV(SCDTM,"CS",SCDA,0)) S SCCV("ERR")=9 G SETQ
 | 
|---|
| 40 |  S SCV0=^SDV(SCDTM,"CS",SCDA,0),SCCV("CS","PR")=$G(^("PR"))
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  S SCOE=+$P(SCV0,U,8),SCOE0=$G(^SCE(SCOE,0))
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ; On re-convert, delete previously converted data for parents only
 | 
|---|
| 45 |  I SCCVEVT=2,'$P(SCOE0,U,6) D
 | 
|---|
| 46 |  . ; only delete for reconvert if we created the encounter or completed
 | 
|---|
| 47 |  . ;   the conversion by adding the visit
 | 
|---|
| 48 |  . Q:'$$CCREATE^SCCVU(SCOE)
 | 
|---|
| 49 |  . ;
 | 
|---|
| 50 |  . D RECNVT^SCCVEAP3(SCOE,SCOE0,.SCCONS)
 | 
|---|
| 51 |  . S SCOE0=$G(^SCE(SCOE,0)) S:SCOE0="" SCOE=0
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  S SCCV("NEW")=$S('SCOE:1,'$P(SCOE0,U,5):2,1:0)
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  I 'SCCV("NEW") G SETQ ; Already has an encounter and visit
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  I 'SCCVEVT D  G SETQ ; Estimate exits here
 | 
|---|
| 58 |  . ; -- don't incrment if child will use parent's visit ien
 | 
|---|
| 59 |  . IF SCCV("NEW")=2,$G(SCOEP),$D(^SCE(SCOEP,0)),$P(^(0),U,3)=$P(SCOE0,U,3),$P(^(0),U,4)=$P(SCOE0,U,4) Q
 | 
|---|
| 60 |  . D INCRTOT^SCCVEGU1(.SCTOT,SCCV("NEW")+6,1)
 | 
|---|
| 61 |  . D EN^SCCVZZ("AE-"_(SCCV("NEW")+6),SCOE,SCDTM,SCDA,$S(SCOEP:SCOEP,$P($G(^SCE(SCOE,0)),U,6):+$P(^(0),U,6),1:0),SDVSIT("DFN"))
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  S SDVSIT("DIV")=+$P($G(^SC(+$P(SCV0,U,3),0)),U,15)
 | 
|---|
| 64 |  S:'SDVSIT("DIV") SDVSIT("DIV")=+$P(SCCVSIT,U,3)
 | 
|---|
| 65 |  S SDVSIT("DIV")=$$DIV(SDVSIT("DIV"))
 | 
|---|
| 66 |  I 'SDVSIT("DIV") S SCCV("ERR")=6 G SETQ
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  S SDVSIT("CLN")=+SCV0
 | 
|---|
| 69 |  I $P($G(^DIC(40.7,+SCV0,0)),U,2)=900 S SDVSIT("CLN")=+$P($G(^SC(+$P(SCV0,U,3),0)),U,7)
 | 
|---|
| 70 |  I 'SDVSIT("CLN") S SCCV("ERR")=7 G SETQ
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  S:$P(SCV0,U,3) SDVSIT("LOC")=$P(SCV0,U,3)
 | 
|---|
| 73 |  S:$P(SCV0,U,4) SDVSIT("ELG")=$P(SCV0,U,4)
 | 
|---|
| 74 |  S:$P(SCV0,U,5) SDVSIT("TYP")=$P(SCV0,U,5)
 | 
|---|
| 75 |  S SDVSIT("ORG")=2,SDVSIT("REF")=SCDA
 | 
|---|
| 76 |  D SETSCCVT^SCCVEAP2(.SCCVT,.SCCONS)
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 |  S:$G(SCOEP) SDVSIT("PAR")=SCOEP
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  I SCCV("NEW")=2 D  G:'$G(SDVSIT("VST")) SETQ ; -- Has encounter, needs visit
 | 
|---|
| 81 |  . S SCOE=$P(SCV0,U,8),SDVSIT("OE",0)=SCOE0
 | 
|---|
| 82 |  . S SDVSIT("OE")=SCOE
 | 
|---|
| 83 |  . S X=$$VISIT^SCCVEAP2(SCVALDT,.SDVSIT) ; -- Add visit only
 | 
|---|
| 84 |  . S SCOE0=SDVSIT("OE",0)
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  I SCCV("NEW")=1 D  ; -- Needs both encounter and visit added
 | 
|---|
| 87 |  .S SCOE=$$SDOE^SDVSIT(SCVALDT,.SDVSIT),SCOE0=$G(^SCE(+SCOE,0))
 | 
|---|
| 88 |  .S:SCOE SCTOT(1.02)=$G(SCTOT(1.02))+1
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 |  G SETQ:'SCOE
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 |  I $G(SDVSIT("VST")),'$P(SCOE0,U,5) S SCDATA(.05)=SDVSIT("VST") D UPD^SCCVDBU(409.68,SCOE,.SCDATA) K SCDATA
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  ; Update 'CS' node with encounter pointer
 | 
|---|
| 95 |  I SCCV("NEW")=1 S SCDATA(8)=SCOE,SCIENS=SCDA_","_SCDTM D UPD^SCCVDBU(409.51,SCIENS,.SCDATA) K SCDATA
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  M SCCV=SDVSIT
 | 
|---|
| 98 |  S SCCV("OE",0)=$G(^SCE(SCOE,0))
 | 
|---|
| 99 |  S SCCV("VST")=$P($G(SCCV("OE",0)),U,5)
 | 
|---|
| 100 |  S SCCV("CS",0)=$G(^SDV(SCDTM,"CS",SCDA,0)),SCCV("CS",1)=$G(^(1))
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 |  IF SCCV("NEW")=1 D CSCAN(SCDTM,.SCCV)
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | SETQ Q
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 | DIV(DIV) ; -- determine med div
 | 
|---|
| 107 |  I $P($G(^DG(43,1,"GL")),U,2),$D(^DG(40.8,+DIV,0)) G DIVQ ; multi-div?
 | 
|---|
| 108 |  S DIV=+$O(^DG(40.8,0))
 | 
|---|
| 109 | DIVQ Q DIV
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 | CSCAN(SCDTM,SCCV) ; -- update 900 "CS" nodes with same clinic
 | 
|---|
| 112 |  N SCLN,SCS,SCS0,SCNT,SCEXT
 | 
|---|
| 113 |  S SCLN=+$P($G(SCCV("CS",0)),U,3)
 | 
|---|
| 114 |  S SCOE=+$P($G(SCCV("CS",0)),U,8)
 | 
|---|
| 115 |  S SCEXT=$P(SCCV("OE",0),U,9)
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 |  IF 'SCCV900!('SCLN)!('SCOE)!(SCEXT="") G CSCANQ
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 |  S SCNT=0
 | 
|---|
| 120 |  ; -- scan for "CS" nodes that are 900's, same clinic & no encounter
 | 
|---|
| 121 |  S SCS=0 F  S SCS=$O(^SDV(SCDTM,"CS",SCS)) Q:'SCS  S SCS0=$G(^(SCS,0)) D
 | 
|---|
| 122 |  . IF +SCS0=SCCV900,+$P(SCS0,U,3)=SCLN,'$P(SCS0,U,8) D
 | 
|---|
| 123 |  . . N SCDATA,SCIENS
 | 
|---|
| 124 |  . . S SCDATA(8)=SCOE ; -- set sce ien
 | 
|---|
| 125 |  . . S SCDATA(9)=1    ; -- mark converted
 | 
|---|
| 126 |  . . S SCIENS=SCS_","_SCDTM
 | 
|---|
| 127 |  . . D UPD^SCCVDBU(409.51,SCIENS,.SCDATA)
 | 
|---|
| 128 |  . . S SCEXT=SCEXT_":"_SCS
 | 
|---|
| 129 |  . . S SCNT=SCNT+1
 | 
|---|
| 130 |  ;
 | 
|---|
| 131 |  IF 'SCNT G CSCANQ
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 |  N SCDATA
 | 
|---|
| 134 |  S SCDATA(.09)=SCEXT D UPD^SCCVDBU(409.68,SCOE,.SCDATA)
 | 
|---|
| 135 |  S SCCV("OE",0)=$G(^SCE(SCOE,0))
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 | CSCANQ Q
 | 
|---|
| 138 |  ;
 | 
|---|