| 1 | SPNCMR2 ;HIRMFO/WAA-This routine will find all valid patient ; 9/3/93
 | 
|---|
| 2 |  ;;2.0;Spinal Cord Dysfunction;**7**;01/02/1997
 | 
|---|
| 3 | EN1 ;Loop thru the ^SC file to find all Scheduled appointments
 | 
|---|
| 4 |  Q:SPNSEL'["2"
 | 
|---|
| 5 |  S SPNX=0 D LP1,UNSCH(SPNST,SPNED,"D CB^SPNCMR2(Y,Y0,.SDSTOP)")
 | 
|---|
| 6 |  G EXIT
 | 
|---|
| 7 | LP1 S SPNX=$O(^TMP($J,"SPNWC",SPNX)) Q:SPNX<1
 | 
|---|
| 8 |  I $G(^TMP($J,"SPNWC",SPNX))'="W" D
 | 
|---|
| 9 |  .;this code finds all patients who are scheduled
 | 
|---|
| 10 |  .F SPNDATE=SPNST:0 S SPNDATE=$O(^SC(SPNX,"S",SPNDATE)) Q:SPNDATE<1!(SPNDATE>SPNED)  D
 | 
|---|
| 11 |  ..S SPNIEN=0 F  S SPNIEN=$O(^SC(SPNX,"S",SPNDATE,1,SPNIEN)) Q:SPNIEN<1  D
 | 
|---|
| 12 |  ...Q:'$D(^SC(SPNX,"S",SPNDATE,1,SPNIEN,0))  S SPNDFN=$P(^(0),U)
 | 
|---|
| 13 |  ...I "I"[$P($G(^DPT(SPNDFN,"S",SPNDATE,0)),U,2) D SETPT^SPNCMR3
 | 
|---|
| 14 |  ...Q
 | 
|---|
| 15 |  ..Q
 | 
|---|
| 16 |  .Q
 | 
|---|
| 17 |  G LP1
 | 
|---|
| 18 | UNSCH(SPNST,SPNED,SPNCB) ; -- find all patients who are Unscheduled
 | 
|---|
| 19 |  ;   input:   SPNST := start date
 | 
|---|
| 20 |  ;            SPNED := end date
 | 
|---|
| 21 |  ;            SPNCB := callback code executed for each encounter in
 | 
|---|
| 22 |  ;                     query's result set
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  N SPNQRY
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ; -- set up scan
 | 
|---|
| 27 |  D OPEN^SDQ(.SPNQRY)                     ; -- initialize query
 | 
|---|
| 28 |  D INDEX^SDQ(.SPNQRY,"DATE/TIME","SET")  ; -- which index to use
 | 
|---|
| 29 |  D DATE^SDQ(.SPNQRY,SPNST,SPNED,"SET")   ; -- date range
 | 
|---|
| 30 |  D SCANCB^SDQ(.SPNQRY,SPNCB,"SET")       ; -- callback code to use
 | 
|---|
| 31 |  D ACTIVE^SDQ(.SPNQRY,"TRUE","SET")      ; -- activate query
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 |  D SCAN^SDQ(.SPNQRY,"FORWARD")           ; -- scan entries in query
 | 
|---|
| 34 |  ;                                            result set
 | 
|---|
| 35 |  D CLOSE^SDQ(.SPNQRY)                    ; -- close query
 | 
|---|
| 36 |  Q
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 | EXIT K SPNCS,SPNCS(0),SPNNUM,SPNX,SPNDFN,SPNDATE
 | 
|---|
| 39 |  Q
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | CB(SPNOE,SPNOE0,SPNSTOP) ;     -- callback code called for each
 | 
|---|
| 42 |  ;                                record in query result set
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ;  input:  SPNOE   := ien of Outpatient Encounter
 | 
|---|
| 45 |  ;          SPNOE0  := zeroth node of Outpatient Encounter
 | 
|---|
| 46 |  ;          SPNSTOP := tells query to stop processing by setting to 1
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 |  N SPNX,SPNDFN,SPNDATE
 | 
|---|
| 49 |  IF $P(SPNOE0,U,6) G CBQ     ; -- quit if encounter has parent
 | 
|---|
| 50 |  IF $P(SPNOE0,U,8)'=2 G CBQ  ; -- quit if not standalone encounter
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  S SPNDATE=+SPNOE0           ; -- encounter date
 | 
|---|
| 53 |  S SPNDFN=+$P(SPNOE0,U,2)    ; -- patient
 | 
|---|
| 54 |  S SPNX=+$P(SPNOE0,U,4)      ; -- clinic
 | 
|---|
| 55 |  IF SPNX D SETPT^SPNCMR3
 | 
|---|
| 56 | CBQ Q
 | 
|---|
| 57 |  ;
 | 
|---|