| 1 | TIUSRVR ; SLC/JER - Server fns for record manipulation ; 01/22/2002 16:18
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;**19,28,69,89,122,109,112,186**;Jun 20, 1997
 | 
|---|
| 3 | SGET(TIUY,DA) ; Get fixed fields for record TIUDA
 | 
|---|
| 4 |  N DOC,LOC,PT,AUT,EDT,DTFMT,TIUPT,TIULST4,TIUREC,TIUR0,TIUR12,TIUR13
 | 
|---|
| 5 |  N SUBJ,TIUCNT
 | 
|---|
| 6 |  S TIUR0=$G(^TIU(8925,+DA,0)),TIUR12=$G(^TIU(8925,+DA,12))
 | 
|---|
| 7 |  S TIUR13=$G(^TIU(8925,+DA,13)),TIUPT=$G(^DPT(+$P(TIUR0,U,2),0))
 | 
|---|
| 8 |  S SUBJ=$G(^TIU(8925,+DA,17))
 | 
|---|
| 9 |  S DOC=$$PNAME^TIULC1(+TIUR0)
 | 
|---|
| 10 |  S LOC=$P($G(^SC(+$P(TIUR12,U,5),0)),U)
 | 
|---|
| 11 |  S PT=$$NAME^TIULS($P(TIUPT,U),"LAST, FIRST MI")
 | 
|---|
| 12 |  S TIULST4=$E($P(TIUPT,U,9),6,9)
 | 
|---|
| 13 |  S TIULST4="("_$E(PT)_TIULST4_")"
 | 
|---|
| 14 |  S AUT=$$SIGNAME^TIULS(+$P(TIUR12,U,2))
 | 
|---|
| 15 |  S DTFMT=$S($L(+TIUR13,".")=2:"MM/DD/YY HR:MIN",1:"MM/DD/YY")
 | 
|---|
| 16 |  S EDT=$$DATE^TIULS(+TIUR13,DTFMT)
 | 
|---|
| 17 |  S TIUCNT=+$G(TIUCNT)+1
 | 
|---|
| 18 |  S TIUY=DOC_U_EDT_U_PT_" "_TIULST4_U_AUT_U_LOC_U_SUBJ
 | 
|---|
| 19 |  Q
 | 
|---|
| 20 | TGET(TIUY,TIUDA,TIUJ,TIUDAD) ; Get each component
 | 
|---|
| 21 |  N TIUKID,TIUDADT,TIUI,TIUSEE S TIUI=0
 | 
|---|
| 22 |  S TIUSEE=$$CANDO^TIULP(TIUDA,"VIEW")
 | 
|---|
| 23 |  I '+TIUSEE D  Q
 | 
|---|
| 24 |  . S TIUY(1)="  "
 | 
|---|
| 25 |  . S TIUY(2)=$P(TIUSEE,"^ ",2),(TIUI,TIUJ)=2
 | 
|---|
| 26 |  F  S TIUI=$O(^TIU(8925,+TIUDA,"TEXT",TIUI)) Q:+TIUI'>0  D
 | 
|---|
| 27 |  . S TIUJ=+$G(TIUJ)+1
 | 
|---|
| 28 |  . S TIUY(TIUJ)=$G(^TIU(8925,+TIUDA,"TEXT",TIUI,0))
 | 
|---|
| 29 |  . ;S ^TMP("TIUTEXT",$J,TIUJ,0)=$G(^TIU(8925,+TIUDA,"TEXT",TIUI,0))
 | 
|---|
| 30 |  ; Iterate through children, and get their text fields
 | 
|---|
| 31 |  S TIUKID=0
 | 
|---|
| 32 |  F  S TIUKID=$O(^TIU(8925,"DAD",+TIUDA,TIUKID)) Q:+TIUKID'>0  D
 | 
|---|
| 33 |  . D TGET(.TIUY,TIUKID,.TIUJ,$G(TIUDAD,TIUDA))
 | 
|---|
| 34 |  ;I $D(^TMP("TIUTEXT",$J)) S TIUY="^TMP(""TIUTEXT"",$J)"
 | 
|---|
| 35 |  Q
 | 
|---|
| 36 | GET4EDIT(TIUY,TIUDA,DR) ; Get data in preparation for editing a record
 | 
|---|
| 37 |  N CANEDIT,ERR,D0,DIQ2,TIUARR,TIUF,TIUI
 | 
|---|
| 38 |  I +$D(^TIU(8925,TIUDA,"TEMP")),'+$$IFTEXT() D MERGTEXT(TIUDA)
 | 
|---|
| 39 |  K ^TMP("TIUEDIT",$J),^TMP("TIULQ",$J)
 | 
|---|
| 40 |  S TIUY=$NA(^TMP("TIUEDIT",$J)),TIUARR=$NA(^TMP("TIULQ",$J))
 | 
|---|
| 41 |  S CANEDIT=$$CANDO^TIULP(TIUDA,"EDIT RECORD")
 | 
|---|
| 42 |  I +CANEDIT'>0 S ^TMP("TIUEDIT",$J,0)="~"_$P(CANEDIT,U,2) Q
 | 
|---|
| 43 |  D EXTRACT^TIULQ(TIUDA,TIUARR,.ERR,$G(DR),"",1,"IE",1)
 | 
|---|
| 44 |  I $D(ERR) M TIUY=ERR Q
 | 
|---|
| 45 |  S TIUF=0
 | 
|---|
| 46 |  F  S TIUF=$O(@TIUARR@(TIUDA,TIUF)) Q:+TIUF'>0  D
 | 
|---|
| 47 |  . S ^TMP("TIUEDIT",$J,TIUF)=TIUF_U_@TIUARR@(TIUDA,TIUF,"I")_U_@TIUARR@(TIUDA,TIUF,"E")
 | 
|---|
| 48 |  S TIUI=0
 | 
|---|
| 49 |  F  S TIUI=$O(@TIUARR@(TIUDA,"TEXT",TIUI)) Q:+TIUI'>0  D
 | 
|---|
| 50 |  . S ^TMP("TIUEDIT",$J,"TEXT",TIUI)=$G(@TIUARR@(TIUDA,"TEXT",TIUI,0))
 | 
|---|
| 51 |  S ^TMP("TIUEDIT",$J,"TEXT",0)="$TXT",^TIU(8925,"ASAVE",DUZ,TIUDA)=""
 | 
|---|
| 52 |  K @TIUARR
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 | IFTEXT() ;
 | 
|---|
| 55 |  N TIUCHK
 | 
|---|
| 56 |  S TIUCHK=0 F  S TIUCHK=$O(^TIU(8925,TIUDA,"TEXT",TIUCHK)) Q:TIUCHK=""!TIUCHK>0
 | 
|---|
| 57 |  Q TIUCHK
 | 
|---|
| 58 | GETPREF(TIUY,USER) ; Get user's personal preferences
 | 
|---|
| 59 |  ; Call with TIUY (by ref)
 | 
|---|
| 60 |  ;           USER is pointer to file 200
 | 
|---|
| 61 |  ; Returns   TIUY = USER ^ DEFAULT LOCATION ^ REVIEW SCREEN SORT FIELD ^
 | 
|---|
| 62 |  ;               ==>REVIEW SCREEN SORT ORDER ^ DISPLAY MENUS ^ PATIENT
 | 
|---|
| 63 |  ;               ==>SELECTION PREFERENCE ^ ASK 'Save changes?' AFTER
 | 
|---|
| 64 |  ;               ==>EDIT ^ ASK SUBJECT FOR PROGRESS NOTES ^
 | 
|---|
| 65 |  S TIUY=$$PERSPRF^TIULE(USER)
 | 
|---|
| 66 |  Q
 | 
|---|
| 67 | GETALRT(TIUY,XQAID) ;  Retrieve DFN and document type for a TIU alert
 | 
|---|
| 68 |  N X,TIUDA,TIUDFN,ORTAB,TIUDAD,GMRCO
 | 
|---|
| 69 |  S TIUDA=$TR($P(XQAID,";",1),"ABCDEFGHIJKLMNOPQRSTUVWXYZ") ; Strip Text
 | 
|---|
| 70 |  I '+TIUDA!('$D(^TIU(8925,+TIUDA,0))) S TIUY="-1" Q
 | 
|---|
| 71 |  S X=$P($G(^TIU(8925,TIUDA,0)),U)
 | 
|---|
| 72 |  S TIUDFN=$P(^TIU(8925,TIUDA,0),U,2)
 | 
|---|
| 73 |  I $P(^TIU(8925,TIUDA,0),U,6)'="" D
 | 
|---|
| 74 |  . S TIUDAD=$P(^TIU(8925,TIUDA,0),U,6)
 | 
|---|
| 75 |  . S X=$P($G(^TIU(8925,TIUDAD,0)),U)
 | 
|---|
| 76 |  I ('+X)!('+TIUDFN) S TIUY="-1" Q
 | 
|---|
| 77 |  S ORTAB=903    ;DEFAULT TO PN
 | 
|---|
| 78 |  I +$$ISDS^TIULX(X) S ORTAB=901
 | 
|---|
| 79 |  I +$$ISA^TIULX(X,$$CLASS^TIUSROI("SURGICAL REPORTS")) S ORTAB=904
 | 
|---|
| 80 |  I +$$ISA^TIULX(X,$$CLASS^TIUCNSLT)!(+$$ISA^TIULX(X,+$$CLASS^TIUCP)) D
 | 
|---|
| 81 |  . S GMRCO=$P(^TIU(8925,$S(+$G(TIUDAD):TIUDAD,1:TIUDA),14),U,5)
 | 
|---|
| 82 |  . S ORTAB=902_";"_GMRCO
 | 
|---|
| 83 |  S TIUY=TIUDA_U_TIUDFN_U_ORTAB
 | 
|---|
| 84 |  Q
 | 
|---|
| 85 | GET1405(TIUY,TIUDA) ; Get the Request (field #1405) for a document
 | 
|---|
| 86 |  N TIUDAD,TIUTYP,TIU1405
 | 
|---|
| 87 |  I '+TIUDA!('$D(^TIU(8925,+TIUDA,0))) S TIUY="-1^TIU Document does not exist" Q
 | 
|---|
| 88 |  S TIUTYP=$P($G(^TIU(8925,TIUDA,0)),U)
 | 
|---|
| 89 |  I $P(^TIU(8925,TIUDA,0),U,6)'="" D
 | 
|---|
| 90 |  . S TIUDAD=$P(^TIU(8925,TIUDA,0),U,6)
 | 
|---|
| 91 |  . S TIUTYP=$P($G(^TIU(8925,TIUDAD,0)),U)
 | 
|---|
| 92 |  I '+TIUTYP S TIUY="-1^TIU parent document does not exist" Q
 | 
|---|
| 93 |  S TIU1405=$P($G(^TIU(8925,$S(+$G(TIUDAD):TIUDAD,1:TIUDA),14)),U,5)
 | 
|---|
| 94 |  I '+TIU1405 S TIUY="-1^No Request found for this document" Q
 | 
|---|
| 95 |  S TIUY=TIU1405
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 | MERGTEXT(TIUDA) ; Merge text from "TEMP"-node to "TEXT"-node
 | 
|---|
| 98 |  N TIU
 | 
|---|
| 99 |  D CLEANTXT(TIUDA)
 | 
|---|
| 100 |  D GETTIU^TIULD(.TIU,TIUDA)
 | 
|---|
| 101 |  D MERGTEXT^TIUEDI1(TIUDA,.TIU)
 | 
|---|
| 102 |  K ^TIU(8925,TIUDA,"TEMP")
 | 
|---|
| 103 |  Q
 | 
|---|
| 104 | CLEANTXT(TIUDA) ; Remove "TEXT"-nodes of document and components
 | 
|---|
| 105 |  N TIUI S TIUI=0
 | 
|---|
| 106 |  K ^TIU(8925,TIUDA,"TEXT")
 | 
|---|
| 107 |  F  S TIUI=$O(^TIU(8925,"DAD",TIUDA,TIUI)) Q:+TIUI'>0  D
 | 
|---|
| 108 |  . I +$$ISADDNDM^TIULC1(TIUI) Q
 | 
|---|
| 109 |  . K ^TIU(8925,TIUI,"TEXT")
 | 
|---|
| 110 |  Q
 | 
|---|