Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BQIRPL

BQIRPL.m

Go to the documentation of this file.
  1. BQIRPL ;PRXM/HC/DLS - Patient Problem List ; 15 Jun 2008 8:09 PM
  1. ;;2.4;ICARE MANAGEMENT SYSTEM;;Apr 01, 2015;Build 41
  1. ;
  1. Q
  1. ;
  1. EN(DATA,DFN,DRANGE,BQPIEN,DEL) ; EP - BQI PATIENT PROBLEM LIST
  1. ;Description
  1. ; Generates a Patient Problem List for a given DFN and Relative Date.
  1. ;
  1. ;Input
  1. ; DFN - Patient IEN
  1. ; DRANGE - Date to pull Patient Problem entered from (to the present).
  1. ; BQPIEN - Specific problem IEN
  1. ; DEL - "D" for deletes only, otherwise blank
  1. ;
  1. ;Output
  1. ; DATA - Name of global in which data is stored(^TMP("BQIRPL",UID))
  1. ;
  1. N UID,X,BQII,DA,IENS,BQIUPDT,LOC,BQAPID,BQID,BQIEN,SDATA
  1. N BQPRB,BQPRID,BQDX,BQST,BQONSET,BQNARR,BQNOTEF,BQCLS,NLOC
  1. N BQNDE0,BQCNT,BQDL,BQNOTE,BQNDX,BQPRBDT,BQPRV,BQSTN,BQIUSUP
  1. N BQICLAS,BQNIEN,HBQNARR,BQITCDT,BQITEPR
  1. ;
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQIRPL",UID)),SDATA=$NA(^TMP("BQISPL",UID))
  1. K @DATA,@SDATA
  1. ;
  1. S BQII=0
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQIRPL D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. S BQPIEN=$G(BQPIEN,""),DFN=$G(DFN,""),DRANGE=$G(DRANGE,""),DEL=$G(DEL,"")
  1. ;
  1. D HDR
  1. ;
  1. I DRANGE'="" S DRANGE=$$DATE^BQIUL1($G(DRANGE))
  1. ;
  1. I BQPIEN="",DFN'="",'$D(^AUPNPROB("AC",DFN)) G DONE
  1. ;
  1. I BQPIEN'="" D GETDATA(BQPIEN) G DONE
  1. ;
  1. F S BQPIEN=$O(^AUPNPROB("AC",DFN,BQPIEN)) Q:BQPIEN="" D GETDATA(BQPIEN)
  1. ;
  1. DONE ;
  1. S BQST=""
  1. F S BQST=$O(@SDATA@(BQST)) Q:BQST="" D
  1. . S BQID=""
  1. . F S BQID=$O(@SDATA@(BQST,BQID)) Q:BQID="" D
  1. .. S BQIEN=""
  1. .. F S BQIEN=$O(@SDATA@(BQST,BQID,BQIEN)) Q:BQIEN="" D
  1. ... S BQII=BQII+1
  1. ... S @DATA@(BQII)=BQIEN_U_@SDATA@(BQST,BQID,BQIEN)_$C(30)
  1. S BQII=BQII+1,@DATA@(BQII)=$C(31)
  1. K @SDATA
  1. Q
  1. ;
  1. GETDATA(BQPIEN) ;EP
  1. ;
  1. S DA=BQPIEN
  1. S IENS=$$IENS^DILF(.DA)
  1. S BQPRBDT=$$GET1^DIQ(9000011,IENS,".08","I")
  1. I DRANGE'="",BQPRBDT<DRANGE Q
  1. S BQPRBDT=$$FMTE^BQIUL1(BQPRBDT)
  1. ;
  1. S BQCLS=$$GET1^DIQ(9000011,IENS,.04,"I")_$C(28)_$$GET1^DIQ(9000011,IENS,.04,"E")
  1. S BQNDE0=$G(^AUPNPROB(BQPIEN,0))
  1. S LOC=$P(BQNDE0,U,6)
  1. S BQPRID=$S(LOC="":"??",$P($G(^AUTTLOC(LOC,0)),U,7)]"":$J($P(^AUTTLOC(LOC,0),U,7),4),1:"??")_$P(BQNDE0,U,7)
  1. S BQAPID=$S(LOC="":"??",$P($G(^AUTTLOC(LOC,0)),U,7)]"":$J($P(^AUTTLOC(LOC,0),U,7),4),1:"??")_$E("0000",1,4-$L($P(BQNDE0,U,7)))_$P(BQNDE0,U,7)
  1. I $$VERSION^XPDUTL("BCSV") S BQDX=$$ICD9^BQIUL3($P(BQNDE0,U),,2) ; Code set versioning
  1. I '$$VERSION^XPDUTL("BCSV") S BQDX=$P(^ICD9($P(BQNDE0,U),0),U)
  1. I BQDX'="",$$VERSION^XPDUTL("BCSV") S BQDX=$P(BQNDE0,U)_$C(28)_BQDX_" - "_$$ICD9^BQIUL3($P(BQNDE0,U),,4)
  1. I BQDX'="",'$$VERSION^XPDUTL("BCSV") S BQDX=$P(BQNDE0,U)_$C(28)_BQDX_" - "_$P(^ICD9($P(BQNDE0,U),0),U,3)
  1. ;
  1. S BQST=$$GET1^DIQ(9000011,BQPIEN_",",.12,"E")
  1. S BQSTN=$$GET1^DIQ(9000011,BQPIEN_",",.12,"I")
  1. S BQONSET=$$FMTE^BQIUL1($P($G(BQNDE0),U,13))
  1. S BQIUPDT=$$FMTE^BQIUL1($P($G(BQNDE0),U,3))
  1. S BQIUSUP=$$GET1^DIQ(9000011,BQPIEN_",",.14,"E")
  1. S (BQITCDT,BQITEPR)=""
  1. I DEL'="D" D
  1. . S BQITCDT=$$LASTPLU^APCLAPI6(DFN,,DT,"A")
  1. . ;
  1. . ;Pull time from entry if not defined (current API doesnt return time)
  1. . I $P($P(BQITCDT,U),".",2)="" D
  1. .. N IEN,DTM
  1. .. S IEN=$P(BQITCDT,U,6) Q:IEN=""
  1. .. S DTM=$$GET1^DIQ(9000010.54,IEN_",",1201,"I")
  1. .. S:DTM["." $P(BQITCDT,U)=DTM
  1. . ;
  1. . S BQITEPR=$P(BQITCDT,U,3)_$C(28)_$$GET1^DIQ(200,$P(BQITCDT,U,3)_",",.01,"E"),BQITCDT=$$FMTE^BQIUL1($P(BQITCDT,U))
  1. ;S:BQIUSUP="" BQIUSUP=$$GET1^DIQ(9000011,BQPIEN_",",1.03,"E")
  1. S BQICLAS=""
  1. I $G(^DD(9000011,.15,0))'="" D
  1. . S BQICLAS=$$GET1^DIQ(9000011,BQPIEN_",",.15,"I")_$C(28)_$$GET1^DIQ(9000011,BQPIEN_",",.15,"E")
  1. S BQNARR=$P($G(^AUTNPOV(+$P(BQNDE0,U,5),0)),U),BQNIEN=+$P(BQNDE0,U,5)
  1. S HBQNARR=BQNIEN
  1. I $$PATCH^XPDUTL("BJPC*2.0*10") S BQNARR=$$PNPROB^AUPNVUTL(BQNIEN)
  1. S BQNOTE=$$NOT(BQPIEN)
  1. S:LOC'="" LOC=LOC_$C(28)_$$GET1^DIQ(9999999.06,LOC_",",.01,"E")
  1. S BQST=$S(BQST="":"UNKNOWN",1:BQST)
  1. S @SDATA@(BQST,BQAPID,BQPIEN)=BQPRID_U_BQPRBDT_U_LOC_U_BQIUSUP_U_BQIUPDT_U_BQDX_U_BQCLS_U_$G(BQSTN)_$C(28)_BQST_U_BQONSET_U_HBQNARR_U_BQNARR_U_BQNOTE_U_BQICLAS_U_DFN_U_BQITCDT_U_BQITEPR
  1. Q
  1. ;
  1. HDR ;
  1. S @DATA@(BQII)="I00010PBLIEN^T00004PBLID^D00015APCDDTE^T00030APCDFAC^T00050BQIUSLM^D00015APCDDLM^T00007APCDDX^T00020APCDCLS^T00008APCDSTAT^D00015APCDDOO^T00080APCDN^"
  1. S @DATA@(BQII)=@DATA@(BQII)_"T00080PRVNAR^T01024PBLNOTES^T00030APCDCLAS^I00010DFN^D00030APCDTCDT^T00035APCDTEPR"_$C(30)
  1. Q
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. NEW Y,ERRDTM
  1. S Y=$$NOW^XLFDT() X ^DD("DD") S ERRDTM=Y
  1. S BMXSEC="Recording that an error occurred at "_ERRDTM
  1. I $D(BQII),$D(DATA) S BQII=BQII+1,@DATA@(BQII)=$C(31)
  1. Q
  1. ;
  1. UPD(DATA,DFN,TYPE,PBLIEN,PARMS) ;EP - BQI UPDATE PROBLEM LIST
  1. ;Input
  1. ; DFN - Patient internal entry number
  1. ; TYPE - 'A' to add or 'D' to delete
  1. ; PBLIEN - Problem IEN
  1. ; PARMS - Data values
  1. ;
  1. NEW UID,II,APCDCLS,APCDDLM,APCDDOO,APCDDTE,APCDDX,APCDFAC,APCDP,APCDSTAT
  1. NEW PBLPR,PBLNB,PBLID,PRVNAR,APCDCLAS,APCDEBU,APCDN,BN,BQ,BQIDATA,CHIEN
  1. NEW FIELD,FILE,FNME,VFIEN,RESULT,LIST,PDATA,NAME,VALUE,PFIEN,PTYP,MSG,ERROR
  1. NEW APCDP,VER,NM,QFL,BQIUPD,APCDTCDT,APCDTEPR,APCDEC1,APCDEC2,APCDEC3
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQIRPLU",UID))
  1. K @DATA
  1. ;
  1. S BQII=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQIRPL D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. S @DATA@(BQII)="I00010RESULT^T01024MSG^I00010PBLIEN"_$C(30)
  1. S VFIEN=$O(^BQI(90506.3,"B","Problem List",""))
  1. I VFIEN="" S BMXSEC="RPC Call Failed: Problem List Definition does not exist." Q
  1. S FILE=$P(^BQI(90506.3,VFIEN,0),U,2)
  1. ;
  1. S TYPE=$G(TYPE,""),PBLIEN=$G(PBLIEN,"")
  1. I TYPE="D" D G DNE
  1. . S RESULT=$$DELPROB^APCDALV2(PBLIEN),MSG=""
  1. . S RESULT=$S(RESULT="":1,1:RESULT)
  1. . I RESULT=-1 S MSG="Unable to delete Problem"
  1. . S RESULT=RESULT_U_MSG
  1. ;
  1. S PARMS=$G(PARMS,"")
  1. I PARMS="" D
  1. . S LIST="",BN=""
  1. . F S BN=$O(PARMS(BN)) Q:BN="" S LIST=LIST_PARMS(BN)
  1. . K PARMS
  1. . S PARMS=LIST
  1. . K LIST
  1. ;
  1. F BQ=1:1:$L(PARMS,$C(28)) D
  1. . N EXEC
  1. . S PDATA=$P(PARMS,$C(28),BQ) Q:PDATA=""
  1. . S NAME=$P(PDATA,"=",1),VALUE=$P(PDATA,"=",2,99) I VALUE="" Q
  1. . S PFIEN=$O(^BQI(90506.3,VFIEN,10,"AC",NAME,""))
  1. . S PTYP=$P($G(^BQI(90506.3,VFIEN,10,PFIEN,1)),U,1)
  1. . I PTYP="D"!(PTYP="A") S VALUE=$$DATE^BQIUL1(VALUE)
  1. . ;I PTYP="T" S VALUE=VALUE
  1. . I PTYP="C" D
  1. .. S CHIEN=$O(^BQI(90506.3,VFIEN,10,PFIEN,5,"B",VALUE,"")) I CHIEN="" Q
  1. .. S VALUE=$P(^BQI(90506.3,VFIEN,10,PFIEN,5,CHIEN,0),U,2)
  1. . S FIELD=$P($G(^BQI(90506.3,VFIEN,10,PFIEN,3)),U,1)
  1. . S EXEC=$G(^BQI(90506.3,VFIEN,10,PFIEN,7))
  1. . I EXEC'="" X EXEC Q
  1. . I TYPE="A" D
  1. .. S @NAME=VALUE,BQIDATA(NAME)=FIELD
  1. . I TYPE="E" S BQIUPD(FILE,PBLIEN_",",FIELD)=VALUE,@NAME=VALUE
  1. ;
  1. I TYPE="E" D
  1. . I $D(BQIUPD) S BQIUPD(FILE,PBLIEN_",",.14)=DUZ,BQIUPD(FILE,PBLIEN_",",.03)=DT
  1. . I $G(APCDCLAS)="",$P(^AUPNPROB(PBLIEN,0),U,15)'="" S BQIUPD(FILE,PBLIEN_",",.15)="@"
  1. . D FILE^DIE("","BQIUPD","ERROR")
  1. . K BQIUPD
  1. . S RESULT=1_U
  1. . I $D(ERROR)>0 S RESULT=-1_U_$G(ERROR("DIERR","1","TEXT","1"))
  1. ;
  1. I TYPE="A" D
  1. . S APCDP=DFN
  1. . S FNME="APC"
  1. . F S FNME=$O(^BQI(90506.3,VFIEN,10,"AC",FNME)) Q:FNME=""!($E(FNME,1,3)'="APC") D
  1. .. S @FNME=$G(@FNME,"")
  1. . ;
  1. . S VER=$$VERSION^XPDUTL("BJPC")
  1. . I VER<2.0 D
  1. .. I $$PATCH^XPDUTL("BJPC*1.0*1") S RESULT=$$ADDPROB^APCDALV2("`"_APCDDX,APCDP,APCDDLM,APCDCLS,PRVNAR,APCDFAC,APCDDTE,APCDSTAT,APCDDOO) Q
  1. .. I $$PATCH^XPDUTL("BJPC*1.0*2") S RESULT=$$ADDPROB^APCDALV2("`"_APCDDX,APCDP,APCDDLM,APCDCLS,"`"_APCDN,APCDFAC,APCDDTE,APCDSTAT,APCDDOO)
  1. . I VER>1.0 D
  1. .. I $G(APCDDOO)'="" S APCDDOO=$$FMTE^XLFDT(APCDDOO,1)
  1. .. S RESULT=$$ADDPROB^APCDALV2("`"_APCDDX,APCDP,APCDDLM,APCDCLS,"`"_APCDN,APCDFAC,APCDDTE,APCDSTAT,APCDDOO,APCDCLAS,$G(APCDEBU),$G(APCDEC1),$G(APCDEC2),$G(APCDEC3))
  1. . S MSG=$P($T(EMSG+RESULT),";;",2)
  1. . I RESULT D
  1. .. S IEN="",QFL=0
  1. .. F S IEN=$O(^AUPNPROB("AC",DFN,IEN),-1) Q:IEN=""!QFL D
  1. ... I $P(^AUPNPROB(IEN,0),U)=APCDDX,$P($G(^AUPNPROB(IEN,1)),U,3)=DUZ S PBLIEN=IEN,QFL=1
  1. .. I $G(PBLIEN)'="" D
  1. ... S BQIUPD(FILE,PBLIEN_",",.14)=DUZ
  1. ... I $G(APCDCLAS)="",$P(^AUPNPROB(PBLIEN,0),U,15)'="" S BQIUPD(FILE,PBLIEN_",",.15)="@"
  1. .. D FILE^DIE("","BQIUPD","ERROR")
  1. .. K BQIUPD
  1. . I 'RESULT D
  1. .. NEW IEN
  1. .. S IEN="",QFL=0
  1. .. F S IEN=$O(^AUPNPROB("AC",DFN,IEN),-1) Q:IEN=""!(QFL) D
  1. ... I $P(^AUPNPROB(IEN,0),U,1)'=APCDDX Q
  1. ... I $P($G(^AUPNPROB(IEN,1)),U,3)=DUZ S QFL=1,PBLIEN=IEN
  1. ... S NM="PBL"
  1. ... F S NM=$O(BQIDATA(NM)) Q:NM=""!($E(NM,1,3)'="PBL") D
  1. .... S FIELD=BQIDATA(NM),BQIUPD(FILE,PBLIEN_",",FIELD)=$G(@NM)
  1. ... S BQIUPD(FILE,PBLIEN_",",.14)=DUZ
  1. ... D FILE^DIE("","BQIUPD","ERROR")
  1. ... K BQIUPD
  1. . S RESULT=$S(RESULT>0:-1,1:1)_U_MSG
  1. ;
  1. ;Log V UPDATED/REVIEWED (Updated) entry
  1. DNE ; EP
  1. I +RESULT=1 D VUP("PROBLEM LIST UPDATED")
  1. ;
  1. S BQII=BQII+1,@DATA@(BQII)=RESULT_U_$G(PBLIEN)_$C(30)
  1. S BQII=BQII+1,@DATA@(BQII)=$C(31)
  1. Q
  1. ;
  1. VUP(VUP) ;EP - Log V UPDATED/REVIEWED entry for PROBLEM LIST UPDATED
  1. N %,BQIDFN,APCDTCLA,APCDLOC,APCDDATE,APCDOLOC,APCDTYPE,APCDCAT,APCDTOPR,APCDLOOK,EPARMS,VFILE,RESULT,MSG
  1. ;
  1. ;Define VFILE
  1. S BQIDFN=DFN S VFILE="BQIDFN="_BQIDFN
  1. S APCDLOC=DUZ(2) S VFILE=VFILE_$C(28)_"APCDLOC="_APCDLOC
  1. D NOW^%DTC S APCDDATE=$$FMTE^BQIUL1(%) S VFILE=VFILE_$C(28)_"APCDDATE="_APCDDATE
  1. S APCDOLOC="" S VFILE=VFILE_$C(28)_"APCDOLOC="
  1. S APCDTYPE="IHS" S VFILE=VFILE_$C(28)_"APCDTYPE="_APCDTYPE
  1. S APCDCAT="EVENT (HISTORICAL)" S VFILE=VFILE_$C(28)_"APCDCAT="_APCDCAT
  1. S APCDTOPR="" S VFILE=VFILE_$C(28)_"APCDTOPR="
  1. ;
  1. ;Define EPARMS
  1. S APCDTCLA=$O(^AUTTCRA("B",VUP,"")) Q:APCDTCLA=""
  1. S EPARMS="APCDTCLA="_APCDTCLA
  1. S APCDLOOK=APCDTCLA S EPARMS=EPARMS_$C(28)_"APCDLOOK="_APCDLOOK
  1. S APCDTCDT=$G(APCDTCDT,"") S EPARMS=EPARMS_$C(28)_"APCDTCDT="_APCDTCDT
  1. S APCDTEPR=$G(APCDTEPR,"") S EPARMS=EPARMS_$C(28)_"APCDTEPR="_APCDTEPR
  1. ;
  1. D EN^BQIVFADD("",BQIDFN,9000010.54,"Y",VFILE,EPARMS)
  1. ;
  1. Q
  1. ;
  1. EMSG ;
  1. ;;invalid dx, either not a valid ien, inactive code, E code
  1. ;;invalid patient dfn, either not a valid dfn or patient merged
  1. ;;invalid class code
  1. ;;error creating entry with FileMan
  1. ;;invalid date last modified
  1. ;;invalid provider narrative
  1. ;;invalid date entered
  1. ;;invalid facility
  1. ;invalid status
  1. ;invalid date of onset
  1. Q
  1. ;
  1. LOCK(DATA,DFN,PBIEN) ; EP - BQI LOCK PROBLEM
  1. ; Description
  1. ; Attempt to lock a problem record specified by PBIEN for
  1. ; exclusive editing access.
  1. ; This will only be used for edits and deletions of problem records.
  1. ; If successful, sets 'LAST LOCKED BY' with the current DUZ
  1. ; and returns a RESULT of 1 and the current DUZ.
  1. ; If unsuccessful, returns a RESULT of 0 and the DUZ from the
  1. ; 'LAST LOCKED BY' field.
  1. ; Input:
  1. ; DFN - Patient IEN
  1. ; PBIEN - Problem IEN to be locked
  1. ; Output:
  1. ; DATA = name of global (passed by reference) in which the data is stored
  1. ;
  1. ; RESULT = 1 if the lock succeeded
  1. ; = 0 if the lock failed
  1. ; = -1 if problem identified with file 90507 (shouldn't happen)
  1. ; USER = DUZ of the last user to successfully lock this panel
  1. ; or
  1. ; BMXSEC - if M error encountered
  1. ;
  1. N UID,X,BQII,MSG,VAL,RESULT
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQIPBLK",UID))
  1. K ^TMP("BQIPBLK",UID)
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQIRPL D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. ; Create header record
  1. S BQII=0,@DATA@(BQII)="I00010RESULT^T00080MESSAGE"_$C(30)
  1. ;
  1. S VAL=$$PBVAL(PBIEN,DFN),MSG=$P(VAL,U,2),VAL=$P(VAL,U)
  1. I VAL=-1 S RESULT=-1 D SET Q
  1. ;
  1. N USER
  1. ; Attempt lock and set RESULT accordingly
  1. S RESULT=1
  1. L +^AUPNPROB(PBIEN):1 E S RESULT=0
  1. ;
  1. ; If lock is unsuccessful, get 'LAST LOCKED BY' from the panel.
  1. I RESULT=0 D
  1. . ;S USER=$G(^XTMP("BQIPBLK",PTIEN))
  1. . S USER=$G(^XTMP("BQIPBLK",PBIEN))
  1. . S NAME=$$GET1^DIQ(200,USER,.01,"E")
  1. . I NAME="" S NAME="an unknown user"
  1. . S MSG="This record is currently being updated by "_NAME_"."
  1. ; If lock is successful, update 'LAST LOCKED BY' in ^XTMP.
  1. I RESULT=1 D
  1. . S ^XTMP("BQIPBLK",0)=$$FMADD^XLFDT(DT,1)_U_$$DT^XLFDT()_U_"Maintain locked by information for current locks of problem data"
  1. . S ^XTMP("BQIPBLK",PBIEN)=DUZ
  1. ;
  1. D SET
  1. Q
  1. ;
  1. UNLOCK(DATA,DFN,PBIEN) ; EP - BQI UNLOCK PROBLEM
  1. ; Description
  1. ; Unlock the problem record specified by PBIEN which was
  1. ; previously locked for exclusive editing access.
  1. ; If the entry in the 'LAST LOCKED BY' field is for this DUZ then
  1. ; delete it (so another user can't accidentally update it).
  1. ; Input:
  1. ; DFN - Patient IEN
  1. ; PBIEN - Problem IEN to be locked
  1. ; Output:
  1. ; DATA = name of global (passed by reference) in which the data is stored
  1. ; RESULT = 1 (unlock will always succeed)
  1. ; RESULT = -1 if problem identified with file 90507 (shouldn't happen)
  1. ; or
  1. ; BMXSEC - if M error encountered
  1. ;
  1. N UID,X,BQII,MSG,REGIEN,RDATA,VAL
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQIPBLK",UID))
  1. K ^TMP("BQIPBLK",UID)
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQIRPL D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. ; Create header record
  1. S BQII=0,@DATA@(BQII)="I00010RESULT^T00080MESSAGE"_$C(30)
  1. N RESULT,USER
  1. S VAL=$$PBVAL(PBIEN,DFN),MSG=$P(VAL,U,2),VAL=$P(VAL,U)
  1. I VAL=-1 S RESULT=-1 D SET Q
  1. ;
  1. ; Get 'LAST LOCKED BY'.
  1. S USER=$G(^XTMP("BQIPBLK",PBIEN))
  1. ;
  1. ; If 'LAST LOCKED BY' is this DUZ then delete the lock entry from ^XTMP.
  1. I USER=DUZ K ^XTMP("BQIPBLK",PBIEN)
  1. ;
  1. ; Unlock and set RESULT
  1. S RESULT=1
  1. L -^AUPNPROB(PBIEN)
  1. D SET
  1. Q
  1. ;
  1. SET ; Report results
  1. S BQII=BQII+1,@DATA@(BQII)=RESULT_"^"_MSG_$C(30)
  1. S BQII=BQII+1,@DATA@(BQII)=$C(31)
  1. Q
  1. ;
  1. PBVAL(IEN,DFN) ; Validate problem ien
  1. I IEN="" Q "-1^Invalid problem selected"
  1. I $$GET1^DIQ(9000011,IEN_",",.02,"I")'=DFN Q "-1^Invalid problem selected"
  1. Q 1
  1. ;
  1. NOT(BQPIEN) ;EP - Return notes
  1. S BQPRID=$$PID(BQPIEN)
  1. S BQNOTE=""
  1. S (BQCNT,BQDL)=0 F S BQDL=$O(^AUPNPROB(BQPIEN,11,BQDL)) Q:'BQDL D
  1. . S NLOC=$P(^AUPNPROB(BQPIEN,11,BQDL,0),U,1)
  1. . S BQNDX=0 F S BQNDX=$O(^AUPNPROB(BQPIEN,11,BQDL,11,BQNDX)) Q:'BQNDX D
  1. .. S BQCNT=BQCNT+1
  1. .. S BQNOTE=BQNOTE_BQPRID_$S($P($G(^AUTTLOC(NLOC,0)),U,7)]"":$P(^AUTTLOC(NLOC,0),U,7),1:"??")_$P($G(^AUPNPROB(BQPIEN,11,BQDL,11,BQNDX,0)),U)_" "
  1. .. S BQNOTE=BQNOTE_$S($P($G(^AUPNPROB(BQPIEN,11,BQDL,11,BQNDX,0)),U,5)]"":$$FMTE^BQIUL1($P(^AUPNPROB(BQPIEN,11,BQDL,11,BQNDX,0),U,5)),1:" (no date on file)")_" "
  1. .. S BQNOTE=BQNOTE_$P($G(^AUPNPROB(BQPIEN,11,BQDL,11,BQNDX,0)),U,3)_$C(13)_$C(10)
  1. Q BQNOTE
  1. ;
  1. PID(BQPIEN) ;EP - Return problem ID
  1. NEW BQNDE0,LOC,BQPRID
  1. S BQNDE0=$G(^AUPNPROB(BQPIEN,0))
  1. S LOC=$P(BQNDE0,U,6)
  1. S BQPRID=$S(LOC="":"??",$P($G(^AUTTLOC(LOC,0)),U,7)]"":$J($P(^AUTTLOC(LOC,0),U,7),4),1:"??")_$P(BQNDE0,U,7)
  1. S BQPRID=$$TRIM^BQIUL1(BQPRID," ")
  1. Q BQPRID