| 1 | SCMCHLR3 ;ALB/KCL - PCMM HL7 Reject Processing - Build List Area con't; 10-JAN-2000 | 
|---|
| 2 | ;;5.3;Scheduling;**210,272**;AUG 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | BLDLIST(SCSORTBY,SCEPS,SCCNT) ; Description: Build list area for for PCMM Transmission errors. | 
|---|
| 5 | ; | 
|---|
| 6 | ;  Input: | 
|---|
| 7 | ;   SCSORTBY - Sort by criteria | 
|---|
| 8 | ;               N -> Patient Name | 
|---|
| 9 | ;               D -> Date/Time Ack Received | 
|---|
| 10 | ;               P -> Provider | 
|---|
| 11 | ;      SCEPS -  Error processing status | 
|---|
| 12 | ; | 
|---|
| 13 | ; Output: | 
|---|
| 14 | ;  SCCNT - Number of lines in the list | 
|---|
| 15 | ; | 
|---|
| 16 | N DFN,SCSUB,SCTEXT,SCTLIEN,SCERIEN,SCTLOG,SCHL | 
|---|
| 17 | N SCPROV,SCTYPE,SCLINE,SCNUM,SCCOL,SCWID | 
|---|
| 18 | ; | 
|---|
| 19 | ;Init line counter and selection number | 
|---|
| 20 | S (SCLINE,SCNUM)=0 | 
|---|
| 21 | ; | 
|---|
| 22 | ;Quit if unable to determine col/width for caption flds in List Template | 
|---|
| 23 | Q:'$$CAPFLD(.SCCOL,.SCWID) | 
|---|
| 24 | ; | 
|---|
| 25 | ;Loop thru sort array by pat name, OR date ack rec'd, OR provider | 
|---|
| 26 | S SCSUB=$S(SCSORTBY="N":"",SCSORTBY="P":"",1:0) | 
|---|
| 27 | F  S SCSUB=$O(^TMP("SCERRSRT",$J,SCSORTBY,SCSUB)) Q:SCSUB=""  D | 
|---|
| 28 | .;loop through PCMM HL7 Transmission Log ien(s) | 
|---|
| 29 | .S SCTLIEN=0 | 
|---|
| 30 | .F  S SCTLIEN=$O(^TMP("SCERRSRT",$J,SCSORTBY,SCSUB,SCTLIEN)) Q:'SCTLIEN  D | 
|---|
| 31 | ..;loop through Error Code subfile ien(s) | 
|---|
| 32 | ..S SCERIEN=0 | 
|---|
| 33 | ..F  S SCERIEN=$O(^TMP("SCERRSRT",$J,SCSORTBY,SCSUB,SCTLIEN,SCERIEN)) Q:'SCERIEN  D | 
|---|
| 34 | ...; | 
|---|
| 35 | ...;write dot to screen as list is being built (every 50 lines) | 
|---|
| 36 | ...W:'(SCLINE#50) "." | 
|---|
| 37 | ...; | 
|---|
| 38 | ...;get data for PCMM HL7 Trans Log entry | 
|---|
| 39 | ...I $$GETLOG^SCMCHLA(SCTLIEN,SCERIEN,.SCTLOG) D | 
|---|
| 40 | ....; | 
|---|
| 41 | ....;increment selection number | 
|---|
| 42 | ....S SCNUM=SCNUM+1 | 
|---|
| 43 | ....; | 
|---|
| 44 | ....;increment line counter | 
|---|
| 45 | ....S SCLINE=SCLINE+1 | 
|---|
| 46 | ....; | 
|---|
| 47 | ....;set selection number in display array | 
|---|
| 48 | ....D SET(SCARY,SCLINE,SCNUM,SCCOL("NUM"),SCWID("NUM"),SCNUM,SCTLIEN,SCTLOG("DFN"),SCERIEN,.SCCNT) | 
|---|
| 49 | ....; | 
|---|
| 50 | ....;set retransmit flag in display array | 
|---|
| 51 | ....S SCTEXT=$S($G(SCTLOG("STATUS"))="M":"*",1:" ") | 
|---|
| 52 | ....D SET(SCARY,SCLINE,SCTEXT,SCCOL("RET"),SCWID("RET"),SCNUM,,,,.SCCNT) | 
|---|
| 53 | ....;set patient name in display array | 
|---|
| 54 | ....S SCTEXT=$$LOWER^VALM1($S($G(SCTLOG("WORK")):"WORKLOAD",$G(SCTLOG("DFN")):$P($G(^DPT(SCTLOG("DFN"),0)),"^",1),1:"UNKNOWN")) | 
|---|
| 55 | ....D SET(SCARY,SCLINE,SCTEXT,SCCOL("PAT"),SCWID("PAT"),SCNUM,,,,.SCCNT) | 
|---|
| 56 | ....; | 
|---|
| 57 | ....;set patient id in display array | 
|---|
| 58 | ....S DFN=+SCTLOG("DFN") D PID^VADPT | 
|---|
| 59 | ....D SET(SCARY,SCLINE,VA("BID"),SCCOL("PATID"),SCWID("PATID"),SCNUM,,,,.SCCNT) | 
|---|
| 60 | ....; | 
|---|
| 61 | ....;set date ack received in display array | 
|---|
| 62 | ....S SCTEXT=$$LOWER^VALM1($S($G(SCTLOG("ACK DT/TM")):$E($$FDATE^VALM1(SCTLOG("ACK DT/TM")),1,8),1:"UNKNOWN")) | 
|---|
| 63 | ....D SET(SCARY,SCLINE,SCTEXT,SCCOL("DTR"),SCWID("DTR"),SCNUM,,,,.SCCNT) | 
|---|
| 64 | ....; | 
|---|
| 65 | ....;set provider in display array | 
|---|
| 66 | ....S SCPROV="" | 
|---|
| 67 | ....K SCHL | 
|---|
| 68 | ....;I workload get provider | 
|---|
| 69 | ....I $G(SCTLOG("WORK")) S SCPROV=$$PROV^SCMCHLP(SCTLOG("WORK")) | 
|---|
| 70 | ....;get provider if ZPC segment error | 
|---|
| 71 | ....I $G(SCTLOG("ERR","SEG"))="ZPC" D | 
|---|
| 72 | .....I $$GETHL7ID^SCMCHLA2($G(SCTLOG("ERR","ZPCID")),.SCHL) | 
|---|
| 73 | .....S SCPTR=$P($G(SCHL("HL7ID")),"-",2) | 
|---|
| 74 | .....S SCPROV=$P($G(^SCTM(404.52,+$G(SCPTR),0)),"^",3) | 
|---|
| 75 | ....S SCTEXT=$$LOWER^VALM1($S($G(SCPROV)'="":$$EXTERNAL^DILFD(404.52,.03,,SCPROV),1:"N/A")) | 
|---|
| 76 | ....D SET(SCARY,SCLINE,SCTEXT,SCCOL("PROV"),SCWID("PROV"),SCNUM,,,,.SCCNT) | 
|---|
| 77 | ....; | 
|---|
| 78 | ....;set provider type in display array | 
|---|
| 79 | ....S SCTYPE=$P($G(SCHL("HL7ID")),"-",4) | 
|---|
| 80 | ....I $G(SCTLOG("WORK")) S SCTYPE="PC" | 
|---|
| 81 | ....S SCTEXT=$S(SCTYPE'="":SCTYPE,1:"N/A") | 
|---|
| 82 | ....D SET(SCARY,SCLINE,SCTEXT,SCCOL("TYPE"),SCWID("TYPE"),SCNUM,,,,.SCCNT) | 
|---|
| 83 | ....; | 
|---|
| 84 | ....;set error processing status in display array | 
|---|
| 85 | ....S SCTEXT=$$LOWER^VALM1($S($G(SCTLOG("ERR","EPS")):$$EXTERNAL^DILFD(404.47142,.06,,SCTLOG("ERR","EPS")),1:"UNKNOWN")) | 
|---|
| 86 | ....D SET(SCARY,SCLINE,SCTEXT,SCCOL("STA"),SCWID("STA"),SCNUM,,,,.SCCNT) | 
|---|
| 87 | ....; | 
|---|
| 88 | ....;increment line counter | 
|---|
| 89 | ....S SCLINE=SCLINE+1 | 
|---|
| 90 | ....; | 
|---|
| 91 | ....;set error code/desc in display array | 
|---|
| 92 | ....I $$GETEC^SCMCHLA2($G(SCTLOG("ERR","CODE")),.SCERR) | 
|---|
| 93 | ....S SCTEXT="Error: "_$S($G(SCERR("CODE"))'="":SCERR("CODE")_" - "_$G(SCERR("SHORT")),1:$$LOWER^VALM1("UNKNOWN")) | 
|---|
| 94 | ....K X S $P(X," ",160)="" | 
|---|
| 95 | ....S SCTEXT=$E(SCTEXT_X,1,150) | 
|---|
| 96 | ....D SET(SCARY,SCLINE,SCTEXT,10,$L(SCTEXT),SCNUM,,,,.SCCNT) | 
|---|
| 97 | ; | 
|---|
| 98 | Q | 
|---|
| 99 | ; | 
|---|
| 100 | ; | 
|---|
| 101 | SET(SCARY,SCLINE,SCTEXT,SCCOL,SCWID,SCNUM,SCTLIEN,SCDFN,SCERIEN,SCCNT) ; | 
|---|
| 102 | ; Description: Set display array. | 
|---|
| 103 | ; | 
|---|
| 104 | ;  Input: | 
|---|
| 105 | ;     SCARY - Global array subscript | 
|---|
| 106 | ;    SCLINE - Line number | 
|---|
| 107 | ;    SCTEXT - Text | 
|---|
| 108 | ;     SCCOL - Column to start at | 
|---|
| 109 | ;     SCWID - Column or text width | 
|---|
| 110 | ;     SCNUM - Selection number | 
|---|
| 111 | ;   SCTLIEN - PCMM HL7 Transmission Log IEN | 
|---|
| 112 | ;   SCERIEN - IEN of record in Error Code (#404.47142) multiple | 
|---|
| 113 | ;     SCDFN   Patient IEN | 
|---|
| 114 | ; | 
|---|
| 115 | ; Output: | 
|---|
| 116 | ;  SCCNT - Number of lines in the list | 
|---|
| 117 | ; | 
|---|
| 118 | N X | 
|---|
| 119 | S:SCLINE>SCCNT SCCNT=SCLINE | 
|---|
| 120 | S X=$S($D(^TMP(SCARY,$J,SCLINE,0)):^(0),1:"") | 
|---|
| 121 | S ^TMP(SCARY,$J,SCLINE,0)=$$SETSTR^VALM1(SCTEXT,X,SCCOL,SCWID) | 
|---|
| 122 | S ^TMP(SCARY,$J,"IDX",SCLINE,SCNUM)="" | 
|---|
| 123 | ; | 
|---|
| 124 | ;Set special index used in retransmitting patient | 
|---|
| 125 | I $G(SCTLIEN),$G(SCERIEN) D | 
|---|
| 126 | .I '$G(SCTLOG("WORK")) Q:'SCDFN | 
|---|
| 127 | .S ^TMP(SCARY_"IDX",$J,SCNUM)=SCLINE_"^"_SCTLIEN_"^"_SCERIEN | 
|---|
| 128 | .S ^TMP(SCARY_"IDX",$J,"PT",$S(SCDFN:SCDFN,1:"W"),SCLINE)=SCTLIEN_"^"_SCERIEN | 
|---|
| 129 | Q | 
|---|
| 130 | ; | 
|---|
| 131 | ; | 
|---|
| 132 | CAPFLD(SCCOL,SCWID) ; Description: Used to determine column/width of caption fields in the List Template. | 
|---|
| 133 | ; | 
|---|
| 134 | ;  Input: | 
|---|
| 135 | ;   VALMDDF - Array available at run-time of list template. This array | 
|---|
| 136 | ;             is subscripted by caption field name of List Template. | 
|---|
| 137 | ; | 
|---|
| 138 | ; Output: | 
|---|
| 139 | ;  Function value: Returns 1 on success, 0 on failure | 
|---|
| 140 | ;  SCCOL - array subscripted by abbreviation of caption field name containing the column number where the data/caption starts, pass by reference | 
|---|
| 141 | ;  SCWID - array subscripted by abbreviation of caption field name containing the number of charaters the data/caption will use, pass by reference | 
|---|
| 142 | ; | 
|---|
| 143 | ;Quit if VALMDDF array is not defined | 
|---|
| 144 | Q:'$D(VALMDDF) 0 | 
|---|
| 145 | ; | 
|---|
| 146 | N X | 
|---|
| 147 | S X=VALMDDF("NUMBER"),SCCOL("NUM")=$P(X,"^",2),SCWID("NUM")=$P(X,"^",3) | 
|---|
| 148 | S X=VALMDDF("RETRANS"),SCCOL("RET")=$P(X,"^",2),SCWID("RET")=$P(X,"^",3) | 
|---|
| 149 | S X=VALMDDF("PATIENT"),SCCOL("PAT")=$P(X,"^",2),SCWID("PAT")=$P(X,"^",3) | 
|---|
| 150 | S X=VALMDDF("PATID"),SCCOL("PATID")=$P(X,"^",2),SCWID("PATID")=$P(X,"^",3) | 
|---|
| 151 | S X=VALMDDF("DATE"),SCCOL("DTR")=$P(X,"^",2),SCWID("DTR")=$P(X,"^",3) | 
|---|
| 152 | S X=VALMDDF("PROV"),SCCOL("PROV")=$P(X,"^",2),SCWID("PROV")=$P(X,"^",3) | 
|---|
| 153 | S X=VALMDDF("TYPE"),SCCOL("TYPE")=$P(X,"^",2),SCWID("TYPE")=$P(X,"^",3) | 
|---|
| 154 | S X=VALMDDF("STATUS"),SCCOL("STA")=$P(X,"^",2),SCWID("STA")=$P(X,"^",3) | 
|---|
| 155 | Q 1 | 
|---|