| 1 | RA45PST1 ;Hines OI/GJC - Post-init 'A', patch 45 ;10/10/03  06:32
 | 
|---|
| 2 | VERSION ;;5.0;Radiology/Nuclear Medicine;**45**;Mar 16, 1998
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | ENQ1 ;Need to convert the data in the old 'BARIUM USED?' (#5) field in
 | 
|---|
| 5 |  ;the 70.03 data dictionary to the CONTRAST MEDIA (#225) multiple
 | 
|---|
| 6 |  ;70.3225. If 'Yes' to 'BARIUM USED?' then 'Barium' will be added
 | 
|---|
| 7 |  ;as a record to the new CONTRAST MEDIA field. The 'BARIUM USED?'
 | 
|---|
| 8 |  ;field will be deleted. This will be a background process queued
 | 
|---|
| 9 |  ;to run by the RA*5*45 post-init.
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ;IAs used in this subroutine: 4381 ("RA" node file 101.43), 4382
 | 
|---|
| 12 |  ;("S.XRAY" xref), & 1995 ($$cpt^icptcod)
 | 
|---|
| 13 |  ;IA 10035 used to obtain patient name
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ;called from EN^RA45PST, queued...
 | 
|---|
| 16 |  K ^TMP("RA*5*45 BARIUM USED",$J)
 | 
|---|
| 17 |  S:$D(ZTQUEUED) ZTREQ="@" S (RACT,RADFN,ZTSTOP)=0
 | 
|---|
| 18 |  F  S RADFN=$O(^RADPT(RADFN)) Q:'RADFN  D  Q:ZTSTOP
 | 
|---|
| 19 |  .S RADTI=0
 | 
|---|
| 20 |  .F  S RADTI=$O(^RADPT(RADFN,"DT",RADTI)) Q:'RADTI  D  Q:ZTSTOP
 | 
|---|
| 21 |  ..S RACNI=0
 | 
|---|
| 22 |  ..F  S RACNI=$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI)) Q:'RACNI  D  Q:ZTSTOP
 | 
|---|
| 23 |  ...S Y=$G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0)),RACT=RACT+1
 | 
|---|
| 24 |  ...S:RACT#500=0 ZTSTOP=$$S^%ZTLOAD() Q:ZTSTOP
 | 
|---|
| 25 |  ...;------------------------------------------------------------------
 | 
|---|
| 26 |  ...;Indicate that barium was used by updating the new CONTRAST MEDIA
 | 
|---|
| 27 |  ...;field (multiple, sub-file 70.3225)
 | 
|---|
| 28 |  ...I $E($$UP^XLFSTR($P(Y,"^",5)))="Y" D
 | 
|---|
| 29 |  ....;------- update fields: CONTRAST MEDIA USED & BARIUM USED? -------
 | 
|---|
| 30 |  ....L +^RADPT(RADFN,"DT",RADTI,"P",RACNI,0):30 ;lock xam record
 | 
|---|
| 31 |  ....I '$T D TRACK Q  ;track the record that could not be updated
 | 
|---|
| 32 |  ....S RAD3=$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI,"CM",$C(32)),-1)+1
 | 
|---|
| 33 |  ....S RAIEN="+"_RAD3_","_RACNI_","_RADTI_","_RADFN_","
 | 
|---|
| 34 |  ....S RAFDA(70.3225,RAIEN,.01)="B" D UPDATE^DIE("","RAFDA","RAIEN")
 | 
|---|
| 35 |  ....K RAD3,RAFDA,RAIEN
 | 
|---|
| 36 |  ....S RAIEN=RACNI_","_RADTI_","_RADFN_","
 | 
|---|
| 37 |  ....S RAFDA(70.03,RAIEN,5)="@" ;delete data in BARIUM USED?
 | 
|---|
| 38 |  ....S RAFDA(70.03,RAIEN,10)="Y" ;set CONTRAST MEDIA USED field to YES
 | 
|---|
| 39 |  ....D FILE^DIE("","RAFDA") K RAFDA,RAIEN
 | 
|---|
| 40 |  ....L -^RADPT(RADFN,"DT",RADTI,"P",RACNI,0) ;unlock; on to next record
 | 
|---|
| 41 |  ....Q
 | 
|---|
| 42 |  ...;------------------------------------------------------------------
 | 
|---|
| 43 |  ...Q
 | 
|---|
| 44 |  ..Q
 | 
|---|
| 45 |  .Q
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  ;delete the 'BARIUM USED?' data dictionary 70.03, field #5 only if
 | 
|---|
| 48 |  ;the user did not stop the task
 | 
|---|
| 49 |  I ZTSTOP=0 K DA,DIK S DIK="^DD(70.03,",DA(1)=70.03,DA=5 D ^DIK
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  ;if the user stopped the task, note that event
 | 
|---|
| 52 |  D:ZTSTOP=1 STOP
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  ;if examination records failed to get updated, if the user terminated
 | 
|---|
| 55 |  ;the post-init through TaskMan, or if both conditions are true inform
 | 
|---|
| 56 |  ;the user via email
 | 
|---|
| 57 |  D:+$O(^TMP("RA*5*45 BARIUM USED",$J,0)) MAIL
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 | KILLQ1 ;Kill and clean up symbol table
 | 
|---|
| 60 |  K %,DA,DIC,DIK,RACNI,RADFN,RADTI,RAIEN,X,Y
 | 
|---|
| 61 |  K ^TMP("RA*5*45 BARIUM USED",$J)
 | 
|---|
| 62 |  Q
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 | MAIL ;generate the email message informing the user of the following events:
 | 
|---|
| 65 |  ;A) some examination records were not properly updated
 | 
|---|
| 66 |  ;B) the process was stopped by the user via TaskMan
 | 
|---|
| 67 |  ;C) both events A & B are true
 | 
|---|
| 68 |  S ^TMP("RA*5*45 BARIUM USED",$J,.1)="The following patient(s) failed to have their exam records (70.03) updated"
 | 
|---|
| 69 |  S ^TMP("RA*5*45 BARIUM USED",$J,.2)="accordingly because another user was editing the same record."
 | 
|---|
| 70 |  S ^TMP("RA*5*45 BARIUM USED",$J,.3)=""
 | 
|---|
| 71 |  S ^TMP("RA*5*45 BARIUM USED",$J,.4)="Format: patient name ^ exam date/time ^ case # ^ procedure name (truncated to"
 | 
|---|
| 72 |  S ^TMP("RA*5*45 BARIUM USED",$J,.5)="forty characters)"
 | 
|---|
| 73 |  S ^TMP("RA*5*45 BARIUM USED",$J,.6)=""
 | 
|---|
| 74 |  N XMDUZ,XMSUB,XMTEXT,XMY S XMDUZ=.5
 | 
|---|
| 75 |  S XMTEXT="^TMP(""RA*5*45 BARIUM USED"",$J,"
 | 
|---|
| 76 |  S XMSUB="RA*5*45: 'Barium Used?' post-init issue detected"
 | 
|---|
| 77 |  I '$$GOTLOCAL^XMXAPIG("G.RAD PERFORMANCE INDICATOR") D
 | 
|---|
| 78 |  .S XMY(DUZ)=""
 | 
|---|
| 79 |  E  S XMY("G.RAD PERFORMANCE INDICATOR")=""
 | 
|---|
| 80 |  D ^XMD
 | 
|---|
| 81 |  Q
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 | STOP ;inform the user that the task has been stopped
 | 
|---|
| 84 |  S ^TMP("RA*5*45 BARIUM USED",$J,$$SUB())="RA*5*45's 'BARIUM USED?' data dictionary cleanup terminated prematurely"
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 | TRACK ;track the record that could not be locked for updating
 | 
|---|
| 88 |  ;by patient name, date/time of exam, case number, & procedure
 | 
|---|
| 89 |  ;Note: RADFN, RADTI, & RACNI are global in scope.
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  ;format: pat. name^exam date/time^case #^procedure name (trunc'd to 40)
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  N RAEXAM S RAEXAM=$G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0))
 | 
|---|
| 94 |  S ^TMP("RA*5*45 BARIUM USED",$J,$$SUB())=$$GET1^DIQ(2,RADFN,.01)_U_$$FMTE^XLFDT((9999999.9999-RADTI),"1P")_U_$P(RAEXAM,U)_U_$E($$GET1^DIQ(71,+$P(RAEXAM,U,2),.01),1,40)
 | 
|---|
| 95 |  Q
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 | SUB() ;return the next available subscript (arithmetic progression)
 | 
|---|
| 98 |  Q +$O(^TMP("RA*5*45 BARIUM USED",$J,$C(32)),-1)+1
 | 
|---|
| 99 |  ;
 | 
|---|