| 1 | VSITVAR ;ISD/RJP - Define Visit Array Variables ;6/20/96
 | 
|---|
| 2 |  ;;1.0;PCE PATIENT CARE ENCOUNTER;**76**;Aug 12, 1996
 | 
|---|
| 3 |  ; Patch PX*1*76 changes the 2nd line of all VSIT* routines to reflect
 | 
|---|
| 4 |  ; the incorporation of the module into PCE.  For historical reference,
 | 
|---|
| 5 |  ; the old (VISIT TRACKING) 2nd line is included below to reference VSIT
 | 
|---|
| 6 |  ; patches.
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ;;2.0;VISIT TRACKING;;Aug 12, 1996;
 | 
|---|
| 9 |  Q
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ; - IEN = <visit record number>
 | 
|---|
| 12 |  ;   FLD = <field mnemonic>
 | 
|---|
| 13 |  ;   VAL = <data value>
 | 
|---|
| 14 |  ;   VSITDD0  = <indirect reference to dd for field>
 | 
|---|
| 15 |  ;   FMT = <output format [I:internal/E:external/B:both]>
 | 
|---|
| 16 |  ;   WITHIEN = 1: first subscript of VSIT array is IEN second is field. 
 | 
|---|
| 17 |  ;             0,"",not passed: field is only subscript
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 | ALL(IEN,FMT,WITHIEN) ; - define all VSIT("xxx") nodes using record # IEN
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  N REC,FLD,FLDINDX,VAL,VSITI
 | 
|---|
| 22 |  S IEN=+$G(IEN),FMT=$G(FMT),WITHIEN=$G(WITHIEN)
 | 
|---|
| 23 |  D:'($D(^TMP("VSITDD",$J))\10) FLD^VSITFLD
 | 
|---|
| 24 |  S VSITI=0
 | 
|---|
| 25 |  S REC(0)=$G(^AUPNVSIT(IEN,0)) F  S VSITI=$O(^(VSITI)) Q:VSITI'>0  S REC(VSITI)=^(VSITI)
 | 
|---|
| 26 |  S FLDINDX=""
 | 
|---|
| 27 |  F  S FLDINDX=$O(^TMP("VSITDD",$J,FLDINDX)) Q:FLDINDX=""  D
 | 
|---|
| 28 |  . S FLD=$G(^TMP("VSITDD",$J,FLDINDX))
 | 
|---|
| 29 |  . S VAL=$P($G(REC($P(FLD,";",3))),"^",$P(FLD,";",4))
 | 
|---|
| 30 |  . I WITHIEN S VSIT(IEN,FLDINDX)=$$GET(FLDINDX,VAL,FMT)
 | 
|---|
| 31 |  . E  S VSIT(FLDINDX)=$$GET(FLDINDX,VAL,FMT)
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 | SLC(IEN,FLD,FMT) ; - define only VSIT(FLD) node using record # IEN
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  N REC,NXT,VAL,VSITI
 | 
|---|
| 37 |  S IEN=$G(IEN),FLD=$G(FLD),FMT=$G(FMT)
 | 
|---|
| 38 |  D:'($D(^TMP("VSITDD",$J))\10) FLD^VSITFLD
 | 
|---|
| 39 |  F VSITI=1:1:$L(FLD,"^") S NXT=$P(FLD,"^",VSITI) D:NXT]""
 | 
|---|
| 40 |  . D:$G(REC($P(^TMP("VSITDD",$J,NXT),";",3)))=""
 | 
|---|
| 41 |  . . S REC($P(^TMP("VSITDD",$J,NXT),";",3))=$G(^AUPNVSIT(IEN,$P(^TMP("VSITDD",$J,NXT),";",3)))
 | 
|---|
| 42 |  . S VAL=$P($G(REC($P(^TMP("VSITDD",$J,NXT),";",3))),"^",$P(^TMP("VSITDD",$J,NXT),";",4))
 | 
|---|
| 43 |  . S VSIT(NXT)=$$GET(NXT,VAL,FMT)
 | 
|---|
| 44 |  K FMT
 | 
|---|
| 45 |  Q
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  ; ---------------------------------------------------------------------
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 | GET(FLD,VAL,FMT,DATEFMT) ; - Get/Check value for field
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  N X,Y,VSITDD0
 | 
|---|
| 52 |  S FLD=$G(FLD),VAL=$G(VAL),FMT=$G(FMT)
 | 
|---|
| 53 |  D:'($D(^TMP("VSITDD",$J))\10) FLD^VSITFLD
 | 
|---|
| 54 |  S Y=""
 | 
|---|
| 55 |  S FLD=$G(^TMP("VSITDD",$J,FLD))
 | 
|---|
| 56 |  D:FLD]""
 | 
|---|
| 57 |  . S VSITDD0=$P($G(^DD(9000010,$P(FLD,";",2),0)),"^",2)
 | 
|---|
| 58 |  . S Y=$S(VSITDD0["N":"TXT",VSITDD0["F":"TXT",VSITDD0["P":"PTR",VSITDD0["S":"SET",VSITDD0["D":"DAT",1:"")
 | 
|---|
| 59 |  . S VSITDD0="^DD(9000010,"_$P(FLD,";",2)_",0)"
 | 
|---|
| 60 |  Q $S(Y="TXT":$$TXT(VAL,FMT),Y="DAT":$$DAT(VAL,FMT,$G(DATEFMT)),Y="SET":$$SET(VAL,FMT,VSITDD0),Y="PTR":$$PTR(VAL,FMT,VSITDD0),1:"")
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 | TXT(VAL,FMT) ; - number/free text valued data
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 |  S VAL=$G(VAL),FMT=$G(FMT),FMT=$S(FMT]""&("IEB"[FMT):FMT,1:"I")
 | 
|---|
| 65 |  Q $S("IB"[FMT:VAL,1:"")_$S("EB"[FMT:$S(VAL]"":"^",1:"")_VAL,1:"")
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 | DAT(VAL,FMT,DATEFMT) ; - date valued data
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  N X,Y,%DT
 | 
|---|
| 70 |  S VAL=$G(VAL),FMT=$G(FMT),FMT=$S(FMT]""&("IEB"[FMT):FMT,1:"I")
 | 
|---|
| 71 |  S %DT=$S($G(DATEFMT)]"":DATEFMT,1:"TSX")
 | 
|---|
| 72 |  S X=VAL
 | 
|---|
| 73 |  D ^%DT K %DT S VAL=$S(Y>0:Y,1:"")
 | 
|---|
| 74 |  S:"EB"[FMT&(Y]"") Y=$$FMTE^XLFDT(VAL,"1P")
 | 
|---|
| 75 |  Q $S("IB"[FMT:VAL,1:"")_$S("EB"[FMT:$S(Y]"":"^",1:"")_Y,1:"")
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 | SET(VAL,FMT,VSITDD0) ; - set of codes valued data
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 |  N Y S Y=""
 | 
|---|
| 80 |  S VAL=$G(VAL),FMT=$G(FMT),FMT=$S(FMT]""&("IEB"[FMT):FMT,1:"I")
 | 
|---|
| 81 |  S VSITDD0=$G(@VSITDD0),VSITDD0=$S($P(VSITDD0,"^",2)'["S":"",1:";"_$P(VSITDD0,"^",3))
 | 
|---|
| 82 |  D:VAL]""
 | 
|---|
| 83 |  . I VSITDD0[(";"_$P(VAL,"^")_":") S Y=$P(VSITDD0,";",$L($E(VSITDD0,1,$F(VSITDD0,";"_$P(VAL,"^")_":")),";")) ; - internal code
 | 
|---|
| 84 |  . E  S Y=$P(VSITDD0,";",$L($E(VSITDD0,1,$F(VSITDD0,":"_$TR(VAL,"^"))-1),";")) ; - external code
 | 
|---|
| 85 |  . S Y=$TR(Y,":","^")
 | 
|---|
| 86 |  Q $S("IB"[FMT:$P(Y,"^"),1:"")_$S("EB"[FMT:$S($P(Y,"^",2)]"":"^",1:"")_$P(Y,"^",2),1:"")
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 | PTR(VAL,FMT,VSITDD0) ; - pointer valued data
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 |  N D,Y,DIC S VAL=$G(VAL),FMT=$G(FMT),FMT=$S(FMT]""&("IEB"[FMT):FMT,1:"I")
 | 
|---|
| 91 |  S VSITDD0=$G(@VSITDD0),Y="" D:$P(VSITDD0,"^",2)["P"
 | 
|---|
| 92 |  . F  I $D(@("^"_$P(^(0),"^",3)_"0)")) S VSITDD0=$P(^(0),"^",2) Q:'$D(^(+VAL,0))  S Y=$P(^(0),"^") I $D(^DD(+VSITDD0,.01,0)) S VSITDD0=$P(^(0),"^",2) Q:VSITDD0'["P"
 | 
|---|
| 93 |  S:Y]"" Y=VAL_"^"_Y
 | 
|---|
| 94 |  I +VSITDD0,'+$P(Y,"^") S X=VAL,DIC=+VSITDD0,DIC(0)="N",D="B" D IX^DIC S Y=$S(Y>0:Y,1:"")
 | 
|---|
| 95 |  Q $S("IB"[FMT:$P(Y,"^"),1:"")_$S("EB"[FMT:$S($P(Y,"^",2)]"":"^",1:"")_$P(Y,"^",2),1:"")
 | 
|---|