| 1 | TIUGEDI1 ; SLC/MAM - Enter New ID Document Code; 11/14/00 | 
|---|
| 2 | ;;1.0;TEXT INTEGRATION UTILITIES;**100**;Jun 20, 1997 | 
|---|
| 3 | ; New rtn for ID notes | 
|---|
| 4 | ; 3/2/00 moved GETRECG from TIUGEDIT to TIUGEDI1 | 
|---|
| 5 | GETRECG(DFN,TIU,TIUTYP,TIUDPRM,TIUNEW,EDIT,DADDA) ; Get record | 
|---|
| 6 | ;for ID entry. | 
|---|
| 7 | ; Returns DA: new docmt for user to continue entering, or | 
|---|
| 8 | ;existing docmt for user to edit, or just link, or addend. | 
|---|
| 9 | ; Requires array TIU.  References TIU("VSTR") = LOC;VDT;VTYP | 
|---|
| 10 | ;                                 TIU("VISIT") = Visit File IFN | 
|---|
| 11 | ;                                 TIU("LOC") | 
|---|
| 12 | ;                                 TIU("VLOC") | 
|---|
| 13 | ;                                 TIU("STOP") = stop code | 
|---|
| 14 | ; Requires array TIUTYP as in MAIN | 
|---|
| 15 | ; Passes back flags: | 
|---|
| 16 | ;   TIUNEW = 1 if good docmt is returned and it is new | 
|---|
| 17 | ;          = 0 if returned docmt already existed, timeout, etc | 
|---|
| 18 | ;     EDIT = 1 to open DA for edit (already know Person can edit) | 
|---|
| 19 | ;          = 0 to forget the edit | 
|---|
| 20 | ; Requires DADDA = IFN of docmt DA will be added to. | 
|---|
| 21 | N DA,MULTOK,TLFULL,DALKABLE,YESDOIT | 
|---|
| 22 | ;-- Get parameters for selected title, set TLFULL: -- | 
|---|
| 23 | ;        TLFULL: Already have max # entries on this title/pt/vst | 
|---|
| 24 | ;        MULTOK: More than ONE record/visit is OK | 
|---|
| 25 | D DOCPRM^TIULC1(TIUTYP,.TIUDPRM) S MULTOK=+$P($G(TIUDPRM(0)),U,10) | 
|---|
| 26 | S (TIUNEW,EDIT,TLFULL)=0 | 
|---|
| 27 | I 'MULTOK,$$EXIST^TIUEDI3(DFN,TIUTYP,TIU("VSTR")) S TLFULL=1 | 
|---|
| 28 | ; -- Find existing docmts for proposed title/patient/visit | 
|---|
| 29 | ;    which are linkable to DADDA: -- | 
|---|
| 30 | S DALKABLE=$$EXISTLNK(DFN,TIUTYP,TIU("VSTR"),DUZ,DADDA) | 
|---|
| 31 | ; -- If there are NO such existing docmts, | 
|---|
| 32 | ;    let user create new or tell user they can't, quit: -- | 
|---|
| 33 | I 'DALKABLE D  G GETX | 
|---|
| 34 | . I 'TLFULL S DA=$$CREATREC^TIUEDI3(DFN,.TIU,TIUTYP(1)),TIUNEW=1 Q | 
|---|
| 35 | . I TLFULL W !!,"There is already a ",$P(TIUTYP(1),U,3),".",!,"Only ONE record of this type per Visit is allowed...",! H 1 Q | 
|---|
| 36 | ; -- There IS such a docmt. -- | 
|---|
| 37 | ;    -- If docmt is already linked, and user can edit, | 
|---|
| 38 | ;       ask if user wants to create new note anyway: -- | 
|---|
| 39 | I $G(^TIU(8925,DALKABLE,21))=DADDA D  G GETX | 
|---|
| 40 | . W !,"The note already has an ID entry you can edit with that title and visit" | 
|---|
| 41 | . S YESDOIT=$$READ^TIUU("Y","Would you like to create a new entry anyway","NO") | 
|---|
| 42 | . I YESDOIT S DA=$$CREATREC^TIUEDI3(DFN,.TIU,TIUTYP(1)),TIUNEW=1 Q | 
|---|
| 43 | . W !,"Opening the existing entry" S DA=DALKABLE,EDIT=1 | 
|---|
| 44 | ;   -- If docmt is NOT already linked, create new, | 
|---|
| 45 | ;      or edit existing, or just link existing: -- | 
|---|
| 46 | W !,"You already have a document you can link for that patient, title, and visit." | 
|---|
| 47 | S YESDOIT=$$READ^TIUU("Y","Would you like to create a new entry anyway","NO") | 
|---|
| 48 | I $D(DUOUT)!$D(DTOUT)!$D(DIROUT) G GETX | 
|---|
| 49 | I YESDOIT S DA=$$CREATREC^TIUEDI3(DFN,.TIU,TIUTYP(1)) S TIUNEW=1 G GETX | 
|---|
| 50 | ;      -- If user says, no don't create, then try edit: -- | 
|---|
| 51 | N CANDO S CANDO=+$$CANDO^TIULP(DALKABLE,"EDIT RECORD") | 
|---|
| 52 | I CANDO W !,"Opening the existing entry" S DA=DALKABLE,EDIT=1 G GETX | 
|---|
| 53 | ;         -- If user can't edit, just return it for linking: -- | 
|---|
| 54 | I 'CANDO D  G GETX | 
|---|
| 55 | . S DA=DALKABLE | 
|---|
| 56 | GETX ; | 
|---|
| 57 | I TIUNEW,'$G(DA) W !,"No new entry created" H 2 S TIUNEW=0 | 
|---|
| 58 | Q +$G(DA) | 
|---|
| 59 | ; | 
|---|
| 60 | EXISTLNK(DFN,TIUTYP,TIUVSTR,PERSON,DADDA) ; If a docmt PERSON | 
|---|
| 61 | ;can LINK already EXISTS for the given patient, title, and visit, | 
|---|
| 62 | ;then return it. If there are more than one, get the smallest DA. | 
|---|
| 63 | ; Receives TIUVSTR = LOC;VDT;VTYP | 
|---|
| 64 | ; Needs TIUTYP = title DA | 
|---|
| 65 | ; Needs DADDA = IFN of docmt DA will be added to. | 
|---|
| 66 | N REQUEST,DA,TIUI,CANLINK,DALKDAD | 
|---|
| 67 | I '$G(PERSON) S PERSON=DUZ | 
|---|
| 68 | S (REQUEST,TIUI,DA)=0 | 
|---|
| 69 | LOOP ; -- Find existing docmt for given patient, title, & visit:-- | 
|---|
| 70 | F  S TIUI=+$O(^TIU(8925,"APTLD",DFN,TIUTYP,TIUVSTR,TIUI)) Q:'TIUI  D  Q:REQUEST  Q:DA | 
|---|
| 71 | . ; -- If TIUI is bad, reject it and keep looking: | 
|---|
| 72 | . I '$D(^TIU(8925,TIUI,0)) D  Q | 
|---|
| 73 | . . K ^TIU(8925,"APTLD",DFN,TIUTYP,TIUVSTR,TIUI) | 
|---|
| 74 | . ; -- If TIUI has requesting package (e.g. Consults), | 
|---|
| 75 | . ;    then reject it and quit looking: -- | 
|---|
| 76 | . I +$P($G(^TIU(8925,TIUI,14)),U,5) S REQUEST=1 Q  ; **22** | 
|---|
| 77 | . N CANLINK S CANLINK=+$$CANDO^TIULP(TIUI,"ATTACH TO ID NOTE",PERSON) | 
|---|
| 78 | . ; -- If person can't link it, keep looking: -- | 
|---|
| 79 | . I 'CANLINK Q | 
|---|
| 80 | . ; -- If already linked somewhere else, keep looking: -- | 
|---|
| 81 | . S DALKDAD=$G(^TIU(8925,TIUI,21)) | 
|---|
| 82 | . I DALKDAD,DALKDAD'=DADDA Q | 
|---|
| 83 | . ; -- If already linked to dad, but can't edit, keep looking: -- | 
|---|
| 84 | . I DALKDAD,'$$CANDO^TIULP(TIUI,"EDIT RECORD") Q | 
|---|
| 85 | . ; -- If already linked to dad & can edit, return it: -- | 
|---|
| 86 | . I DALKDAD S DA=TIUI Q | 
|---|
| 87 | . ; -- If not already linked, return it: -- | 
|---|
| 88 | . S DA=TIUI | 
|---|
| 89 | EXISTLX ; | 
|---|
| 90 | Q +$G(DA) | 
|---|