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

BJPNPUP.m

Go to the documentation of this file.
  1. BJPNPUP ;GDIT/HS/BEE-Prenatal Care Module Problem Handling Code ; 08 May 2012 12:00 PM
  1. ;;2.0;PRENATAL CARE MODULE;;Feb 24, 2015;Build 63
  1. ;
  1. Q
  1. ;
  1. ADD(DATA,VIEN,PRIEN,PARMS) ;EP - BJPN SET PRB FROM PIP
  1. ;
  1. ;Input:
  1. ; VIEN - Visit IEN
  1. ; PRIEN - Pointer to SNOMED TERMS (#90680.02)
  1. ; PARMS - Format var1=value_$c(28)_var2=value...
  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 - Free Text Note
  1. ;
  1. NEW %,UID,II,DFN,VFL,FND,IEN,NOW,CONC,SNO,SNOTRM,OEDT,OEBY,RSLT,ERROR
  1. NEW STS,SCO,PRI,PTX,EDD,NOTE,BQ,LMDT,LMBY,DIC,DLAYGO,X,Y,BJPNADD
  1. ;
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNPUP",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^BJPNPUP 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. 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. ;Define Header
  1. S @DATA@(II)="T00005RESULT^I00010PIPIEN^T00150ERROR_MESSAGE"_$C(30)
  1. ;
  1. ;Input validation
  1. I $G(VIEN)="" S II=II+1,@DATA@(II)="-1^^MISSING VISIT NUMBER"_$C(30) G XADD
  1. I $G(PRIEN)="" S II=II+1,@DATA@(II)="-1^^MISSING PROBLEM IEN"_$C(30) G XADD
  1. ;
  1. ;Get DFN
  1. S DFN=$$GET1^DIQ(9000010,VIEN_",",".05","I")
  1. S VFL("DFN")=DFN
  1. S VFL("VIEN")=VIEN
  1. ;
  1. ;Check for Duplicate Entry
  1. S FND=0,IEN="" F S IEN=$O(^BJPNPL("AC",DFN,PRIEN,IEN)) Q:IEN="" D
  1. . ;
  1. . ;Skip Deletes
  1. . Q:($$GET1^DIQ(90680.01,IEN_",","2.01","I")]"")
  1. . S FND=1
  1. I FND=1 S II=II+1,@DATA@(II)="-1^^PATIENT ALREADY HAS PROBLEM IN THEIR PIP"_$C(30) G XADD
  1. ;
  1. ;Get current date/time
  1. D NOW^%DTC S NOW=%
  1. ;
  1. ;Technical Note
  1. S VFL("TNOTE")="Added Problem To PIP"
  1. ;
  1. ;Pointer to 90680.02
  1. S CONC=$$GET1^DIQ(90680.02,PRIEN_",",".01","E")
  1. S VFL("CONC")=CONC
  1. ;
  1. ;Add new entry
  1. S DIC="^BJPNPL("
  1. S DLAYGO=90680.01,DIC("P")=DLAYGO,DIC(0)="LOX"
  1. S X=CONC
  1. K DO,DD D FILE^DICN
  1. I Y=-1 S II=II+1,@DATA@(II)="-1^^ADD PROBLEM PROCESS FAILED"_$C(30) G XADD
  1. S PIPIEN=+Y
  1. ;
  1. ;Save remaining fields
  1. S BJPNADD(90680.01,PIPIEN_",",.02)=DFN
  1. ;
  1. ;Snomed Term
  1. S SNO=PRIEN
  1. S VFL("TNOTE",".12")=""
  1. S VFL("SNO")=SNO
  1. S SNOTRM=$$GET1^DIQ(90680.02,PRIEN_",",".02","E")
  1. S BJPNADD(90680.01,PIPIEN_",",.03)=SNO
  1. ;
  1. ;Priority
  1. I '$D(PRI) S PRI=""
  1. S VFL("PRIORITY")=PRI
  1. I PRI]"" S VFL("TNOTE",.06)=""
  1. S BJPNADD(90680.01,PIPIEN_",",.06)=PRI
  1. ;
  1. ;Scope
  1. I '$D(SCO) S SCO="C"
  1. S VFL("SCOPE")=SCO
  1. S VFL("TNOTE",.08)=""
  1. S BJPNADD(90680.01,PIPIEN_",",.07)=SCO
  1. ;
  1. ;Status
  1. I '$D(STS) S STS="A"
  1. S VFL("STATUS")=STS
  1. S VFL("TNOTE",.09)=""
  1. S BJPNADD(90680.01,PIPIEN_",",.08)=STS
  1. ;
  1. ;Definitive EDD
  1. I '$D(EDD) S EDD=$$GET1^DIQ(9000017,DFN_",",1311,"I") I 1
  1. E I EDD]"" S EDD=$$DATE^BJPNPRUT(EDD)
  1. S VFL("DEDD")=EDD
  1. S VFL("TNOTE",.1)=""
  1. S BJPNADD(90680.01,PIPIEN_",",.09)=EDD
  1. ;
  1. ;Original Entered Date/Time
  1. S OEDT=NOW
  1. S VFL("OEDT")=OEDT
  1. S VFL("TNOTE",1216)=""
  1. S BJPNADD(90680.01,PIPIEN_",",1.01)=OEDT
  1. ;
  1. ;Original Entered By
  1. S OEBY=DUZ
  1. S VFL("OEBY")=OEBY
  1. S VFL("TNOTE",1217)=""
  1. S BJPNADD(90680.01,PIPIEN_",",1.02)=OEBY
  1. ;
  1. ;Last Modified Date
  1. S LMDT=NOW
  1. S VFL("LMDT")=LMDT
  1. S BJPNADD(90680.01,PIPIEN_",",1.03)=LMDT
  1. ;
  1. ;Last Modified By
  1. S LMBY=DUZ
  1. S VFL("LMBY")=LMBY
  1. S BJPNADD(90680.01,PIPIEN_",",1.04)=LMBY
  1. ;
  1. ;Provider text
  1. I $G(PTX)]"" D
  1. . NEW DIC,DLAYGO,X,Y
  1. . S VFL("TNOTE",.07)=""
  1. . S VFL("TNOTE",.11)=""
  1. . S DIC(0)="LX",DIC="^AUTNPOV(",DLAYGO=9999999.27,X=PTX
  1. . D ^DIC
  1. . S PTX=+Y S:PTX=-1 PTX=""
  1. . S BJPNADD(90680.01,PIPIEN_",",.05)=PTX
  1. . S VFL("PTEXT")=PTX
  1. ;
  1. ;Current Note
  1. I $G(NOTE)]"" D
  1. . S BJPNADD(90680.01,PIPIEN_",",3)=NOTE
  1. . S VFL("NOTE")=NOTE
  1. . S VFL("TNOTE",2100)=""
  1. ;
  1. ;Add fields
  1. I $D(BJPNADD) D FILE^DIE("","BJPNADD","ERROR")
  1. I $D(ERROR) S II=II+1,@DATA@(II)="-1^^ADD PROBLEM PROCESS FAILED"_$C(30) G XADD
  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. ;Update frequency - Master_List
  1. D UFREQ^BJPNPRUT(PRIEN,"")
  1. ;
  1. S II=II+1,@DATA@(II)="1^"_PIPIEN_"^"_$C(30)
  1. XADD S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. SNOTE(DATA,PIPIEN,VFIEN,NOTE) ;EP - BJPN SET PROBLEM NOTE
  1. ;
  1. ;This RPC sets a note into the current note field and updates the V OB entry
  1. ;
  1. ;Input:
  1. ; PIPIEN - Pointer to Prenatal Problem File
  1. ; VFIEN - Pointer to V OB entry
  1. ; NOTE - New note
  1. ;
  1. NEW UID,II,VNIEN,NUPD,ERROR
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNPRL",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^BJPNPUP D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. ;Define Header
  1. S @DATA@(II)="T00005RESULT^I00010NTIEN^T00150ERROR_MESSAGE"_$C(30)
  1. ;
  1. ;Input verification
  1. I $G(PIPIEN)="" S II=II+1,@DATA@(II)="-1^^PIPIEN is blank"_$C(30) G XSNOTE
  1. I $G(VFIEN)="" S II=II+1,@DATA@(II)="-1^^VFIEN is blank"_$C(30) G XSNOTE
  1. I $G(NOTE)="" S II=II+1,@DATA@(II)="-1^^NOTE is blank"_$C(30) G XSNOTE
  1. ;
  1. ;File note
  1. S VNIEN=$$ANOTE^BJPNPRUT(VFIEN,NOTE) I VNIEN=-1 Q "-1^^V OB NOTE SAVE FAILED"
  1. ;
  1. ;Auditing
  1. I $G(VNIEN)]"" D
  1. . NEW VFL
  1. . S VFL("TNOTE",2100)=VNIEN
  1. . D TNOTE^BJPNVFIL(VFIEN,.VFL)
  1. ;
  1. ;File current note
  1. S NUPD(90680.01,PIPIEN_",",3)=NOTE
  1. D FILE^DIE("","NUPD","ERROR")
  1. I $D(ERROR) Q "-1^^CURRENT NOTE FILE FAILED"
  1. ;
  1. S II=II+1,@DATA@(II)="1^"_VNIEN_"^"_$C(30)
  1. ;
  1. XSNOTE S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. DEL(DATA,VIEN,VFIEN,VNIEN,DCODE,DRSN) ;BJPN DELETE PRB NOTE
  1. ;
  1. ;Delete note from V OB file
  1. ;
  1. ;Input:
  1. ; VIEN - Visit IEN
  1. ; VFIEN - V OB IEN
  1. ; VNIEN - V OB Note IEN
  1. ; DCODE - Delete Code
  1. ; DRSN - Delete Reason
  1. ;
  1. NEW UID,II,%,NOW,NDEL,ERROR,RSLT,ENT,DFN,VFL
  1. ;
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNPUP",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^BJPNPUP 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(VFIEN)="" S II=II+1,@DATA@(II)="-1^MISSING VFIEN"_$C(30) G XDEL
  1. I $G(VNIEN)="" S II=II+1,@DATA@(II)="-1^MISSING VNIEN"_$C(30) G XDEL
  1. I $$GET1^DIQ(9000010.43,VFIEN_",",".01","I")="" S II=II+1,@DATA@(II)="-1^INVALID VFIEN"_$C(30) G XDEL
  1. S DCODE=$G(DCODE,""),DRSN=$G(DRSN,"")
  1. ;
  1. D NOW^%DTC
  1. S NOW=%
  1. ;
  1. ;Technical Note
  1. S VFL("TNOTE")="Problem Note Deleted"
  1. ;
  1. ;Mark the note as deleted
  1. S DA(1)=VFIEN,DA=VNIEN,IENS=$$IENS^DILF(.DA)
  1. S NDEL(9000010.431,IENS,2.01)=DUZ
  1. S NDEL(9000010.431,IENS,2.02)=NOW
  1. S NDEL(9000010.431,IENS,2.03)=DCODE
  1. S NDEL(9000010.431,IENS,2.04)=DRSN
  1. D FILE^DIE("","NDEL","ERROR")
  1. I $D(ERROR) S II=II+1,@DATA@(II)="-1^NOTE DELETION FAILED"_$C(30) G XDEL
  1. ;
  1. ;Update Current Note (in case latest was deleted)
  1. ;
  1. S PIPIEN=$$GET1^DIQ(9000010.43,VFIEN_",",.01,"I")
  1. S DFN=$$GET1^DIQ(90680.01,PIPIEN_",",.02,"I")
  1. ;
  1. ;Get latest note
  1. D NOTES^BJPNPRL("",DFN,PIPIEN,1)
  1. S RSLT=1,ENT=$G(^TMP("BJPNPRL",$J,1))
  1. D I RSLT=-1 G XDEL
  1. . NEW NOTE,PIPUPD,ERROR
  1. . I $TR(ENT,$C(31))]"" S NOTE=$P($P(ENT,U,9),$C(30))
  1. . E S NOTE="@"
  1. . S PIPUPD(90680.01,PIPIEN_",",3)=NOTE
  1. . D FILE^DIE("","PIPUPD","ERROR")
  1. . I $D(ERROR) S RSLT=-1,II=II+1,@DATA@(II)="-1^CURRENT NOTE UPDATE FAILED"_$C(30)
  1. ;
  1. ;Create V OB visit entry to record the note deletion
  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")=$$GET1^DIQ(90680.01,PIPIEN_",",1.01,"I") ;OEDT
  1. S VFL("OEBY")=$$GET1^DIQ(90680.01,PIPIEN_",",1.02,"I") ;OEBY
  1. S VFL("LMDT")=NOW
  1. S VFL("LMBY")=DUZ
  1. S VFL("TNOTE",1218)=""
  1. S VFL("TNOTE",1219)=""
  1. S VFL("TNOTE",2100)=VFIEN_":"_VNIEN_":D"
  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. POV(DATA,VIEN,PIPIEN) ;BJPN SET AS POV
  1. ;
  1. ;Set problem as POV for visit
  1. ;
  1. ;Input:
  1. ; VIEN - Visit IEN
  1. ; PIPIEN - Pointer to Prenatal Problem
  1. ;
  1. NEW UID,II,RET,PNARR,PTEXT,IN,PKIEN,DFN,PPRV,ICD,ICDINT,ICIEN,VFL,BJPNUPD,ERROR
  1. NEW NOW,%,CONC,SNO,LMDT,LMBY,PTEXT,RSLT
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BJPNPUP",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^BJPNPUP 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 VIEN"_$C(30) G XPOV
  1. I $G(PIPIEN)="" S II=II+1,@DATA@(II)="-1^MISSING PIPIEN"_$C(30) G XPOV
  1. ;
  1. ;Get current date/time
  1. D NOW^%DTC S NOW=%
  1. ;
  1. ;Get DFN
  1. S DFN=$$GET1^DIQ(9000010,VIEN_",",".05","I")
  1. S VFL("DFN")=DFN
  1. S VFL("VIEN")=VIEN
  1. ;
  1. ;Get pointer to SNOMED file
  1. S PKIEN=$$GET1^DIQ(90680.01,PIPIEN_",",.03,"I")
  1. ;
  1. ;Pointer to 90680.02
  1. S CONC=$$GET1^DIQ(90680.02,PKIEN_",",".01","E")
  1. S VFL("CONC")=CONC
  1. ;
  1. ;Snomed Term
  1. S SNO=PKIEN
  1. S VFL("SNO")=SNO
  1. ;
  1. ;Priority
  1. S VFL("PRIORITY")=$$GET1^DIQ(90680.01,PIPIEN_",",.06,"I")
  1. ;
  1. ;Scope
  1. S VFL("SCOPE")=$$GET1^DIQ(90680.01,PIPIEN_",",.07,"I")
  1. ;
  1. ;Status
  1. S VFL("STATUS")=$$GET1^DIQ(90680.01,PIPIEN_",",.08,"I")
  1. ;
  1. ;Definitive EDD
  1. S VFL("DEDD")=$$GET1^DIQ(90680.01,PIPIEN_",",.09,"I")
  1. ;
  1. ;Original Entered Date/Time
  1. ;S VFL("OEDT")=$$GET1^DIQ(90680.01,PIPIEN_",",1.01,"I")
  1. ;
  1. ;Original Entered By
  1. ;S VFL("OEBY")=$$GET1^DIQ(90680.01,PIPIEN_",",1.02,"I")
  1. ;
  1. ;Last Modified Date
  1. S LMDT=NOW
  1. S VFL("LMDT")=LMDT
  1. S VFL("TNOTE",1218)=""
  1. S BJPNUPD(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 BJPNUPD(90680.01,PIPIEN_",",1.04)=LMBY
  1. ;
  1. ;Get Primary Provider
  1. S PPRV=$$PPRV^BJPNPKL(VIEN)
  1. ;
  1. ;Set as POV
  1. S VFL("POV")=1
  1. S VFL("TNOTE",.05)=""
  1. ;
  1. ;Technical Note
  1. S VFL("TNOTE")="Set Problem As POV For Visit"
  1. ;
  1. ;Assemble ICD9 List
  1. S (ICD,ICDINT)=""
  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=ICD_$S(ICD]"":";",1:"")_ICD9
  1. ;
  1. ;Check for .9999
  1. I $TR(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
  1. ;
  1. ;Assemble Provider Narrative
  1. S PTEXT=$$GET1^DIQ(90680.01,PIPIEN_",",.05,"E")
  1. S PNARR=$$GET1^DIQ(90680.01,PIPIEN_",",.03,"I")
  1. S PNARR=$$GET1^DIQ(90680.02,PNARR_",",.02,"E")
  1. S PNARR=PNARR_"| "_PTEXT
  1. ;
  1. ;Loop through by ICD9 code
  1. I $TR(ICD,";")]"" D
  1. . NEW ICD9,IX
  1. . F IX=1:1:$L(ICD,";") S ICD9=$P(ICD,";",IX) I ICD9]"" D
  1. .. NEW IN
  1. .. ;
  1. .. ;
  1. .. S IN=U_VIEN_U_"`"_ICD9_U_DFN_U_PNARR
  1. .. S $P(IN,U,15)=PPRV
  1. .. ;
  1. .. ;File each POV
  1. .. D SET^BGOVPOV(.RET,IN)
  1. .. I +RET<0 S II=II+1,@DATA@(II)="-1^"_$P(RET,U,2)_$C(30) Q
  1. .. S II=II+1,@DATA@(II)="1^"_$C(30)
  1. ;
  1. ;Provider Text
  1. S PTEXT=$$GET1^DIQ(90680.01,PIPIEN_",",.05,"I")
  1. S VFL("PTEXT")=PTEXT
  1. ;
  1. ;Update fields
  1. I $D(BJPNUPD) D FILE^DIE("","BJPNUPD","ERROR")
  1. I $D(ERROR) S II=II+1,@DATA@(II)="-1^SET AS POV PROCESS FAILED"_$C(30) G XPOV
  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. XPOV S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. VPOV(VIEN,PIPIEN) ;EP - Return whether problem is POV for visit
  1. ;
  1. I $G(VIEN)="" Q ""
  1. I $G(PIPIEN)="" Q ""
  1. ;
  1. NEW POV,PKIEN,ICIEN,ICD
  1. ;
  1. ;Pull Pick List entry
  1. S PKIEN=$$GET1^DIQ(90680.01,PIPIEN_",",.03,"I") I PKIEN="" Q ""
  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 Q:POV="Y"
  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. . S ICDCD=$$GET1^DIQ(9000010.07,ICIEN_",",.01,"I") Q:ICDCD=""
  1. . I $D(ICD(ICDCD)),SNOMED=VPNARR S POV="Y" Q
  1. . Q
  1. ;
  1. Q POV
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. NEW Y,ERRDTM
  1. S Y=$$NOW^XLFDT() X ^DD("DD") S ERRDTM=Y
  1. S II=$G(II)+1,@DATA@(II)=$C(31)
  1. Q