| 1 | MCARAM4 ;WASH ISC/JKL-MUSE TRANSFER LAB DATA TO LOCAL ;5/20/94  15:35 | 
|---|
| 2 | ;;2.3;Medicine;;09/13/1996 | 
|---|
| 3 | ; | 
|---|
| 4 | ; | 
|---|
| 5 | ;Checks format and/or reformats data | 
|---|
| 6 | AR(MCA,MCAA,MCD,MCFP,MCLP,MCCK) ;Sets l/t stripped data field into an array | 
|---|
| 7 | ; USAGE: S X=$$AR^MCARAM4(.A,B,C,D,E) | 
|---|
| 8 | ; WHERE: .A = array where data is placed | 
|---|
| 9 | ;         B = array argument for data field | 
|---|
| 10 | ;         C = data field value | 
|---|
| 11 | ;         D = first position of data field | 
|---|
| 12 | ;         E = last position of data field | 
|---|
| 13 | ;         F = 1 to check numeric data field value for positive int value | 
|---|
| 14 | ;             2 to check "" for both positive and negative int value | 
|---|
| 15 | ;             3 to check "" for pos,neg,int, and decimal values | 
|---|
| 16 | N MCI,MCERR | 
|---|
| 17 | I '$D(MCCK) S MCCK="" | 
|---|
| 18 | S MCA(MCAA)=$E(MCD,MCFP,MCLP),MCI=MCA(MCAA),MCERR=$$SLTS^MCARAM4(.MCI),MCA(MCAA)=MCI I +MCERR>0 Q MCERR | 
|---|
| 19 | I MCCK=1 S MCERR=$$DFCK^MCARAM4(MCA(MCAA),MCCK) I +MCERR>0 Q MCERR | 
|---|
| 20 | I MCCK=2 S MCERR=$$DFCK^MCARAM4(MCA(MCAA),MCCK) I +MCERR>0 Q MCERR | 
|---|
| 21 | I MCCK=3 S MCERR=$$DFCK^MCARAM4(MCA(MCAA),MCCK) I +MCERR>0 Q MCERR | 
|---|
| 22 | Q 0 | 
|---|
| 23 | ; | 
|---|
| 24 | DFCK(MCV,MCCK) ; Checks numeric,negative,positive,integer,decimal value | 
|---|
| 25 | ; USAGE: S X=$$DFCK^MCARAM4(A,B) | 
|---|
| 26 | ; WHERE: A=data field value | 
|---|
| 27 | ;        B=1 for positive value numeric (integer) check | 
|---|
| 28 | ;        B=2 for positive and negative value numeric (integer) check | 
|---|
| 29 | ;        B=3 for positive, negative, decimal, or integer numeric check | 
|---|
| 30 | ; if successful, returns function value of 0 | 
|---|
| 31 | ; if unsuccessful, returns error message for incorrect field format | 
|---|
| 32 | N MCERR | 
|---|
| 33 | I MCV="" S MCERR="2-Null data field" Q MCERR | 
|---|
| 34 | I MCV=0 Q 0 | 
|---|
| 35 | I $G(MCCK)=1 I MCV?1N.N Q 0 | 
|---|
| 36 | I $G(MCCK)=2 I MCV?."-"1N.N,$P(MCV,"-",2,99)'["-",-MCV+-MCV'=0 Q 0 | 
|---|
| 37 | I $G(MCCK)=3 I MCV?."-"."."1N.N.".".N,$P(MCV,".",2,99)'[".",$P(MCV,"-",2,99)'["-",-MCV+-MCV'=0 Q 0 | 
|---|
| 38 | S MCERR="1-Data field not numeric" Q MCERR | 
|---|
| 39 | ; | 
|---|
| 40 | SLTS(MCV) ; Strips leading and trailing spaces from data fields | 
|---|
| 41 | ; USAGE: S X=$$SLTS^MCARAM4(.A) | 
|---|
| 42 | ; WHERE: MCV=data field value | 
|---|
| 43 | ;       .A = value where data is placed | 
|---|
| 44 | ; if successful, returns function value of 0 and data field value | 
|---|
| 45 | ; if unsuccessful, returns error message for incorrect field format | 
|---|
| 46 | N MCERR,MCI,MCJ | 
|---|
| 47 | I MCV="" S MCERR="2-Null data field" Q MCERR | 
|---|
| 48 | F MCI=1:1 I $E(MCV,MCI,MCI)'=" " Q | 
|---|
| 49 | F MCJ=$L(MCV):-1 I $E(MCV,MCJ,MCJ)'=" " Q | 
|---|
| 50 | S MCV=$E(MCV,MCI,MCJ) I MCV="" S MCERR="2-Null data field" Q MCERR | 
|---|
| 51 | Q 0 | 
|---|
| 52 | ; | 
|---|
| 53 | DGCK(MCA) ;Removes null lines and resets numbering of diagnosis array | 
|---|
| 54 | ; USAGE: S X=$$DGCK^MCARAM4(.A) | 
|---|
| 55 | ; WHERE: MCA=diagnosis array | 
|---|
| 56 | ;       .A=diagnosis array renumbered without null lines | 
|---|
| 57 | ;        A("DX,0")=total number of non-null diagnosis lines | 
|---|
| 58 | ; if successful, returns function value of 0 and diagnosis array | 
|---|
| 59 | ; if unsuccessful, returns error message and A("DX,0")=0 | 
|---|
| 60 | N MCI,MCJ,MCK,MCERR | 
|---|
| 61 | S MCI=0,MCJ="DX,0" | 
|---|
| 62 | F  S MCJ=$O(MCA(MCJ)) Q:MCJ=""!($E(MCJ)'=$E("DX,0"))  S:MCA(MCJ)'="" MCI=MCI+1 I MCA(MCJ)="" K MCA(MCJ) S MCK=MCJ F  S MCK=$O(MCA(MCK)) Q:MCK=""!($E(MCK)'=$E("DX,0"))  I MCA(MCK)'="" S MCA(MCJ)=MCA(MCK),MCI=MCI+1,MCA(MCK)="" Q | 
|---|
| 63 | S MCA("DX,0")=MCI I MCI>0 Q 0 | 
|---|
| 64 | S MCERR="62-Diagnosis is a null data field" Q MCERR | 
|---|
| 65 | ; | 
|---|
| 66 | RXCK(MCA) ;Removes null lines and resets numbering of medication array | 
|---|
| 67 | ; USAGE: S X=$$RXCK^MCARAM4(.A) | 
|---|
| 68 | ; WHERE: MCA=medication array | 
|---|
| 69 | ;        .A=medication array renumbered without null lines | 
|---|
| 70 | ;        A("RX,0")=total number of non-null medication lines | 
|---|
| 71 | ; if successful, returns function value of 0 and medication array | 
|---|
| 72 | ; if unsuccessful, returns error message and A("RX,0")=0 | 
|---|
| 73 | N MCI,MCJ,MCK,MCERR | 
|---|
| 74 | I MCA("RX,0")="" S MCA("RX,0")=0,MCERR="4-Medication is a null data field" Q MCERR | 
|---|
| 75 | F MCJ=1:1 S MCK="RX,"_MCJ,MCA(MCK)=$P(MCA("RX,0"),", ",MCJ) Q:MCA(MCK)=""  S MCI=$P(MCA(MCK)," ") I MCI'="",$D(^PSDRUG("B",MCI)) S MCA(MCK)=$O(^(MCI,0))_U_$P(MCA(MCK)," ",2)_U_$P(MCA(MCK)," ",3) | 
|---|
| 76 | K MCA(MCK) | 
|---|
| 77 | S MCA("RX,0")=MCJ-1 I MCJ-1=0 S MCERR="4-Medication is a null data field" Q MCERR | 
|---|
| 78 | Q 0 | 
|---|
| 79 | ; | 
|---|
| 80 | DGCT(MCA,MCD,MCL) ;Fill diagnosis array from continuation record | 
|---|
| 81 | ; USAGE: S X=$$DGCT^MCARAM4(.A,B,C) | 
|---|
| 82 | ; WHERE: MCA=diagnosis array | 
|---|
| 83 | ;       .A=diagnosis array renumbered without null lines | 
|---|
| 84 | ;        B=data field value, C=line number of data | 
|---|
| 85 | ;        A("DX,0")=total number of non-null diagnosis lines | 
|---|
| 86 | ;        "DX,L"=12th line of diagnosis, "DX,V"=22nd line | 
|---|
| 87 | ; if successful, returns function value of 0 and diagnosis array | 
|---|
| 88 | ; if unsuccessful, returns error message and A("DX,0")=0 | 
|---|
| 89 | N MCI,MCERR | 
|---|
| 90 | S MCI="DX,"_MCA("CONT") | 
|---|
| 91 | I MCL=13!(MCL=25) S MCERR=$$AR^MCARAM4(.MCA,MCI,MCD,32,78) Q:+MCERR>0 MCERR  Q 0 | 
|---|
| 92 | S MCERR=$$AR^MCARAM4(.MCA,MCI,MCD,32,134) Q:+MCERR>0 MCERR | 
|---|
| 93 | Q 0 | 
|---|
| 94 | ; | 
|---|
| 95 | ERR ;Error return | 
|---|
| 96 | Q MCERR | 
|---|