| 1 | SCDXUTL1 ;ALB/JRP - GENERAL UTILITY ROUTINES;10-MAY-1996
 | 
|---|
| 2 |  ;;5.3;Scheduling;**44,60,132**;AUG 13, 1993
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | GETDTRNG(EARLIEST,LATEST,HELPBGN,HELPEND) ;Prompt user for a date range
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;Input  : EARLIEST - Earliest date allowed in FileMan format (Optional)
 | 
|---|
| 7 |  ;         LATEST - Latest date allowed in FileMan format (Optional)
 | 
|---|
| 8 |  ;         HELPBGN - Array containing help information for beginning
 | 
|---|
| 9 |  ;                   date (Full global reference) (Optional)
 | 
|---|
| 10 |  ;         HELPEND - Array containing help information for ending
 | 
|---|
| 11 |  ;                   date (Full global reference) (Optional)
 | 
|---|
| 12 |  ;Output : Begin^End - Success
 | 
|---|
| 13 |  ;           Begin - Beginning date
 | 
|---|
| 14 |  ;           End - Ending date
 | 
|---|
| 15 |  ;         -1 - User abort / timed out
 | 
|---|
| 16 |  ;Notes  : HELPBGN & HELPEND arrays have same format as DIR("?",#) array
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  ;Check input
 | 
|---|
| 19 |  S EARLIEST=$G(EARLIEST)
 | 
|---|
| 20 |  S LATEST=$G(LATEST)
 | 
|---|
| 21 |  S HELPBGN=$G(HELPBGN)
 | 
|---|
| 22 |  S HELPEND=$G(HELPEND)
 | 
|---|
| 23 |  ;Declare variables
 | 
|---|
| 24 |  N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT,BEGIN,END
 | 
|---|
| 25 |  ;Get beginning date
 | 
|---|
| 26 |  S DIR(0)="DA^"_EARLIEST_":"_LATEST_":EPX"
 | 
|---|
| 27 |  S DIR("A")="Enter beginning date: "
 | 
|---|
| 28 |  I (HELPBGN'="") M DIR("?")=@HELPBGN
 | 
|---|
| 29 |  D ^DIR
 | 
|---|
| 30 |  S BEGIN=+Y
 | 
|---|
| 31 |  ;User abort / time out
 | 
|---|
| 32 |  Q:($D(DIRUT)) -1
 | 
|---|
| 33 |  ;Get ending date
 | 
|---|
| 34 |  K DIR
 | 
|---|
| 35 |  S DIR(0)="DA^"_BEGIN_":"_LATEST_":EPX"
 | 
|---|
| 36 |  S DIR("A")="Enter ending date: "
 | 
|---|
| 37 |  I (HELPEND'="") M DIR("?")=@HELPEND
 | 
|---|
| 38 |  D ^DIR
 | 
|---|
| 39 |  S END=+Y
 | 
|---|
| 40 |  ;User abort / time out
 | 
|---|
| 41 |  Q:($D(DIRUT)) -1
 | 
|---|
| 42 |  ;Done
 | 
|---|
| 43 |  Q BEGIN_"^"_END
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 | REPEAT(CHAR,TIMES) ;Repeat a string
 | 
|---|
| 46 |  ;INPUT  : CHAR - Character to repeat
 | 
|---|
| 47 |  ;         TIMES - Number of times to repeat CHAR
 | 
|---|
| 48 |  ;OUTPUT : s - String of CHAR that is TIMES long
 | 
|---|
| 49 |  ;         "" - Error (bad input)
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  ;Check input
 | 
|---|
| 52 |  Q:($G(CHAR)="") ""
 | 
|---|
| 53 |  Q:((+$G(TIMES))=0) ""
 | 
|---|
| 54 |  ;Return string
 | 
|---|
| 55 |  Q $TR($J("",TIMES)," ",CHAR)
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 | INSERT(INSTR,OUTSTR,COLUMN,LENGTH) ;Insert a string into another string
 | 
|---|
| 58 |  ;INPUT  : INSTR - String to insert
 | 
|---|
| 59 |  ;         OUTSTR - String to insert into
 | 
|---|
| 60 |  ;         COLUMN - Where to begin insertion (defaults to end of OUTSTR)
 | 
|---|
| 61 |  ;         LENGTH - Number of characters to clear from OUTSTR
 | 
|---|
| 62 |  ;                  (defaults to length of INSTR)
 | 
|---|
| 63 |  ;OUTPUT : s - INSTR will be placed into OUTSTR starting at COLUMN
 | 
|---|
| 64 |  ;             using LENGTH characters
 | 
|---|
| 65 |  ;         "" - Error (bad input)
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  ;NOTE : This module is based on $$SETSTR^VALM1
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  ;Check input
 | 
|---|
| 70 |  S INSTR=$G(INSTR)
 | 
|---|
| 71 |  Q:(INSTR="") $G(OUTSTR)
 | 
|---|
| 72 |  S OUTSTR=$G(OUTSTR)
 | 
|---|
| 73 |  S:('$D(COLUMN)) COLUMN=$L(OUTSTR)+1
 | 
|---|
| 74 |  S:('$D(LENGTH)) LENGTH=$L(INSTR)
 | 
|---|
| 75 |  ;Declare variables
 | 
|---|
| 76 |  N FRONT,END
 | 
|---|
| 77 |  S FRONT=$E((OUTSTR_$J("",COLUMN-1)),1,(COLUMN-1))
 | 
|---|
| 78 |  S END=$E(OUTSTR,(COLUMN+LENGTH),$L(OUTSTR))
 | 
|---|
| 79 |  ;Insert string
 | 
|---|
| 80 |  Q FRONT_$E((INSTR_$J("",LENGTH)),1,LENGTH)_END
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 | DIAG(SDPOE,SCDXARRY) ;Get diagnoses from V POV file
 | 
|---|
| 83 |  ;  Note: Returns Dx from children (if any)
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  ;  SDPOE - pointer to 409.68
 | 
|---|
| 86 |  ;  SCDGARRY - output array
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  N SCOPDX,SDCHILD,SDOE
 | 
|---|
| 89 |  D KIDS(SDPOE,"SDCHILD")
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  ; -- get parent dxs
 | 
|---|
| 92 |  D GETDX^SDOE(+$G(SDPOE),SCDXARRY)
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  ; -- get child dxs
 | 
|---|
| 95 |  S SDOE=0
 | 
|---|
| 96 |  F  S SDOE=$O(SDCHILD(SDOE)) Q:'SDOE  D
 | 
|---|
| 97 |  . D GETDX^SDOE(SDOE,SCDXARRY)
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 | PRIMPDX(SDPOE) ; return pointer to ICD9 for primary dx of parent encounter
 | 
|---|
| 101 |  ; Note: Includes
 | 
|---|
| 102 |  ;    SDPOE - encounter (parent)
 | 
|---|
| 103 |  ; return: 
 | 
|---|
| 104 |  ;    if one:  ptr to ICD DIAGNOSIS file (ICD9)^pointer to V POV file
 | 
|---|
| 105 |  ;    if none: no prim dx
 | 
|---|
| 106 |  ;    if two+: -1 (error)
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 |  N SCDX,SCX,SCDX1,SDCHILD,SDOE
 | 
|---|
| 109 |  S SCDX1=0
 | 
|---|
| 110 |  D DIAG(.SDPOE,"SCDX")
 | 
|---|
| 111 |  S SCX=0
 | 
|---|
| 112 |  F  S SCX=$O(SCDX(SCX)) Q:'SCX  IF $P(SCDX(SCX),U,12)="P" S:SCDX1 SCDX1=-1 Q:SCDX1  S SCDX1=(+SCDX(SCX))_U_SCX
 | 
|---|
| 113 |  Q SCDX1
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 | KIDS(SDOE,SCKIDS) ;return children of parent
 | 
|---|
| 116 |  ;  Input -  SDOE = ptr to 409.68
 | 
|---|
| 117 |  ;  Output-  @SCKIDS@(kid ptr to 409.68) array
 | 
|---|
| 118 |  N SCX
 | 
|---|
| 119 |  S SCX=0 F  S SCX=$O(^SCE("APAR",SDOE,SCX)) Q:'SCX  S @SCKIDS@(SCX)=""
 | 
|---|
| 120 |  Q
 | 
|---|