[613] | 1 | RORUTL19 ;HCIOFO/SG - PATIENT DATA UTILITIES ; 1/29/07 9:53am
|
---|
| 2 | ;;1.5;CLINICAL CASE REGISTRIES;**2**;Feb 17, 2006;Build 6
|
---|
| 3 | ;
|
---|
| 4 | Q
|
---|
| 5 | ;
|
---|
| 6 | ;***** UPDATES THE LOCAL FIELDS
|
---|
| 7 | ;
|
---|
| 8 | ; IENS798 IENS of the registry record in the file #798
|
---|
| 9 | ;
|
---|
| 10 | ; .LFV Reference to a local variable that stores the
|
---|
| 11 | ; list of the local field values
|
---|
| 12 | ;
|
---|
| 13 | ; Return Values:
|
---|
| 14 | ; <0 Error code
|
---|
| 15 | ; 0 Ok. No changes in local fields.
|
---|
| 16 | ; >1 Ok. Local fields were modified.
|
---|
| 17 | ;
|
---|
| 18 | UPDLFV(IENS798,LFV) ;
|
---|
| 19 | N DA,DIK,FLDIEN,IENS,IR,LFCNT,LFIEN,MOD,RC,RORFDA,RORLST,RORMSG,SCR
|
---|
| 20 | S (MOD,RC)=0
|
---|
| 21 | ;
|
---|
| 22 | S (LFCNT,LFIEN)=0
|
---|
| 23 | F S LFIEN=$O(LFV(LFIEN)) Q:LFIEN'>0 D
|
---|
| 24 | . S LFCNT=LFCNT+1,IENS="?+"_LFCNT_","_IENS798
|
---|
| 25 | . S RORFDA(798.02,IENS,.01)=LFIEN
|
---|
| 26 | . S RORFDA(798.02,IENS,.02)=$P(LFV(LFIEN),U,5)
|
---|
| 27 | . S RORFDA(798.02,IENS,1)=$P(LFV(LFIEN),U,6)
|
---|
| 28 | ;--- Delete values of active fields that are not present in the
|
---|
| 29 | ; LFV array (deleted by the user). Values of inactive fields
|
---|
| 30 | ;--- are always left intact.
|
---|
| 31 | S SCR="I $$LFACTIVE^RORDD01(+$G(^(0)))"
|
---|
| 32 | S IENS=","_IENS798
|
---|
| 33 | D LIST^DIC(798.02,IENS,"@;.01I",,,,,"B",SCR,,"RORLST","RORMSG")
|
---|
| 34 | Q:$G(DIERR) $$DBS^RORERR("RORMSG",-9,,,798.02,IENS)
|
---|
| 35 | S DIK=$$ROOT^DILFD(798.02,IENS),DA(1)=+IENS798
|
---|
| 36 | S IR=""
|
---|
| 37 | F S IR=$O(RORLST("DILIST","ID",IR)) Q:IR="" D
|
---|
| 38 | . S FLDIEN=+RORLST("DILIST","ID",IR,.01)
|
---|
| 39 | . I '$D(LFV(FLDIEN)) S DA=+RORLST("DILIST",2,IR) D ^DIK S MOD=1
|
---|
| 40 | ;--- Store the data
|
---|
| 41 | I $D(RORFDA)>1 S MOD=1 D Q:RC<0 RC
|
---|
| 42 | . D UPDATE^DIE(,"RORFDA",,"RORMSG")
|
---|
| 43 | . S:$G(DIERR) RC=$$DBS^RORERR("RORMSG",-9,,,798.02,IENS798)
|
---|
| 44 | ;--- Success
|
---|
| 45 | Q MOD
|
---|