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

BJPNPRUT.m

Go to the documentation of this file.
  1. BJPNPRUT ;GDIT/HS/BEE-Prenatal Care Module Problem Handling Calls ; 08 May 2012 12:00 PM
  1. ;;2.0;PRENATAL CARE MODULE;;Feb 24, 2015;Build 63
  1. ;
  1. Q
  1. ;
  1. DEL(DATA,VIEN,PIPIEN,DCODE,DRSN) ;BJPN DELETE PIP PROBLEM
  1. ;
  1. ;Delete prenatal problem from PIP (and remove from V OB)
  1. ;
  1. NEW UID,II,%,NOW,PRUPD,ERROR,RSLT,DFN,PROC,DTTM,VFL,VPUPD
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNPRUT",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BJPNPRUT D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. S @DATA@(II)="T00010RESULT^T00150ERROR_MESSAGE"_$C(30)
  1. ;
  1. ;Input validation
  1. I $G(VIEN)="" S II=II+1,@DATA@(II)="-1^MISSING VISIT IEN"_$C(30) G XDEL
  1. I $G(PIPIEN)="" S II=II+1,@DATA@(II)="-1^MISSING PIPIEN"_$C(30) G XDEL
  1. I $$GET1^DIQ(90680.01,PIPIEN_",",".01","I")="" S II=II+1,@DATA@(II)="-1^INVALID PIPIEN"_$C(30) G XDEL
  1. I $$GET1^DIQ(90680.01,PIPIEN_",",2.01,"I")]"" S II=II+1,@DATA@(II)="-1^PROBLEM ALREADY DELETED"_$C(30) G XDEL
  1. S DCODE=$G(DCODE,""),DRSN=$G(DRSN,"")
  1. ;
  1. ;Check for latest note
  1. I $$GET1^DIQ(90680.01,PIPIEN_",",3,"E")]"" S II=II+1,@DATA@(II)="-1^PROBLEMS WITH NOTES CANNOT BE DELETED"_$C(30) G XDEL
  1. ;
  1. D NOW^%DTC S NOW=%
  1. ;
  1. ;Technical Note
  1. S VFL("TNOTE")="Problem Deleted From PIP"
  1. ;
  1. ;Retrieve DFN
  1. S DFN=$$GET1^DIQ(9000010,VIEN_",",".05","I") I DFN="" S II=II+1,@DATA@(II)="-1^INVALID VISIT"_$C(30) G XDEL
  1. ;
  1. ;Mark as deleted
  1. S RSLT="1"
  1. S PRUPD(90680.01,PIPIEN_",",2.01)=DUZ
  1. S PRUPD(90680.01,PIPIEN_",",2.02)=NOW
  1. S PRUPD(90680.01,PIPIEN_",",2.03)=DCODE
  1. S PRUPD(90680.01,PIPIEN_",",2.04)=DRSN
  1. ;
  1. I $D(PRUPD) D FILE^DIE("","PRUPD","ERROR")
  1. I $D(ERROR) S RSLT="-1^DELETE FAILED",II=II+1,@DATA@(II)=RSLT_$C(30) G XDEL
  1. ;
  1. ;Mark all V PRENATAL entries as deleted
  1. S DTTM="" F S DTTM=$O(^AUPNVOB("AE",DFN,PIPIEN,DTTM)) Q:DTTM="" D
  1. . NEW VPIEN
  1. . S VPIEN="" F S VPIEN=$O(^AUPNVOB("AE",DFN,PIPIEN,DTTM,VPIEN)) Q:VPIEN="" D
  1. .. ;
  1. .. ;Quit if already deleted
  1. .. Q:($$GET1^DIQ(9000010.43,VPIEN_",",2.01,"I")]"")
  1. .. ;
  1. .. Q:$D(PROC(VPIEN))
  1. .. S PROC(VPIEN)=""
  1. .. ;
  1. .. S VPUPD(9000010.43,VPIEN_",",2.01)=DUZ
  1. .. S VPUPD(9000010.43,VPIEN_",",2.02)=NOW
  1. .. S VPUPD(9000010.43,VPIEN_",",2.03)=DCODE
  1. .. S VPUPD(9000010.43,VPIEN_",",2.04)=DRSN
  1. .. I $D(VPUPD) D FILE^DIE("","VPUPD","ERROR")
  1. .. I $D(ERROR) S RSLT="-1^V OB DELETE FAILED",II=II+1,@DATA@(II)=RSLT_$C(30)
  1. ;
  1. ;Create final V OB visit entry to record the delete
  1. S VFL("DFN")=DFN
  1. S VFL("VIEN")=VIEN
  1. S VFL("PRIORITY")=$$GET1^DIQ(90680.01,PIPIEN_",",.06,"I") ;Priority
  1. S VFL("SCOPE")=$$GET1^DIQ(90680.01,PIPIEN_",",.07,"I") ;Scope
  1. S VFL("PTEXT")=$$GET1^DIQ(90680.01,PIPIEN_",",.05,"I") ;Provider Text
  1. S VFL("STATUS")=$$GET1^DIQ(90680.01,PIPIEN_",",.08,"I") ;Status
  1. S VFL("DEDD")=$$GET1^DIQ(90680.01,PIPIEN_",",.09,"I") ;Definitive EDD
  1. S VFL("OEDT")=NOW
  1. S VFL("OEBY")=DUZ
  1. S VFL("LMDT")=NOW
  1. S VFL("LMBY")=DUZ
  1. S VFL("DEBY")=DUZ
  1. S VFL("DEDT")=NOW
  1. S VFL("DECD")=DCODE
  1. S VFL("DERN")=DRSN
  1. S VFL("TNOTE",2.01)=""
  1. S VFL("TNOTE",2.02)=""
  1. I DCODE]"" S VFL("TNOTE",2.03)=""
  1. I DRSN]"" S VFL("TNOTE",2.04)=""
  1. S VFL("TNOTE",1218)=""
  1. S VFL("TNOTE",1219)=""
  1. ;
  1. ;Log V OB entry
  1. S RSLT=$$VFILE^BJPNVFIL(PIPIEN,.VFL) I +RSLT="-1" S II=II+1,@DATA@(II)="-1^V OB SAVE FAILED"
  1. ;
  1. S II=II+1,@DATA@(II)="1^"_$C(30)
  1. ;
  1. XDEL S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. UPD(DATA,VIEN,PIPIEN,PARMS) ;EP - BJPN UPDATE PROBLEM
  1. ;
  1. ;Input:
  1. ; VIEN - Visit IEN
  1. ; PIPIEN - PIP problem IEN
  1. ; PARMS - Format var1=value_$c(28)_var2=value...
  1. ; TRM - Snomed Term(Pointer to 90680.02)
  1. ; STS - Status (A/I)
  1. ; SCO - Scope (A/C)
  1. ; PRI - Priority (L/M/H)
  1. ; PTX - Provider Text
  1. ; EDD - Definitive EDD (Date)
  1. ; NOTE - New note
  1. ;
  1. NEW UID,II,NOW,%,BJPNUP,EDD,LMBY,LMDT,PRI,SCO,STS,PTX,SNWCT,SNWTR1,SNWTR2
  1. NEW BQ,NOTE,VFL,TRM,FND
  1. ;
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNPRUT",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BJPNPRUT D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. ;Re-assemble possible array
  1. S PARMS=$G(PARMS,"")
  1. I PARMS="" D
  1. . NEW LIST,BN
  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. ;Define variables
  1. S (TRM,STS,SCO,NOTE,PRI,PTX,EDD)=""
  1. ;
  1. F BQ=1:1:$L(PARMS,$C(28)) D
  1. . NEW PDATA,NAME,VALUE
  1. . S PDATA=$P(PARMS,$C(28),BQ) Q:PDATA=""
  1. . S NAME=$P(PDATA,"=",1),VALUE=$P(PDATA,"=",2,99)
  1. . I VALUE="" S VALUE="@"
  1. . S @NAME=VALUE
  1. ;
  1. S @DATA@(II)="T00005RESULT^I00010VFIEN^T00150ERROR_MESSAGE"_$C(30)
  1. ;
  1. ;Get current date/time
  1. D NOW^%DTC S NOW=%
  1. ;
  1. ;Technical Note
  1. S VFL("TNOTE")="Updated Problem Entry"
  1. ;
  1. ;Pull existing fields first
  1. ;
  1. ;Patient DFN/Visit IEN
  1. S DFN=$$GET1^DIQ(90680.01,PIPIEN_",",.02,"I")
  1. S VFL("DFN")=DFN
  1. S VFL("VIEN")=VIEN
  1. ;
  1. ;Handle updates
  1. ;
  1. ;Make sure code isn't assigned already
  1. I TRM]"" D I FND=1 S II=II+1,@DATA@(II)="-1^^PATIENT ALREADY HAS PROBLEM IN THEIR PIP"_$C(30) G XUPD
  1. . ;
  1. . NEW IEN
  1. . ;
  1. . ;Check for Duplicate Entry
  1. . S FND=0,IEN="" F S IEN=$O(^BJPNPL("AC",DFN,TRM,IEN)) Q:IEN="" D
  1. .. ;
  1. .. ;Skip Deletes
  1. .. Q:($$GET1^DIQ(90680.01,IEN_",","2.01","I")]"")
  1. .. S FND=1
  1. ;
  1. ;SNOMED Concept ID
  1. I TRM]"" S VFL("TNOTE",.12)="",SNWCT=$$GET1^DIQ(90680.02,TRM_",",.01,"I")
  1. I TRM="" S SNWCT=$$GET1^DIQ(90680.01,PIPIEN_",",.01,"I")
  1. S VFL("CONC")=SNWCT
  1. S BJPNUP(90680.01,PIPIEN_",",".01")=SNWCT
  1. ;
  1. ;SNOMED Term 1
  1. I TRM]"" S SNWTR1=TRM
  1. I TRM="" S SNWTR1=$$GET1^DIQ(90680.01,PIPIEN_",",.03,"I")
  1. S VFL("SNO")=SNWTR1
  1. S BJPNUP(90680.01,PIPIEN_",",".03")=SNWTR1
  1. ;
  1. ;SNOMED Term 2
  1. S SNWTR2=$$GET1^DIQ(90680.01,PIPIEN_",",.04,"I")
  1. ;
  1. ;Priority
  1. I PRI]"" S VFL("TNOTE",.06)=""
  1. I PRI="" S PRI=$$GET1^DIQ(90680.01,PIPIEN_",",.06,"I")
  1. S VFL("PRIORITY")=PRI
  1. S BJPNUP(90680.01,PIPIEN_",",.06)=PRI
  1. ;
  1. ;Scope
  1. I SCO]"" S VFL("TNOTE",.08)=""
  1. I SCO="" S SCO=$$GET1^DIQ(90680.01,PIPIEN_",",.07,"I")
  1. S VFL("SCOPE")=SCO
  1. S BJPNUP(90680.01,PIPIEN_",",.07)=SCO
  1. ;
  1. ;Status
  1. I STS]"" S VFL("TNOTE",.09)=""
  1. I STS="" S STS=$$GET1^DIQ(90680.01,PIPIEN_",",.08,"I")
  1. S VFL("STATUS")=STS
  1. S BJPNUP(90680.01,PIPIEN_",",.08)=STS
  1. ;
  1. ;Definitive EDD
  1. I EDD]"" S VFL("TNOTE",.1)=""
  1. I EDD]"" S EDD=$$DATE(EDD)
  1. I EDD="" S EDD=$$GET1^DIQ(90680.01,PIPIEN_",",.09,"I")
  1. S VFL("DEDD")=EDD
  1. S BJPNUP(90680.01,PIPIEN_",",.09)=EDD
  1. ;
  1. ;Last Modified Date
  1. S LMDT=NOW
  1. S VFL("LMDT")=LMDT
  1. S VFL("TNOTE",1218)=""
  1. S BJPNUP(90680.01,PIPIEN_",",1.03)=LMDT
  1. ;
  1. ;Last Modified By
  1. S LMBY=DUZ
  1. S VFL("LMBY")=LMBY
  1. S VFL("TNOTE",1219)=""
  1. S BJPNUP(90680.01,PIPIEN_",",1.04)=LMBY
  1. ;
  1. ;Provider text
  1. I PTX]"" D
  1. . NEW DIC,DLAYGO,X,Y
  1. . S VFL("TNOTE",.07)=""
  1. . S VFL("TNOTE",.11)=""
  1. . ;
  1. . ;Update the V POV file entry
  1. . D UPDPOV(VIEN,PIPIEN,PTX)
  1. . ;
  1. . S DIC(0)="LX",DIC="^AUTNPOV(",DLAYGO=9999999.27,X=PTX
  1. . D ^DIC
  1. . S PTX=+Y S:PTX=-1 PTX=""
  1. I PTX="" S PTX=$$GET1^DIQ(90680.01,PIPIEN_",",.05,"I")
  1. S BJPNUP(90680.01,PIPIEN_",",.05)=PTX
  1. S VFL("PTEXT")=PTX
  1. ;
  1. ;Current Note
  1. I $G(NOTE)]"" D
  1. . S VFL("TNOTE",2100)=""
  1. . S BJPNUP(90680.01,PIPIEN_",",3)=NOTE
  1. . S VFL("NOTE")=NOTE
  1. ;
  1. ;Update entry
  1. I $D(BJPNUP) D FILE^DIE("","BJPNUP","ERROR")
  1. I $D(ERROR) S II=II+1,@DATA@(II)="-1^^UPDATE PROBLEM PROCESS FAILED"_$C(30) G XUPD
  1. ;
  1. ;Log V OB entry
  1. S RSLT=$$VFILE^BJPNVFIL(PIPIEN,.VFL) I +RSLT="-1" S II=II+1,@DATA@(II)="-1^^V OB SAVE FAILED" G XUPD
  1. S II=II+1,@DATA@(II)="1^"_RSLT_"^"_$C(30)
  1. ;
  1. XUPD S II=II+1,@DATA@(II)=$C(31)
  1. ;
  1. Q
  1. ;
  1. ANOTE(VFIEN,NOTE,NEDT,NEBY) ;EP - Add note to V OB entry
  1. ;
  1. NEW DIC,DLAYGO,X,Y,VNIEN,DA
  1. ;
  1. I $G(VFIEN)="" Q "-1"
  1. I $G(NOTE)="" Q "-1"
  1. ;
  1. ;Pull Modified Date/By
  1. S:$G(NEDT)="" NEDT=$$GET1^DIQ(9000010.43,VFIEN_",",1218,"I")
  1. S:$G(NEBY)="" NEBY=$$GET1^DIQ(9000010.43,VFIEN_",",1219,"I")
  1. ;
  1. ;Add new entry
  1. S DIC="^AUPNVOB("_VFIEN_",21,",DA(1)=VFIEN
  1. S DLAYGO=9000010.431,DIC("P")=DLAYGO,DIC(0)="LOX"
  1. S X=NOTE
  1. S DIC("DR")=".02////"_NEDT_";.03////"_NEBY
  1. ;
  1. K DO,DD D FILE^DICN
  1. ;
  1. XANOTE Q +Y
  1. ;
  1. DATE(DATE) ;EP - Convert standard date/time to a FileMan date/time
  1. ;Input
  1. ; DATE - In a standard format
  1. ;Output
  1. ; -1 is if it couldn't convert to a FileMan date
  1. ; otherwise a standard FileMan date
  1. NEW %DT,X,Y,%
  1. I DATE[":" D
  1. . I DATE["/",$L(DATE," ")=3 S DATE=$P(DATE," ",1)_"@"_$P(DATE," ",2)_$P(DATE," ",3) Q
  1. . I $L(DATE," ")=3 S DATE=$P(DATE," ",1,2)_"@"_$P(DATE," ",3)
  1. . I $L(DATE," ")>3 S DATE=$P(DATE," ",1,3)_"@"_$P(DATE," ",4,99)
  1. S %DT="TS",X=DATE D ^%DT
  1. I Y=-1 S Y=""
  1. ;
  1. Q Y
  1. ;
  1. UFREQ(PRIEN,PLIEN) ;EP - UPDATE FREQUENCY FOR ENTRY
  1. ;
  1. ;Input:
  1. ; PRIEN - Problem Pointer
  1. ; PLIEN - Pick List Pointer (Master if Null)
  1. ;
  1. S PRIEN=$G(PRIEN) Q:PRIEN=""
  1. S PLIEN=$G(PLIEN)
  1. ;
  1. NEW IEN,DA,IENS,FREQ,ERROR,FRQUPD
  1. ;
  1. ;Handle Master_List Updates
  1. S:PLIEN="" PLIEN=$O(^BJPN(90680.03,"B","Master_List",""))
  1. Q:PLIEN=""
  1. ;
  1. ;Locate entry
  1. S IEN=$O(^BJPN(90680.03,PLIEN,1,"AC",PRIEN,"")) Q:IEN=""
  1. ;
  1. ;Pull existing frequency count
  1. S DA(1)=PLIEN,DA=IEN,IENS=$$IENS^DILF(.DA)
  1. S FREQ=+$$GET1^DIQ(90680.031,IENS,".03","I")
  1. S FREQ=FREQ+1
  1. ;
  1. ;Save updated frequency
  1. S FRQUPD(90680.031,IENS,".03")=FREQ
  1. D FILE^DIE("","FRQUPD","ERROR")
  1. ;
  1. Q
  1. ;
  1. ;
  1. CLSMBR(DATA,USER,CLASS) ;BJPN USR CLASS MEMBER
  1. ;
  1. ;Returns whether user is a member of the specified class
  1. ;
  1. ;Input:
  1. ; USER - The user to check (DUZ value)
  1. ; CLASS - The class to check in
  1. ;
  1. NEW UID,II,MBR,ERR
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNPRUT",UID))
  1. K @DATA
  1. I $G(DT)=""!($G(U)="") D DT^DICRW
  1. ;
  1. S II=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BJPNPRUT D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. S @DATA@(II)="I00001MEMBER^T00100ERROR_MESSAGE"_$C(30)
  1. ;
  1. ;Input validation
  1. I $G(USER)="" S II=II+1,@DATA@(II)="0^MISSING USER"_$C(30) G XCLS
  1. I $G(CLASS)="" S II=II+1,@DATA@(II)="0^MISSING USER CLASS"_$C(30) G XCLS
  1. ;
  1. ;Perform lookup
  1. S MBR=$$ISA(USER,CLASS,.ERR)
  1. ;
  1. I MBR=0 S II=II+1,@DATA@(II)="0^"_$G(ERR)_$C(30)
  1. E S II=II+1,@DATA@(II)=MBR_$C(30)
  1. ;
  1. XCLS S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. ISA(USER,CLASS,ERR) ; Boolean - Is USER a Member of CLASS?
  1. NEW USRY,USRI
  1. I $S(CLASS="USER":1,CLASS=+$O(^USR(8930,"B","USER",0)):1,1:0) S USRY=1 G ISAX
  1. I '+USER S USER=+$O(^VA(200,"B",USER,0))
  1. I +USER'>0 S ERR="INVALID USER" Q 0
  1. I '+CLASS S CLASS=+$O(^USR(8930,"B",CLASS,0))
  1. I +CLASS'>0 S ERR="INVALID USER CLASS" Q 0
  1. ; If USER is a member of CLASS return true
  1. S USRY=0
  1. I +$D(^USR(8930.3,"AUC",USER,CLASS)) D
  1. . N USRMDA
  1. . S USRMDA=0
  1. . F S USRMDA=+$O(^USR(8930.3,"AUC",USER,CLASS,USRMDA)) Q:((+USRMDA'>0)!(USRY)) D
  1. .. S USRY=+$$CURRENT(USRMDA)
  1. I USRY Q USRY
  1. ; Otherwise, check to see if user is a member of any subclass of CLASS
  1. S USRI=0
  1. F S USRI=$O(^USR(8930,+CLASS,1,USRI)) Q:+USRI'>0!+$G(USRY) D
  1. . NEW USRSUB S USRSUB=+$G(^USR(8930,+CLASS,1,USRI,0)) Q:+USRSUB'>0
  1. . S USRY=$$ISA(USER,USRSUB) ; Recurs to find members of subclass
  1. ISAX Q +$G(USRY)
  1. ;
  1. CURRENT(MEMBER) ; Boolean - Is Membership current?
  1. NEW USRIN,USROUT,USRY
  1. S USRIN=+$P($G(^USR(8930.3,+MEMBER,0)),U,3)
  1. S USROUT=+$P($G(^USR(8930.3,+MEMBER,0)),U,4)
  1. I USRIN'>DT,$S(USROUT>0&(USROUT'<DT):1,USROUT=0:1,1:0) S USRY=1
  1. E S USRY=0
  1. Q USRY
  1. ;
  1. UPDPOV(VIEN,PIPIEN,PTX) ;EP - Update the POV entry with the new provider text
  1. ;
  1. NEW PKIEN,ICIEN,ICD,POV,DFN,CD
  1. ;
  1. ;Pull Pick List entry
  1. S PKIEN=$$GET1^DIQ(90680.01,PIPIEN_",",.03,"I") I PKIEN="" Q
  1. ;
  1. ;Get the DFN
  1. S DFN=$$GET1^DIQ(9000010,VIEN,.05,"I") Q:DFN=""
  1. ;
  1. ;Locate the current POV entry (entries)
  1. ;
  1. ;Pull the ICD-9(s)
  1. S ICIEN=0 F S ICIEN=$O(^BJPN(90680.02,PKIEN,1,ICIEN)) Q:'ICIEN D
  1. . ;
  1. . NEW ICD9,ICDTP,DA,IENS
  1. . S DA(1)=PKIEN,DA=ICIEN,IENS=$$IENS^DILF(.DA)
  1. . S ICD9=$$GET1^DIQ(90680.21,IENS,.01,"I") Q:ICD9=""
  1. . S ICDTP=$$GET1^DIQ(90680.21,IENS,.02,"I") I ICDTP'=1 Q
  1. . S ICD(ICD9)=$$GET1^DIQ(90680.21,IENS,.01,"E")
  1. ;
  1. ;Check for .9999
  1. I '$D(ICD) D
  1. . NEW DIC,X,Y
  1. . S DIC="^ICD9(",DIC(0)="XMO",X=".9999" D ^DIC I +Y<0 Q
  1. . S ICD(+Y)=".9999"
  1. ;
  1. S POV=""
  1. S ICIEN="" F S ICIEN=$O(^AUPNVPOV("AD",VIEN,ICIEN)) Q:ICIEN="" D
  1. . NEW ICDCD,VPNARR,SNOMED
  1. . S VPNARR=$P($$GET1^DIQ(9000010.07,ICIEN_",",.04,"E"),"|")
  1. . S SNOMED=$$GET1^DIQ(90680.01,PIPIEN_",",.03,"I") Q:SNOMED=""
  1. . S SNOMED=$$GET1^DIQ(90680.02,SNOMED_",",.02,"E") Q:SNOMED=""
  1. . ;
  1. . ;Check for normal code match
  1. . S ICDCD=$$GET1^DIQ(9000010.07,ICIEN_",",.01,"I") Q:ICDCD=""
  1. . I $D(ICD(ICDCD)),SNOMED=VPNARR S POV=POV_$S(POV]"":";",1:"")_ICIEN Q
  1. . ;
  1. . Q
  1. ;
  1. ;Loop through current entries and replace the provider narrative
  1. F CD=1:1:$L(POV,";") I $P(POV,";",CD)]"" D
  1. . ;
  1. . NEW RET,N,INP
  1. . D GET^BGOVPOV(.RET,VIEN_U_$P(POV,";",CD))
  1. . S N=$G(@RET@(1))
  1. . S INP=$P(N,U)_U_$P(N,U,19)_U_"`"_$P(N,U,17)_U_DFN_U_$P($P(N,U,7),"| ")_"| "_PTX
  1. . S $P(INP,U,6)=$P(N,U,10) ;Stage
  1. . S $P(INP,U,7)=$$STC(9000010.07,.06,$P(N,U,8)) ;Modifier
  1. . S $P(INP,U,8)=$$STC(9000010.07,.07,$P(N,U,12)) ;Cause
  1. . S $P(INP,U,9)=$S($P(N,U,11)="REVISIT":2,1:1) ;Visit/Revisit
  1. . S $P(INP,U,10)=$P($P(N,U,14),"~",2) ;E-Code
  1. . S $P(INP,U,11)=$P($P(N,U,15),"~",2) ;Injury Place
  1. . S $P(INP,U,12)=$S($P(N,U,16)="PRIMARY":"P",1:"S") ;Primary/Secondary
  1. . S $P(INP,U,13)=$$FMTE^XLFDT($P(N,U,13),2) ;Injury Date
  1. . S $P(INP,U,14)=$$FMTE^XLFDT($P(N,U,9),2) ;Date of Onset
  1. . S $P(INP,U,16)=$P(N,U,21) ;Asthma
  1. . D SET^BGOVPOV(.RET,INP)
  1. ;
  1. Q
  1. ;
  1. STC(FIL,FLD,VAL) ; EP - Find a code for a set of code value
  1. ; Input Parameters
  1. ; FIL = FileMan File Number
  1. ; FLD = FileMan Field Number
  1. ; VAL = Value
  1. ;
  1. NEW VEDATA,VEQFL,VEVL,VALUE,I
  1. S VEDATA=$P(^DD(FIL,FLD,0),U,3),VEQFL=0
  1. ;
  1. F I=1:1 S VEVL=$P(VEDATA,";",I) Q:VEVL="" D Q:VEQFL
  1. . S VALUE=$P(VEVL,":",1) I VAL=$P(VEVL,":",2) S VEQFL=1
  1. ;
  1. Q VALUE