| [613] | 1 | VAQDBIH1 ;JRP/ALB - GET INFO ABOUT HEALTH SUMMARY COMPONENT;09-SEP-93
 | 
|---|
 | 2 |  ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
 | 
|---|
 | 3 | HLTHSEG(PDXABB,NOLIMITS) ;DETERMINE IF PDX SEGMENT IS A H.S. COMPONENT
 | 
|---|
 | 4 |  ;INPUT  : PDXABB - Abbreviation of segment in VAQ - DATA SEGMENT file
 | 
|---|
 | 5 |  ;         NOLIMITS - Flag indicating if time & occurrence indicators
 | 
|---|
 | 6 |  ;                    should be returned
 | 
|---|
 | 7 |  ;                    0 = Return indicators (default)
 | 
|---|
 | 8 |  ;                    1 = Don't return indicators
 | 
|---|
 | 9 |  ;OUTPUT : A^B^C where
 | 
|---|
 | 10 |  ;           A - Pointer to entry in HEALTH SUMMARY COMPONENT file
 | 
|---|
 | 11 |  ;               (will be '0' if not a Health Summary Component)
 | 
|---|
 | 12 |  ;           B - Time indicator
 | 
|---|
 | 13 |  ;               1 = Time limits applicable
 | 
|---|
 | 14 |  ;               0 = Time limits not applicable
 | 
|---|
 | 15 |  ;           C - Occurrence indicator
 | 
|---|
 | 16 |  ;               1 = Occurrence limits applicable
 | 
|---|
 | 17 |  ;               0 = Occurrence limits not applicable
 | 
|---|
 | 18 |  ;NOTES  : If NOLIMITS is set to 1, output will be A (not A^^)
 | 
|---|
 | 19 |  ;       : If PDXABB is not passed or is not a valid abbreviation,
 | 
|---|
 | 20 |  ;         output will be 0
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 |  ;CHECK INPUT & SET DEFAULTS
 | 
|---|
 | 23 |  Q:($G(PDXABB)="") 0
 | 
|---|
 | 24 |  Q:('$D(^VAT(394.71,"C",PDXABB))) 0
 | 
|---|
 | 25 |  S NOLIMITS=+$G(NOLIMITS)
 | 
|---|
 | 26 |  ;DECLARE VARIABLES
 | 
|---|
 | 27 |  N PDXSEG,ANS,TMP
 | 
|---|
 | 28 |  ;GET POINTER TO SEGMENT
 | 
|---|
 | 29 |  S PDXSEG=+$O(^VAT(394.71,"C",PDXABB,""))
 | 
|---|
 | 30 |  Q:('PDXSEG) 0
 | 
|---|
 | 31 |  ;GET INFO
 | 
|---|
 | 32 |  S ANS=$$SEGHLTH(PDXSEG,NOLIMITS)
 | 
|---|
 | 33 |  ;NOT A HEALTH SUMMARY COMPONENT OR NO LIMIT INDICATORS REQUIRED
 | 
|---|
 | 34 |  Q:(('ANS)!(NOLIMITS)) (+ANS)
 | 
|---|
 | 35 |  ;CHECK FOR TIME LIMIT
 | 
|---|
 | 36 |  S TMP=$P(ANS,"^",2)
 | 
|---|
 | 37 |  S:(TMP="@") TMP=1
 | 
|---|
 | 38 |  S:(TMP="") TMP=0
 | 
|---|
 | 39 |  S:(TMP) TMP=1
 | 
|---|
 | 40 |  S $P(ANS,"^",2)=TMP
 | 
|---|
 | 41 |  ;CHECK FOR OCCURRENCE LIMIT
 | 
|---|
 | 42 |  S TMP=$P(ANS,"^",3)
 | 
|---|
 | 43 |  S:(TMP="@") TMP=1
 | 
|---|
 | 44 |  S:(TMP="") TMP=0
 | 
|---|
 | 45 |  S:(TMP) TMP=1
 | 
|---|
 | 46 |  S $P(ANS,"^",3)=TMP
 | 
|---|
 | 47 |  ;DONE
 | 
|---|
 | 48 |  Q ANS
 | 
|---|
 | 49 |  ;
 | 
|---|
 | 50 | SEGHLTH(SEGPTR,NOMAX) ;DETERMINE IF PDX SEGMENT IS A H.S. COMPONENT
 | 
|---|
 | 51 |  ;INPUT  : SEGPTR - Pointer to segment in VAQ - DATA SEGMENT file
 | 
|---|
 | 52 |  ;         NOMAX - Flag indicating if maximium time & occurrence limits
 | 
|---|
 | 53 |  ;                 allowed by facility should be returned
 | 
|---|
 | 54 |  ;                 0 = Return maximum limits (default)
 | 
|---|
 | 55 |  ;                 1 = Don't maximium limits
 | 
|---|
 | 56 |  ;OUTPUT : A^B^C where
 | 
|---|
 | 57 |  ;           A - Pointer to entry in HEALTH SUMMARY COMPONENT file
 | 
|---|
 | 58 |  ;               (will be '0' if not a Health Summary Component)
 | 
|---|
 | 59 |  ;           B - Maximum time limit allowed
 | 
|---|
 | 60 |  ;           C - Maximum occurrence limit allowed
 | 
|---|
 | 61 |  ;NOTES  : If NOMAX is set to 1, output will be A (not A^^)
 | 
|---|
 | 62 |  ;       : If SEGPTR is not passed or is not a valid abbreviation,
 | 
|---|
 | 63 |  ;         output will be 0
 | 
|---|
 | 64 |  ;       : '@' denotes that a limit is applicable but a maximum
 | 
|---|
 | 65 |  ;         limit has not been set
 | 
|---|
 | 66 |  ;       : NULL denotes that a limit is not applicable
 | 
|---|
 | 67 |  ;
 | 
|---|
 | 68 |  ;CHECK INPUT & SET DEFAULTS
 | 
|---|
 | 69 |  Q:('(+$G(SEGPTR))) 0
 | 
|---|
 | 70 |  Q:('$D(^VAT(394.71,SEGPTR))) 0
 | 
|---|
 | 71 |  S NOMAX=+$G(NOMAX)
 | 
|---|
 | 72 |  ;DECLARE VARIABLES
 | 
|---|
 | 73 |  N HLTHPTR,TIME,OCCUR,MAXTIM,MAXOCC,TMP,NODE
 | 
|---|
 | 74 |  ;DETERMINE IF SEGMENT IS PAIRED WITH HEALTH SUMMARY COMPONENT
 | 
|---|
 | 75 |  S NODE=$G(^VAT(394.71,SEGPTR,0))
 | 
|---|
 | 76 |  S HLTHPTR=+$P(NODE,"^",4)
 | 
|---|
 | 77 |  Q:('HLTHPTR) 0
 | 
|---|
 | 78 |  ;GET TIME & OCCURRENCE FLAGS
 | 
|---|
 | 79 |  S TIME=$$LIMITS(HLTHPTR)
 | 
|---|
 | 80 |  S OCCUR=+$P(TIME,"^",2)
 | 
|---|
 | 81 |  S TIME=+TIME
 | 
|---|
 | 82 |  ;GET MAXIMUM LIMITS
 | 
|---|
 | 83 |  S MAXTIM=$P(NODE,"^",5)
 | 
|---|
 | 84 |  S MAXOCC=+$P(NODE,"^",6)
 | 
|---|
 | 85 |  ;MAXIMUM TIME NOT APPLIED
 | 
|---|
 | 86 |  S:((MAXTIM="")&(TIME)) MAXTIM="@"
 | 
|---|
 | 87 |  ;MAXIMUM TIME NOT APPLICABLE
 | 
|---|
 | 88 |  S:('TIME) MAXTIM=""
 | 
|---|
 | 89 |  ;MAXIMUM OCCURRENCE NOT APPLIED
 | 
|---|
 | 90 |  S:(('MAXOCC)&(OCCUR)) MAXOCC="@"
 | 
|---|
 | 91 |  ;MAXIMUM OCCURRENCE NOT APPLICABLE
 | 
|---|
 | 92 |  S:('OCCUR) MAXOCC=""
 | 
|---|
 | 93 |  ;DONE
 | 
|---|
 | 94 |  Q:(NOMAX) HLTHPTR
 | 
|---|
 | 95 |  Q (HLTHPTR_"^"_MAXTIM_"^"_MAXOCC)
 | 
|---|
 | 96 |  ;
 | 
|---|
 | 97 | LIMITS(HSPTR) ;DETERMINE IF HEALTH SUMMARY COMPONENT HAS LIMITS
 | 
|---|
 | 98 |  ;INPUT  : HSPTR - Pointer to entry in HEALTH SUMMARY COMPONENT file
 | 
|---|
 | 99 |  ;OUTPUT : B^C where
 | 
|---|
 | 100 |  ;           B - Time indicator
 | 
|---|
 | 101 |  ;               1 = Time limits applicable
 | 
|---|
 | 102 |  ;               0 = Time limits not applicable
 | 
|---|
 | 103 |  ;           C - Occurrence indicator
 | 
|---|
 | 104 |  ;               1 = Occurrence limits applicable
 | 
|---|
 | 105 |  ;               0 = Occurrence limits not applicable
 | 
|---|
 | 106 |  ;NOTES  : It is assumed that input is valid (not checked)
 | 
|---|
 | 107 |  ;
 | 
|---|
 | 108 |  ;DECLARE VARIABLES
 | 
|---|
 | 109 |  N DIC,DR,DA,DIQ,TMPARR,TMP,TLIM,OLIM,TMPARR,X
 | 
|---|
 | 110 |  ;GET TIME & OCCURRENCE FLAGS
 | 
|---|
 | 111 |  S DIC="^GMT(142.1,"
 | 
|---|
 | 112 |  S DR="2;4"
 | 
|---|
 | 113 |  S DA=HSPTR
 | 
|---|
 | 114 |  S DIQ="TMPARR"
 | 
|---|
 | 115 |  S DIQ(0)="E"
 | 
|---|
 | 116 |  D EN^DIQ1
 | 
|---|
 | 117 |  ;CHECK IF TIME LIMIT APPLICABLE
 | 
|---|
 | 118 |  S (TLIM,OLIM)=0
 | 
|---|
 | 119 |  S TMP=$G(TMPARR(142.1,HSPTR,2,"E"))
 | 
|---|
 | 120 |  S:((TMP="Y")!(TMP="YES")!(TMP="yes")!(TMP="Yes")) TLIM=1
 | 
|---|
 | 121 |  ;CHECK IF OCCURRENCE LIMIT APPLICABLE
 | 
|---|
 | 122 |  S TMP=$G(TMPARR(142.1,HSPTR,4,"E"))
 | 
|---|
 | 123 |  S:((TMP="Y")!(TMP="YES")!(TMP="yes")!(TMP="Yes")) OLIM=1
 | 
|---|
 | 124 |  Q (TLIM_"^"_OLIM)
 | 
|---|