| 1 | RAHLO2 ;HIRMFO/GJC-File rpt (data from bridge program) ;10/30/97  09:02
 | 
|---|
| 2 |  ;;5.0;Radiology/Nuclear Medicine;**55,80,84**;Mar 16, 1998;Build 13
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Integration Agreements
 | 
|---|
| 5 |  ;----------------------
 | 
|---|
| 6 |  ;$$FIND1^DIC(2051); UPDATE^DIE(2053); $$DT^XLFDT(10103); $$UP^XLFSTR(10104)
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | ADENDUM ; This functions store new lines of text at the end of the existing 
 | 
|---|
| 9 |  ;impression and report text. If this report is being amended through the
 | 
|---|
| 10 |  ;teleradiology service, add the addendum text to the IMPRESSION TEXT (#300)
 | 
|---|
| 11 |  ;field only. Note: Only ADENDUM was edited for RA*5.0*84 gjc/09.18.07
 | 
|---|
| 12 |  N A,COUNTER,I,J,NODE,ROOT,SUB,X,Y
 | 
|---|
| 13 |  ;NODE = ^RARPT(RARPT,"I" -or- "R"  -> where the data is to be stored...
 | 
|---|
| 14 |  ;ROOT = ^TMP("RARPT-REC",$J,RASUB  -> where the addendum data resides...
 | 
|---|
| 15 |  F A="I","R" D  K I,J
 | 
|---|
| 16 |  .S SUB=$S(A="I":"RAIMP",1:"RATXT"),ROOT=$NA(^TMP("RARPT-REC",$J,RASUB,SUB)) Q:'$O(@ROOT@(0))
 | 
|---|
| 17 |  .S NODE=$NA(^RARPT(RARPT,A))
 | 
|---|
| 18 |  .S COUNTER=+$O(@NODE@($C(32)),-1) ;last record #
 | 
|---|
| 19 |  .;
 | 
|---|
| 20 |  .;if there is existing text, add a null line for space.
 | 
|---|
| 21 |  .I '($D(I)#2),(COUNTER>0) S COUNTER=COUNTER+1,@NODE@(COUNTER,0)=$C(32),I=""
 | 
|---|
| 22 |  .;
 | 
|---|
| 23 |  .S Y=0 F  S Y=$O(@ROOT@(Y)) Q:'Y  D
 | 
|---|
| 24 |  ..S X=@ROOT@(Y)
 | 
|---|
| 25 |  ..;if addendum text is to be the original text no spacer is needed ('Addendum:' tag applied)
 | 
|---|
| 26 |  ..;if prior report or impression text exist, insert a blank as a spacer
 | 
|---|
| 27 |  ..;^RARPT(RARPT,"I",1,0)="original impression"
 | 
|---|
| 28 |  ..;^RARPT(RARPT,"I",2,0)="" <- insert a null line as a spacer
 | 
|---|
| 29 |  ..;^RARPT(RARPT,"I",3,0)="Addendum: first line of addendum" ** NOTE 'Addendum:' tag **
 | 
|---|
| 30 |  ..;^RARPT(RARPT,"I",4,0)="second line of addendum"
 | 
|---|
| 31 |  ..;...
 | 
|---|
| 32 |  ..;^RARPT(RARPT,"I",N,0)="Nth and last line of addendum"
 | 
|---|
| 33 |  ..S COUNTER=COUNTER+1
 | 
|---|
| 34 |  ..;set the first line of the addendum w/header: 'Addendum: '
 | 
|---|
| 35 |  ..I '($D(J)#2) S X="Addendum: "_X,J=""
 | 
|---|
| 36 |  ..S @NODE@(COUNTER,0)=X
 | 
|---|
| 37 |  ..Q
 | 
|---|
| 38 |  .S @NODE@(0)="^^"_COUNTER_"^"_COUNTER_"^"_$$DT^XLFDT()
 | 
|---|
| 39 |  .Q
 | 
|---|
| 40 |  Q
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 | ERR(A) ; Invalid impression/report text message.
 | 
|---|
| 43 |  ; Input: 'A' - either "I" for impression, or "R" for report
 | 
|---|
| 44 |  ; Output: the appropriate error message
 | 
|---|
| 45 |  Q "Invalid "_$S(A="I":"Impression",1:"Report")_" Text"
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 | DIAG ; Check if the Diagnostic Codes passed are valid.  Set RADX equal
 | 
|---|
| 48 |  ; to primary Dx code pntr value.  Set RASECDX(x) to the secondary
 | 
|---|
| 49 |  ; Dx code(s) if any.
 | 
|---|
| 50 |  N RAXFIRST
 | 
|---|
| 51 |  S I=0,RAXFIRST=1
 | 
|---|
| 52 |  K RASECDX
 | 
|---|
| 53 |  F  S I=$O(^TMP("RARPT-REC",$J,RASUB,"RADX",I)) Q:I'>0  D  Q:$D(RAERR)
 | 
|---|
| 54 |  . S RADIAG=$G(^TMP("RARPT-REC",$J,RASUB,"RADX",I))
 | 
|---|
| 55 |  . ;S:RADIAG']"" RAERR="Missing Diagnostic Code" Q:$D(RAERR)
 | 
|---|
| 56 |  . Q:RADIAG']""  ;Missing Diagnostic Code  Patch 80
 | 
|---|
| 57 |  . ; If RADXIEN is a number, set RADXIEN to what is assumed to be a
 | 
|---|
| 58 |  . ; valid pointer (ien) for file 78.3
 | 
|---|
| 59 |  . I +RADIAG=RADIAG S RADXIEN=RADIAG
 | 
|---|
| 60 |  . ; If RADIAG is in a free text format, convert the external value
 | 
|---|
| 61 |  . ; into the ien for file 78.3
 | 
|---|
| 62 |  . I +RADIAG'=RADIAG S RADXIEN=$$FIND1^DIC(78.3,"","X",RADIAG)
 | 
|---|
| 63 |  . I '$D(^RA(78.3,RADXIEN,0)) S RAERR="Invalid Diagnostic Code" Q
 | 
|---|
| 64 |  . IF RAXFIRST S RADX=RADXIEN,RAXFIRST=0 Q  ; RADX=pri. Dx Code
 | 
|---|
| 65 |  . ; are any of the sec. Dx codes equal to our pri. Dx code?
 | 
|---|
| 66 |  . ;S:RADXIEN=RADX RAERR="Secondary Dx codes must differ from the primary Dx code." Q:$D(RAERR)
 | 
|---|
| 67 |  . Q:RADXIEN=RADX  ;Secondary Dx codes must differ from the primary Dx code  Patch 80
 | 
|---|
| 68 |  . ;S:$D(RASECDX(RADXIEN))#2 RAERR="Duplicate secondary Dx codes." Q:$D(RAERR)
 | 
|---|
| 69 |  . Q:$D(RASECDX(RADXIEN))#2  ;Duplicate secondary Dx codes. Patch 80
 | 
|---|
| 70 |  . S RASECDX(RADXIEN)="" ; set the sec. Dx array
 | 
|---|
| 71 |  . Q
 | 
|---|
| 72 |  K I,RADIAG,RADXIEN
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 | SECDX ; Kill old sec. Dx nodes, and add the new ones into the 70.14 multiple
 | 
|---|
| 75 |  ; called from RAHLO.  Needs RADFN,RADTI & RACNI to function.
 | 
|---|
| 76 |  Q:'$D(RADFN)!('$D(RADTI))!('$D(RACNI))
 | 
|---|
| 77 |  I $O(^RADPT(RADFN,"DT",RADTI,"P",RACNI,"DX",0)) D KILSECDG^RAHLO4
 | 
|---|
| 78 |  ;K RAFDA N RAX S RAX=0,RAFDA(70,"?1,",.01)=RADFN
 | 
|---|
| 79 |  ;S RAFDA(70.02,"?2,?1,",.01)=(9999999.9999-RADTI)
 | 
|---|
| 80 |  ;S RAFDA(70.03,"?3,?2,?1,",.01)=$P($G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0)),"^")
 | 
|---|
| 81 |  ;F  S RAX=$O(RASECDX(RAX)) Q:RAX'>0  D
 | 
|---|
| 82 |  ;. S RAFDA(70.14,"?"_RAX_"9,?3,?2,?1,",.01)=RAX
 | 
|---|
| 83 |  ;. Q
 | 
|---|
| 84 |  ;D UPDATE^DIE("","RAFDA",,"RAERR")
 | 
|---|
| 85 |  ;I $D(RAERR) M ^TMP("ERR")=RAERR
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  N RAX S RAX=0
 | 
|---|
| 88 |  N RAFDA,RA2
 | 
|---|
| 89 |  K RAFDA
 | 
|---|
| 90 |  ; K ^TMP("RAERR",$J)
 | 
|---|
| 91 |  S RA2=RACNI_","_RADTI_","_RADFN
 | 
|---|
| 92 |  F  S RAX=$O(RASECDX(RAX)) Q:RAX'>0  D
 | 
|---|
| 93 |  . S RAFDA(70.14,"?+"_RAX_"9,"_RA2_",",.01)=RAX
 | 
|---|
| 94 |  D UPDATE^DIE("","RAFDA",,"RAERR")
 | 
|---|
| 95 |  ; I $D(RAERR) M ^TMP("RAERR",$J)=RAERR
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  Q
 | 
|---|
| 98 | IMPTXT ; Check if the impression text consists only of the string
 | 
|---|
| 99 |  ; 'impression:".  If 'impression:' is the only set of characters,
 | 
|---|
| 100 |  ; (spaces are excluded) then delete the "RAIMP" node.
 | 
|---|
| 101 |  N RA1 S RA1=$O(^TMP("RARPT-REC",$J,RASUB,"RAIMP",0))
 | 
|---|
| 102 |  Q:'RA1  N RAIMP S RAIMP=$G(^TMP("RARPT-REC",$J,RASUB,"RAIMP",RA1))
 | 
|---|
| 103 |  I $$UP^XLFSTR($E(RAIMP,1,11))="IMPRESSION:" D
 | 
|---|
| 104 |  . S $E(RAIMP,1,11)="" ; strip out 'impression:' if it is the first
 | 
|---|
| 105 |  . ;                     eleven chars of the impression text
 | 
|---|
| 106 |  . ; now strip off leading spaces from the remaining
 | 
|---|
| 107 |  . ; text that led with 'impression:' if present
 | 
|---|
| 108 |  . F I1=1:1 S:$E(RAIMP,I1)'=" " RAIMP=$E(RAIMP,I1,99999) Q:$E(RAIMP)'=" "
 | 
|---|
| 109 |  . S ^TMP("RARPT-REC",$J,RASUB,"RAIMP",RA1)=RAIMP
 | 
|---|
| 110 |  . Q
 | 
|---|
| 111 |  Q:$O(^TMP("RARPT-REC",$J,RASUB,"RAIMP",RA1))  ; more imp. text follows
 | 
|---|
| 112 |  K:$G(^TMP("RARPT-REC",$J,RASUB,"RAIMP",RA1))="" ^TMP("RARPT-REC",$J,RASUB,"RAIMP",RA1) ; if only "RAIMP" node null, delete "RAIMP" node
 | 
|---|
| 113 |  Q
 | 
|---|