Changeset 636 for FOIAVistA/tag/r/CLINICAL_REMINDERS-PXRM/PXRMEXCS.m
- Timestamp:
- Dec 4, 2009, 8:26:01 PM (14 years ago)
- Location:
- FOIAVistA/tag/r
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
FOIAVistA/tag/r/CLINICAL_REMINDERS-PXRM/PXRMEXCS.m
r628 r636 1 PXRMEXCS ; SLC/PKR - Routines to compute checksums. ;07/27/2007 2 ;;2.0;CLINICAL REMINDERS;**6**;Feb 04, 2005;Build 123 3 ;==================================================== 4 CHECKSUM(ATTR,START,END) ;Get the the checksum for a packed reminder 5 ;component and load it into the attribute array. 6 N CS,LINE 7 ;If checksum is in packed component return it otherwise calculate it. 8 I ATTR("FILE NUMBER")=0 D 9 . S LINE=^PXD(811.8,PXRMRIEN,100,START-3,0) 10 . S CS=$$GETTAGV^PXRMEXU3(LINE,"<CHECKSUM>") 11 . I CS="" S CS=$$PRTNCS(PXRMRIEN,START,END) 12 I ATTR("FILE NUMBER")>0 D 13 . S LINE=^PXD(811.8,PXRMRIEN,100,START-2,0) 14 . S CS=$$GETTAGV^PXRMEXU3(LINE,"<CHECKSUM>") 15 . I CS="" S CS=$$PFDACS(PXRMRIEN,START,END) 16 S ATTR("CHECKSUM")=CS 17 Q 18 ; 19 ;==================================================== 20 DIQOUTCS(DIQOUT) ;Return checksum for a processed DIQOUT array. 21 N CS,DATA,FIELD,FNUM,IENS,IND,SFN,STRING,TARGET,TEXT,WP 22 S FNUM=$O(DIQOUT("")) 23 D FIELD^DID(FNUM,"EDIT HISTORY","","SPECIFIER","TARGET") 24 S SFN=+$G(TARGET("SPECIFIER")) 25 S (CS,FNUM)=0 26 F S FNUM=$O(DIQOUT(FNUM)) Q:FNUM="" D 27 . I FNUM=SFN Q 28 . S IENS="" 29 . F S IENS=$O(DIQOUT(FNUM,IENS)) Q:IENS="" D 30 .. S FIELD=0 31 .. F S FIELD=$O(DIQOUT(FNUM,IENS,FIELD)) Q:FIELD="" D 32 ... S DATA=DIQOUT(FNUM,IENS,FIELD) 33 ... S TEXT=FNUM_$L(IENS,",")_FIELD_DATA 34 ... S CS=$$CRC32^XLFCRC(TEXT,CS) 35 ... I DATA["WP-start" F IND=1:1:$P(DATA,"~",2) D 36 .... S TEXT=DIQOUT(FNUM,IENS,FIELD,IND) 37 .... S CS=$$CRC32^XLFCRC(TEXT,CS) 38 Q CS 39 ; 1 PXRMEXCS ; SLC/PKR - Routines to compute checksums. ;12/21/2004 2 ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005 40 3 ;==================================================== 41 4 FILE(FILENUM,IEN) ;Return checksum for entry IEN in file FILENUM. 42 N CS,DIQOUT,IENROOT,MSG 43 D GETS^DIQ(FILENUM,IEN,"**","N","DIQOUT","MSG") 44 ;Remove edit history from all reminder files. 45 D RMEH^PXRMEXPU(FILENUM,.DIQOUT,1) 46 ;Convert the iens to the FDA adding form. 47 D CONTOFDA^PXRMEXPU(.DIQOUT,.IENROOT) 48 S CS=$$DIQOUTCS(.DIQOUT) 5 N CS,LC,REF,ROOT,TARGET 6 D FILE^DID(FILENUM,"","GLOBAL NAME","TARGET") 7 S ROOT=$$CREF^DILF(TARGET("GLOBAL NAME")) 8 K ^TMP($J,"PXRMEXCS") 9 M ^TMP($J,"PXRMEXCS")=@ROOT@(IEN) 10 S REF="^TMP($J,""PXRMEXCS"")" 11 S REF=$NA(@REF) 12 S (CS,LC)=0 13 F S REF=$Q(@REF) Q:REF'["PXRMEXCS" S LC=LC+1,CS=CS+$$LINECS(LC,@REF) 14 K ^TMP($J,"PXRMEXCS") 49 15 Q CS 50 16 ; … … 65 31 N CS,IND,LINE 66 32 S (CS,IND)=0 67 F S IND=$O(@GBL@(IND)) Q:+IND=0 S LINE=@GBL@(IND),CS=$$CRC32^XLFCRC(LINE,CS) 33 F S IND=$O(@GBL@(IND)) Q:+IND=0 S LINE=@GBL@(IND),CS=CS+$$LINECS(IND,LINE) 34 Q CS 35 ; 36 ;==================================================== 37 LINECS(LINENUM,STRING) ;Return checksum of line number LINEUM whose contents 38 ;is STRING. 39 N CS,IND,LEN 40 S CS=0 41 S LEN=$L(STRING) 42 F IND=1:1:LEN S CS=CS+($A(STRING,IND)*(LINENUM+IND)) 68 43 Q CS 69 44 ; … … 73 48 S NLINES=+$P($G(^XMB(3.9,XMZ,2,0)),U,3) 74 49 S CS=0 75 F IND=1:1:NLINES S LINE=$G(^XMB(3.9,XMZ,2,IND,0)),CS=$$CRC32^XLFCRC(LINE,CS) 76 Q CS 77 ; 78 ;==================================================== 79 PFDACS(IEN,FDASTART,FDAEND) ;Return checksum for FDA array of packed 80 ;reminder component. 81 N CS,DATA,IENS,IND,JND,FIELD,FNUM,SFN,TARGET,TEMP,TEXT 82 S TEMP=^PXD(811.8,IEN,100,FDASTART,0) 83 S FNUM=$P(TEMP,";",1) 84 D FIELD^DID(FNUM,"EDIT HISTORY","","SPECIFIER","TARGET") 85 S SFN=+$G(TARGET("SPECIFIER")) 86 S CS=0 87 F IND=FDASTART:1:FDAEND D 88 . S TEMP=^PXD(811.8,IEN,100,IND,0) 89 . S DATA=$P(TEMP,"~",2,99) 90 . S TEMP=$P(TEMP,"~",1) 91 . S FNUM=$P(TEMP,";",1) 92 . I FNUM=SFN Q 93 . I FNUM="Exchange Stub" Q 94 . S IENS=$P(TEMP,";",2) 95 . S FIELD=$P(TEMP,";",3) 96 . S TEXT=FNUM_$L(IENS,",")_FIELD_DATA 97 . S CS=$$CRC32^XLFCRC(TEXT,CS) 98 . I DATA["WP-start" F JND=1:1:$P(DATA,"~",2) D 99 .. S IND=IND+1 100 .. S TEXT=^PXD(811.8,IEN,100,IND,0) 101 .. S CS=$$CRC32^XLFCRC(TEXT,CS) 50 F IND=1:1:NLINES S LINE=$G(^XMB(3.9,XMZ,2,IND,0)),CS=CS+$$LINECS(IND,LINE) 102 51 Q CS 103 52 ; … … 105 54 ROUTINE(RA) ;Return checksum for a routine loaded in array RA. RA has the 106 55 ;form created by ^%ZOSF("LOAD") i.e, RA(1,0) ... RA(N,0). 107 N CS,IND, TEXT56 N CS,IND,LINE 108 57 S (CS,IND)=0 109 ;Get rid of the build number on the second line. 110 S RA(2,0)=$P(RA(2,0),";",1,6) 111 F S IND=$O(RA(IND)) Q:+IND=0 D 112 . S TEXT=RA(IND,0) 113 . S CS=$$CRC32^XLFCRC(RA(IND,0),CS) 58 F S IND=$O(RA(IND)) Q:+IND=0 S CS=CS+$$LINECS(IND,RA(IND,0)) 114 59 Q CS 115 60 ; 116 61 ;==================================================== 117 RTN CS(ROUTINE) ;Return checksum for a routine ROUTINE.62 RTN(ROUTINE) ;Return checksum for a routine ROUTINE. 118 63 N CS,DIF,RA,X,XCNP 119 64 S XCNP=0 … … 128 73 Q CS 129 74 ; 130 ;====================================================131 PRTNCS(IEN,START,END) ;Return checksum for a packed routine.132 N CS,IND,SL,TEXT133 S CS=0,SL=START+1134 F IND=START:1:END D135 . S TEXT=^PXD(811.8,IEN,100,IND,0)136 . ;Get rid of the build number on the second line.137 . I IND=SL S TEXT=$P(TEXT,";",1,6)138 . S CS=$$CRC32^XLFCRC(TEXT,CS)139 Q CS140 ;
Note:
See TracChangeset
for help on using the changeset viewer.