[613] | 1 | PXKENC ;ISL/dee,ESW - Builds the array of all encounter data for the event point ; 12/5/02 11:53am ; 1/5/07 4:54pm
|
---|
| 2 | ;;1.0;PCE PATIENT CARE ENCOUNTER;**15,22,73,108,143,183**;Aug 12, 1996;Build 3
|
---|
| 3 | Q
|
---|
| 4 | ;
|
---|
| 5 | GETENC(DFN,ENCDT,HLOC) ;Get all of the encounter data
|
---|
| 6 | ;Parameters:
|
---|
| 7 | ; DFN Pointer to the patient (#9000001)
|
---|
| 8 | ; ENCDT Date/Time of the encounter in Fileman format
|
---|
| 9 | ; HLOC Pointer to Hospital Location (#44)
|
---|
| 10 | ;
|
---|
| 11 | ;Returns:
|
---|
| 12 | ; -2 if called incorrectly
|
---|
| 13 | ; -1 if could not find encounter
|
---|
| 14 | ; >0 Visit ien(s) separated by ^
|
---|
| 15 | ;
|
---|
| 16 | ; The encounter is returned in the array
|
---|
| 17 | ; ^TMP("PXKENC",$J,pointer to visit)
|
---|
| 18 | ; may contain more than one visit
|
---|
| 19 | ;
|
---|
| 20 | N VISITIEN,REVDT,RETURN
|
---|
| 21 | K ^TMP("PXKENC",$J)
|
---|
| 22 | S RETURN=-1
|
---|
| 23 | Q:DFN'>0!(ENCDT<1800000)!(HLOC'>0) -2
|
---|
| 24 | S REVDT=(9999999-$P(+ENCDT,".",1))_$S($P(+ENCDT,".",2)'="":"."_$P(+ENCDT,".",2),1:"")
|
---|
| 25 | S VISITIEN=0
|
---|
| 26 | F S VISITIEN=$O(^AUPNVSIT("AA",+DFN,REVDT,VISITIEN)) Q:'VISITIEN D
|
---|
| 27 | . I $P($G(^AUPNVSIT(VISITIEN,0)),"^",22)=HLOC,"C~S"'[$P($G(^AUPNVSIT(VISITIEN,150)),"^",3) D
|
---|
| 28 | .. D ENCEVENT(VISITIEN,1)
|
---|
| 29 | .. I RETURN<1 S RETURN=VISITIEN
|
---|
| 30 | .. E S RETURN=RETURN_"^"_VISITIEN
|
---|
| 31 | Q RETURN
|
---|
| 32 | ;
|
---|
| 33 | ENCEVENT(VISITIEN,DONTKILL) ;Create the ^TMP("PXKENC",$J, array of all the
|
---|
| 34 | ; information about one encounter.
|
---|
| 35 | ;Parameters:
|
---|
| 36 | ; VISITIEN Pointer to the Visit (#9000010)
|
---|
| 37 | ; DONOTKILL is 1 if the output array is not to be killed before used
|
---|
| 38 | ; and 0 or null if the array is to be killed (cleaned out)
|
---|
| 39 | ;
|
---|
| 40 | ; The encounter is returned in the array
|
---|
| 41 | ; ^TMP("PXKENC",$J,pointer to visit)
|
---|
| 42 | ;
|
---|
| 43 | I $G(VISITIEN)'>0 Q ;PX/183
|
---|
| 44 | I '$D(^AUPNVSIT(VISITIEN)) Q
|
---|
| 45 | K:'$G(DONTKILL) ^TMP("PXKENC",$J)
|
---|
| 46 | N PXKCNT,PXKROOT
|
---|
| 47 | S PXKROOT=$NA(@("^TMP(""PXKENC"",$J,"_VISITIEN_")"))
|
---|
| 48 | ;
|
---|
| 49 | N IEN,FILE,VFILE,FILESTR,PXKNODE
|
---|
| 50 | F FILE="SIT","CSTP","PRV","POV","CPT","TRT","IMM","PED","SK","HF","XAM" D
|
---|
| 51 | . S FILESTR=$S(FILE="SIT":"VST",1:FILE)
|
---|
| 52 | . S VFILE=$P($T(GLOBAL^@("PXKF"_$S(FILE="SIT":"VST",FILE="CSTP":"VST",1:FILE))),";;",2)
|
---|
| 53 | . I FILE="SIT" D
|
---|
| 54 | .. S IEN=VISITIEN
|
---|
| 55 | .. S PXKNODE=""
|
---|
| 56 | .. F S PXKNODE=$O(@VFILE@(IEN,PXKNODE)) Q:PXKNODE="" D
|
---|
| 57 | ... S @PXKROOT@(FILESTR,IEN,PXKNODE)=@VFILE@(IEN,PXKNODE)
|
---|
| 58 | . E D
|
---|
| 59 | .. I FILE="PRV" D EVALD(VISITIEN,PXKROOT,VFILE,FILESTR)
|
---|
| 60 | .. I FILE'="PRV" S IEN="" F S IEN=$O(@VFILE@("AD",VISITIEN,IEN)) Q:'IEN D
|
---|
| 61 | ... I FILE="CSTP","SC"'[$P($G(@VFILE@(IEN,150)),"^",3) Q
|
---|
| 62 | ... S PXKNODE=""
|
---|
| 63 | ... F S PXKNODE=$O(@VFILE@(IEN,PXKNODE)) Q:PXKNODE="" D:PXKNODE'=801
|
---|
| 64 | .... ;for cpt modifiers
|
---|
| 65 | .... I FILE="CPT",PXKNODE=1 D Q
|
---|
| 66 | ..... S @PXKROOT@(FILESTR,IEN,PXKNODE,0)=$G(@VFILE@(IEN,PXKNODE,0))
|
---|
| 67 | ..... N SUBIEN
|
---|
| 68 | ..... S SUBIEN=0
|
---|
| 69 | ..... F S SUBIEN=$O(@VFILE@(IEN,PXKNODE,SUBIEN)) Q:SUBIEN="" D
|
---|
| 70 | ...... S @PXKROOT@(FILESTR,IEN,PXKNODE,SUBIEN,0)=$G(@VFILE@(IEN,PXKNODE,SUBIEN,0))
|
---|
| 71 | .... ;
|
---|
| 72 | .... S @PXKROOT@(FILESTR,IEN,PXKNODE)=$G(@VFILE@(IEN,PXKNODE))
|
---|
| 73 | Q
|
---|
| 74 | EVALD(VISITIEN,PXKROOT,VFILE,FILESTR) ;evaluation for duplicate providers
|
---|
| 75 | N CNT,PR,PRS,PS,PP,PRV,STR
|
---|
| 76 | S IEN="",CNT=0
|
---|
| 77 | F S IEN=$O(@VFILE@("AD",VISITIEN,IEN)) Q:'IEN D
|
---|
| 78 | .S STR=@VFILE@(IEN,0),PR=+STR,PS=$P(STR,U,4)
|
---|
| 79 | .I PS="P",'CNT S PRV=PR,CNT=1 D PXKNODE(VFILE,FILESTR,IEN,PXKROOT)
|
---|
| 80 | .I PS="S" S PRS(PR,IEN)="" D PXKNODE(VFILE,FILESTR,IEN,PXKROOT)
|
---|
| 81 | .Q
|
---|
| 82 | S PR="" F S PR=$O(PRS(PR)) Q:PR="" S IEN="" D
|
---|
| 83 | .F PP=1:1 S IEN=$O(PRS(PR,IEN)) Q:IEN="" D
|
---|
| 84 | ..I PR=$G(PRV) K @PXKROOT@(FILESTR,IEN) Q
|
---|
| 85 | ..I PP>1 K @PXKROOT@(FILESTR,IEN)
|
---|
| 86 | Q
|
---|
| 87 | PXKNODE(VFILE,FILESTR,IEN,PXKROOT) ;
|
---|
| 88 | N STRR S PXKNODE=""
|
---|
| 89 | F S PXKNODE=$O(@VFILE@(IEN,PXKNODE)) Q:PXKNODE="" D:PXKNODE'=801
|
---|
| 90 | . I $E($P($P(PXKROOT,","),"(",2),2,7)="PXKENC" D
|
---|
| 91 | ..; ENCEVENT called
|
---|
| 92 | .. S @PXKROOT@(FILESTR,IEN,PXKNODE)=$G(@VFILE@(IEN,PXKNODE))
|
---|
| 93 | . I $P(PXKROOT,"""",2)="PXKCO",'$D(@PXKROOT@(FILESTR,IEN)) D
|
---|
| 94 | ..; COEVENT called
|
---|
| 95 | .. F STRR="BEFORE","AFTER" D
|
---|
| 96 | ... S @PXKROOT@(FILESTR,IEN,PXKNODE,STRR)=$G(@VFILE@(IEN,PXKNODE))
|
---|
| 97 | Q
|
---|
| 98 | ;
|
---|
| 99 | COEVENT(VISITIEN) ;Add to the ^TMP("PXKCO",$J, array all of the
|
---|
| 100 | ; information that is not already there.
|
---|
| 101 | I '$D(^AUPNVSIT(VISITIEN)) Q
|
---|
| 102 | N PXKCNT,PXKROOT
|
---|
| 103 | S PXKROOT=$NA(@("^TMP(""PXKCO"",$J,"_VISITIEN_")"))
|
---|
| 104 | ;
|
---|
| 105 | N IEN,FILE,VFILE,PXKNODE
|
---|
| 106 | F FILE="CSTP","PRV","POV","CPT","TRT","IMM","PED","SK","HF","XAM" D
|
---|
| 107 | . S VFILE=$P($T(GLOBAL^@("PXKF"_$S(FILE="CSTP":"VST",1:FILE))),";;",2)
|
---|
| 108 | . I FILE="PRV" D EVALD(VISITIEN,PXKROOT,VFILE,FILE)
|
---|
| 109 | . I FILE'="PRV" S IEN="" F S IEN=$O(@VFILE@("AD",VISITIEN,IEN)) Q:'IEN D
|
---|
| 110 | .. I FILE="CSTP","SC"'[$P($G(@VFILE@(IEN,150)),"^",3) Q
|
---|
| 111 | .. S PXKNODE=""
|
---|
| 112 | .. I '$D(@PXKROOT@(FILE,IEN)) D
|
---|
| 113 | ... F S PXKNODE=$O(@VFILE@(IEN,PXKNODE)) Q:PXKNODE="" D:PXKNODE'=801
|
---|
| 114 | .... I FILE="CPT",PXKNODE=1 D Q
|
---|
| 115 | ..... N SUBIEN,MOD
|
---|
| 116 | ..... S SUBIEN=0
|
---|
| 117 | ..... F S SUBIEN=$O(@VFILE@(IEN,PXKNODE,SUBIEN)) Q:'SUBIEN D
|
---|
| 118 | ...... S MOD=@VFILE@(IEN,PXKNODE,SUBIEN,0)
|
---|
| 119 | ...... S @PXKROOT@(FILE,IEN,PXKNODE,"BEFORE",MOD)=""
|
---|
| 120 | ...... S @PXKROOT@(FILE,IEN,PXKNODE,"AFTER",MOD)=""
|
---|
| 121 | .... S @PXKROOT@(FILE,IEN,PXKNODE,"BEFORE")=$G(@VFILE@(IEN,PXKNODE))
|
---|
| 122 | .... S @PXKROOT@(FILE,IEN,PXKNODE,"AFTER")=$G(@VFILE@(IEN,PXKNODE))
|
---|
| 123 | Q
|
---|
| 124 | ;
|
---|